diff --git a/checkstyle.xml b/checkstyle.xml new file mode 100644 index 00000000000..8b36ec8b22b --- /dev/null +++ b/checkstyle.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + diff --git a/forge-ai/.project b/forge-ai/.project index aab7576b1b5..21815fac93b 100644 --- a/forge-ai/.project +++ b/forge-ai/.project @@ -3,6 +3,7 @@ forge-ai + forge-game diff --git a/forge-ai/pom.xml b/forge-ai/pom.xml index 9b9822707c2..999ab0f07ce 100644 --- a/forge-ai/pom.xml +++ b/forge-ai/pom.xml @@ -6,7 +6,7 @@ forge forge - 1.6.11-SNAPSHOT + 1.6.16-SNAPSHOT forge-ai @@ -29,4 +29,31 @@ 3.6.1 + + + + + org.apache.maven.plugins + maven-checkstyle-plugin + 3.0.0 + + + checkstyle-validation + validate + + ../checkstyle.xml + true + UTF-8 + true + true + true + + + check + + + + + + diff --git a/forge-ai/src/main/java/forge/ai/AiController.java b/forge-ai/src/main/java/forge/ai/AiController.java index 3eed6899f30..2c761044964 100644 --- a/forge-ai/src/main/java/forge/ai/AiController.java +++ b/forge-ai/src/main/java/forge/ai/AiController.java @@ -127,10 +127,12 @@ public class AiController { private List getPossibleETBCounters() { CardCollection all = new CardCollection(player.getCardsIn(ZoneType.Hand)); + CardCollectionView ccvPlayerLibrary = player.getCardsIn(ZoneType.Library); + all.addAll(player.getCardsIn(ZoneType.Exile)); all.addAll(player.getCardsIn(ZoneType.Graveyard)); - if (!player.getCardsIn(ZoneType.Library).isEmpty()) { - all.add(player.getCardsIn(ZoneType.Library).get(0)); + if (!ccvPlayerLibrary.isEmpty()) { + all.add(ccvPlayerLibrary.get(0)); } for (final Player opp : player.getOpponents()) { @@ -153,30 +155,34 @@ public class AiController { // look for cards on the battlefield that should prevent the AI from using that spellability private boolean checkCurseEffects(final SpellAbility sa) { - for (final Card c : game.getCardsIn(ZoneType.Battlefield)) { + CardCollectionView ccvGameBattlefield = game.getCardsIn(ZoneType.Battlefield); + for (final Card c : ccvGameBattlefield) { if (c.hasSVar("AICurseEffect")) { final String curse = c.getSVar("AICurseEffect"); - final Card host = sa.getHostCard(); if ("NonActive".equals(curse) && !player.equals(game.getPhaseHandler().getPlayerTurn())) { return true; - } else if ("DestroyCreature".equals(curse) && sa.isSpell() && host.isCreature() - && !sa.getHostCard().hasKeyword(Keyword.INDESTRUCTIBLE)) { - return true; - } else if ("CounterEnchantment".equals(curse) && sa.isSpell() && host.isEnchantment() - && CardFactoryUtil.isCounterable(host)) { - return true; - } else if ("ChaliceOfTheVoid".equals(curse) && sa.isSpell() && CardFactoryUtil.isCounterable(host) - && host.getCMC() == c.getCounters(CounterType.CHARGE)) { - return true; - } else if ("BazaarOfWonders".equals(curse) && sa.isSpell() && CardFactoryUtil.isCounterable(host)) { - for (Card card : game.getCardsIn(ZoneType.Battlefield)) { - if (!card.isToken() && card.getName().equals(host.getName())) { - return true; + } else { + final Card host = sa.getHostCard(); + if ("DestroyCreature".equals(curse) && sa.isSpell() && host.isCreature() + && !host.hasKeyword(Keyword.INDESTRUCTIBLE)) { + return true; + } else if ("CounterEnchantment".equals(curse) && sa.isSpell() && host.isEnchantment() + && CardFactoryUtil.isCounterable(host)) { + return true; + } else if ("ChaliceOfTheVoid".equals(curse) && sa.isSpell() && CardFactoryUtil.isCounterable(host) + && host.getCMC() == c.getCounters(CounterType.CHARGE)) { + return true; + } else if ("BazaarOfWonders".equals(curse) && sa.isSpell() && CardFactoryUtil.isCounterable(host)) { + String hostName = host.getName(); + for (Card card : ccvGameBattlefield) { + if (!card.isToken() && card.getName().equals(hostName)) { + return true; + } } - } - for (Card card : game.getCardsIn(ZoneType.Graveyard)) { - if (card.getName().equals(host.getName())) { - return true; + for (Card card : game.getCardsIn(ZoneType.Graveyard)) { + if (card.getName().equals(hostName)) { + return true; + } } } } @@ -186,13 +192,14 @@ public class AiController { } public boolean checkETBEffects(final Card card, final SpellAbility sa, final ApiType api) { - boolean rightapi = false; - if (card.isCreature() && game.getStaticEffects().getGlobalRuleChange(GlobalRuleChange.noCreatureETBTriggers)) { return api == null; } - + boolean rightapi = false; + String battlefield = ZoneType.Battlefield.toString(); + Player activatingPlayer = sa.getActivatingPlayer(); + // Trigger play improvements for (final Trigger tr : card.getTriggers()) { // These triggers all care for ETB effects @@ -202,21 +209,22 @@ public class AiController { continue; } - if (!params.get("Destination").equals(ZoneType.Battlefield.toString())) { + if (!params.get("Destination").equals(battlefield)) { continue; } if (params.containsKey("ValidCard")) { - if (!params.get("ValidCard").contains("Self")) { + String validCard = params.get("ValidCard"); + if (!validCard.contains("Self")) { continue; } - if (params.get("ValidCard").contains("notkicked")) { + if (validCard.contains("notkicked")) { if (sa.isKicked()) { continue; } - } else if (params.get("ValidCard").contains("kicked")) { - if (params.get("ValidCard").contains("kicked ")) { // want a specific kicker - String s = params.get("ValidCard").split("kicked ")[1]; + } else if (validCard.contains("kicked")) { + if (validCard.contains("kicked ")) { // want a specific kicker + String s = validCard.split("kicked ")[1]; if ("1".equals(s) && !sa.isOptionalCostPaid(OptionalCost.Kicker1)) continue; if ("2".equals(s) && !sa.isOptionalCostPaid(OptionalCost.Kicker2)) continue; } else if (!sa.isKicked()) { @@ -259,7 +267,7 @@ public class AiController { } if (sa != null) { - exSA.setActivatingPlayer(sa.getActivatingPlayer()); + exSA.setActivatingPlayer(activatingPlayer); } else { exSA.setActivatingPlayer(player); @@ -267,13 +275,11 @@ public class AiController { exSA.setTrigger(true); // for trigger test, need to ignore the conditions - if (exSA.getConditions() != null) { - SpellAbilityCondition cons = exSA.getConditions(); - if (cons.getIsPresent() != null) { - String pres = cons.getIsPresent(); - if ("Card.Self".equals(pres) || "Card.StrictlySelf".equals(pres)) { + SpellAbilityCondition cons = exSA.getConditions(); + if (cons != null) { + String pres = cons.getIsPresent(); + if (pres != null && pres.matches("Card\\.(Strictly)?Self")) { cons.setIsPresent(null); - } } } @@ -297,21 +303,22 @@ public class AiController { continue; } - if (!params.get("Destination").equals(ZoneType.Battlefield.toString())) { + if (!params.get("Destination").equals(battlefield)) { continue; } if (params.containsKey("ValidCard")) { - if (!params.get("ValidCard").contains("Self")) { + String validCard = params.get("ValidCard"); + if (!validCard.contains("Self")) { continue; } - if (params.get("ValidCard").contains("notkicked")) { + if (validCard.contains("notkicked")) { if (sa.isKicked()) { continue; } - } else if (params.get("ValidCard").contains("kicked")) { - if (params.get("ValidCard").contains("kicked ")) { // want a specific kicker - String s = params.get("ValidCard").split("kicked ")[1]; + } else if (validCard.contains("kicked")) { + if (validCard.contains("kicked ")) { // want a specific kicker + String s = validCard.split("kicked ")[1]; if ("1".equals(s) && !sa.isOptionalCostPaid(OptionalCost.Kicker1)) continue; if ("2".equals(s) && !sa.isOptionalCostPaid(OptionalCost.Kicker2)) continue; } else if (!sa.isKicked()) { // otherwise just any must be present @@ -327,7 +334,7 @@ public class AiController { if (exSA != null) { if (sa != null) { - exSA.setActivatingPlayer(sa.getActivatingPlayer()); + exSA.setActivatingPlayer(activatingPlayer); } else { exSA.setActivatingPlayer(player); @@ -375,8 +382,9 @@ public class AiController { if (landsInPlay.size() + landList.size() > max) { for (Card c : allCards) { for (SpellAbility sa : c.getSpellAbilities()) { - if (sa.getPayCosts() != null) { - for (CostPart part : sa.getPayCosts().getCostParts()) { + Cost payCosts = sa.getPayCosts(); + if (payCosts != null) { + for (CostPart part : payCosts.getCostParts()) { if (part instanceof CostDiscard) { return null; } @@ -390,10 +398,11 @@ public class AiController { landList = CardLists.filter(landList, new Predicate() { @Override public boolean apply(final Card c) { + CardCollectionView battlefield = player.getCardsIn(ZoneType.Battlefield); canPlaySpellBasic(c, null); - if (c.getType().isLegendary() && !c.getName().equals("Flagstones of Trokair")) { - final CardCollectionView list = player.getCardsIn(ZoneType.Battlefield); - if (Iterables.any(list, CardPredicates.nameEquals(c.getName()))) { + String name = c.getName(); + if (c.getType().isLegendary() && !name.equals("Flagstones of Trokair")) { + if (Iterables.any(battlefield, CardPredicates.nameEquals(name))) { return false; } } @@ -402,7 +411,7 @@ public class AiController { final FCollectionView spellAbilities = c.getSpellAbilities(); final CardCollectionView hand = player.getCardsIn(ZoneType.Hand); - CardCollection lands = new CardCollection(player.getCardsIn(ZoneType.Battlefield)); + CardCollection lands = new CardCollection(battlefield); lands.addAll(hand); lands = CardLists.filter(lands, CardPredicates.Presets.LANDS); int maxCmcInHand = Aggregates.max(hand, CardPredicates.Accessors.fnGetCmc); @@ -565,14 +574,17 @@ public class AiController { Collections.sort(all, saComparator); // put best spells first for (final SpellAbility sa : ComputerUtilAbility.getOriginalAndAltCostAbilities(all, player)) { - if (sa.getApi() == ApiType.Counter || sa.getApi() == exceptSA) { + ApiType saApi = sa.getApi(); + + if (saApi == ApiType.Counter || saApi == exceptSA) { continue; } sa.setActivatingPlayer(player); // TODO: this currently only works as a limited prediction of permanent spells. // Ideally this should cast canPlaySa to determine that the AI is truly able/willing to cast a spell, // but that is currently difficult to implement due to various side effects leading to stack overflow. - if (!ComputerUtil.castPermanentInMain1(player, sa) && sa.getHostCard() != null && !sa.getHostCard().isLand() && ComputerUtilCost.canPayCost(sa, player)) { + Card host = sa.getHostCard(); + if (!ComputerUtil.castPermanentInMain1(player, sa) && host != null && !host.isLand() && ComputerUtilCost.canPayCost(sa, player)) { if (sa instanceof SpellPermanent) { return sa; } @@ -800,8 +812,7 @@ public class AiController { } // use Surge and Prowl costs when able to - if (sa.isSurged() || - (sa.getRestrictions().getProwlTypes() != null && !sa.getRestrictions().getProwlTypes().isEmpty())) { + if (sa.isSurged() || sa.isProwl()) { p += 9; } // sort planeswalker abilities with most costly first diff --git a/forge-ai/src/main/java/forge/ai/AiCostDecision.java b/forge-ai/src/main/java/forge/ai/AiCostDecision.java index c30d9bf25fa..fe715d5ab2f 100644 --- a/forge-ai/src/main/java/forge/ai/AiCostDecision.java +++ b/forge-ai/src/main/java/forge/ai/AiCostDecision.java @@ -514,19 +514,26 @@ public class AiCostDecision extends CostDecisionMakerBase { Integer c = cost.convertAmount(); if (c == null) { if (ability.getSVar(cost.getAmount()).equals("XChoice")) { - if ("SacToReduceCost".equals(ability.getParam("AILogic"))) { + String logic = ability.getParamOrDefault("AILogic", ""); + if ("SacToReduceCost".equals(logic)) { // e.g. Torgaar, Famine Incarnate // TODO: currently returns an empty list, so the AI doesn't sacrifice anything. Trying to make // the AI decide on creatures to sac makes the AI sacrifice them, but the cost is not reduced and the // AI pays the full mana cost anyway (despite sacrificing creatures). return PaymentDecision.card(new CardCollection()); + } else if (!logic.isEmpty() && !logic.equals("Never")) { + // If at least some other AI logic is specified, assume that the AI for that API knows how + // to define ChosenX and thus honor that value. + // Cards which have no special logic for this yet but which do work in a simple/suboptimal way + // are currently conventionally flagged with AILogic$ DoSacrifice. + c = AbilityUtils.calculateAmount(source, source.getSVar("ChosenX"), null); + } else { + // Other cards are assumed to be flagged RemAIDeck for now + return null; } - - // Other cards are assumed to be flagged RemAIDeck for now - return null; + } else { + c = AbilityUtils.calculateAmount(source, cost.getAmount(), ability); } - - c = AbilityUtils.calculateAmount(source, cost.getAmount(), ability); } final AiController aic = ((PlayerControllerAi)player.getController()).getAi(); CardCollectionView list = aic.chooseSacrificeType(cost.getType(), ability, c); diff --git a/forge-ai/src/main/java/forge/ai/AiProps.java b/forge-ai/src/main/java/forge/ai/AiProps.java index 2f7857a5690..cb3f8d99007 100644 --- a/forge-ai/src/main/java/forge/ai/AiProps.java +++ b/forge-ai/src/main/java/forge/ai/AiProps.java @@ -93,6 +93,7 @@ public enum AiProps { /** */ SCRY_EVALTHR_CMC_THRESHOLD ("3"), /** */ SCRY_IMMEDIATELY_UNCASTABLE_TO_BOTTOM ("false"), /** */ SCRY_IMMEDIATELY_UNCASTABLE_CMC_DIFF ("1"), /** */ + SURVEIL_NUM_CARDS_IN_LIBRARY_TO_BAIL ("10"), /** */ COMBAT_ASSAULT_ATTACK_EVASION_PREDICTION ("true"), /** */ COMBAT_ATTRITION_ATTACK_EVASION_PREDICTION ("true"), /** */ CONSERVATIVE_ENERGY_PAYMENT_ONLY_IN_COMBAT ("true"), /** */ diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtil.java b/forge-ai/src/main/java/forge/ai/ComputerUtil.java index cc829bbeb43..8afe5ad86fb 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtil.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtil.java @@ -95,7 +95,9 @@ public class ComputerUtil { sa.setHostCard(game.getAction().moveToStack(source, sa)); } - sa.resetPaidHash(); + if (sa.isCopied()) { + sa.resetPaidHash(); + } if (sa.getApi() == ApiType.Charm && !sa.isWrapper()) { CharmEffect.makeChoices(sa); @@ -260,6 +262,10 @@ public class ComputerUtil { sa.setLastStateBattlefield(game.getLastStateBattlefield()); sa.setLastStateGraveyard(game.getLastStateGraveyard()); newSA.setHostCard(game.getAction().moveToStack(source, sa)); + + if (newSA.getApi() == ApiType.Charm && !newSA.isWrapper()) { + CharmEffect.makeChoices(newSA); + } } final CostPayment pay = new CostPayment(newSA.getPayCosts(), newSA); @@ -2629,8 +2635,8 @@ public class ComputerUtil { // and also on Chronozoa || (type == CounterType.TIME && (!c.isInPlay() || "Chronozoa".equals(c.getName()))) || type == CounterType.GOLD || type == CounterType.MUSIC || type == CounterType.PUPA - || type == CounterType.PARALYZATION || type == CounterType.SHELL || type == CounterType.SLEEP - || type == CounterType.SLEIGHT || type == CounterType.WAGE; + || type == CounterType.PARALYZATION || type == CounterType.SHELL || type == CounterType.SLEEP + || type == CounterType.SLUMBER || type == CounterType.SLEIGHT || type == CounterType.WAGE; } // this countertypes has no effect diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java b/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java index 1e05d7a55e4..115568e4ce4 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java @@ -1573,10 +1573,10 @@ public class ComputerUtilCard { pumped.addNewPT(c.getCurrentPower(), c.getCurrentToughness(), timestamp); pumped.addTempPowerBoost(c.getTempPowerBoost() + power + berserkPower); pumped.addTempToughnessBoost(c.getTempToughnessBoost() + toughness); - pumped.addChangedCardKeywords(kws, new ArrayList(), false, timestamp); + pumped.addChangedCardKeywords(kws, null, false, false, timestamp); Set types = c.getCounters().keySet(); for(CounterType ct : types) { - pumped.addCounterFireNoEvents(ct, c.getCounters(ct), c, true); + pumped.addCounterFireNoEvents(ct, c.getCounters(ct), ai, true); } //Copies tap-state and extra keywords (auras, equipment, etc.) if (c.isTapped()) { @@ -1596,7 +1596,7 @@ public class ComputerUtilCard { } } final long timestamp2 = c.getGame().getNextTimestamp(); //is this necessary or can the timestamp be re-used? - pumped.addChangedCardKeywordsInternal(toCopy, Lists.newArrayList(), false, timestamp2, true); + pumped.addChangedCardKeywordsInternal(toCopy, null, false, false, timestamp2, true); ComputerUtilCard.applyStaticContPT(ai.getGame(), pumped, new CardCollection(c)); return pumped; } @@ -1625,6 +1625,9 @@ public class ComputerUtilCard { if (!params.containsKey("Affected")) { continue; } + if (!params.containsKey("AddPower") && !params.containsKey("AddToughness")) { + continue; + } final String valid = params.get("Affected"); if (!vCard.isValid(valid, c.getController(), c, null)) { continue; diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java b/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java index 8f0198af2c0..f27d3dc6e77 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java @@ -975,12 +975,20 @@ public class ComputerUtilCombat { final Map trigParams = trigger.getMapParams(); final Card source = trigger.getHostCard(); - if (!ComputerUtilCombat.combatTriggerWillTrigger(attacker, blocker, trigger, null) - || !trigParams.containsKey("Execute")) { + if (!ComputerUtilCombat.combatTriggerWillTrigger(attacker, blocker, trigger, null)) { continue; } - final String ability = source.getSVar(trigParams.get("Execute")); - final Map abilityParams = AbilityFactory.getMapParams(ability); + + Map abilityParams = null; + if (trigger.getOverridingAbility() != null) { + abilityParams = trigger.getOverridingAbility().getMapParams(); + } else if (trigParams.containsKey("Execute")) { + final String ability = source.getSVar(trigParams.get("Execute")); + abilityParams = AbilityFactory.getMapParams(ability); + } else { + continue; + } + if (abilityParams.containsKey("AB") && !abilityParams.get("AB").equals("Pump")) { continue; } @@ -1098,12 +1106,20 @@ public class ComputerUtilCombat { final Map trigParams = trigger.getMapParams(); final Card source = trigger.getHostCard(); - if (!ComputerUtilCombat.combatTriggerWillTrigger(attacker, blocker, trigger, null) - || !trigParams.containsKey("Execute")) { + if (!ComputerUtilCombat.combatTriggerWillTrigger(attacker, blocker, trigger, null)) { continue; } - final String ability = source.getSVar(trigParams.get("Execute")); - final Map abilityParams = AbilityFactory.getMapParams(ability); + + Map abilityParams = null; + if (trigger.getOverridingAbility() != null) { + abilityParams = trigger.getOverridingAbility().getMapParams(); + } else if (trigParams.containsKey("Execute")) { + final String ability = source.getSVar(trigParams.get("Execute")); + abilityParams = AbilityFactory.getMapParams(ability); + } else { + continue; + } + String abType = ""; if (abilityParams.containsKey("AB")) { abType = abilityParams.get("AB"); @@ -1311,12 +1327,20 @@ public class ComputerUtilCombat { final Map trigParams = trigger.getMapParams(); final Card source = trigger.getHostCard(); - if (!ComputerUtilCombat.combatTriggerWillTrigger(attacker, blocker, trigger, combat) - || !trigParams.containsKey("Execute")) { + if (!ComputerUtilCombat.combatTriggerWillTrigger(attacker, blocker, trigger, combat)) { continue; } - final String ability = source.getSVar(trigParams.get("Execute")); - final Map abilityParams = AbilityFactory.getMapParams(ability); + + Map abilityParams = null; + if (trigger.getOverridingAbility() != null) { + abilityParams = trigger.getOverridingAbility().getMapParams(); + } else if (trigParams.containsKey("Execute")) { + final String ability = source.getSVar(trigParams.get("Execute")); + abilityParams = AbilityFactory.getMapParams(ability); + } else { + continue; + } + if (abilityParams.containsKey("ValidTgts") || abilityParams.containsKey("Tgt")) { continue; // targeted pumping not supported } @@ -1330,7 +1354,14 @@ public class ComputerUtilCombat { } if (abilityParams.containsKey("Cost")) { - final SpellAbility sa = AbilityFactory.getAbility(ability, source); + SpellAbility sa = null; + if (trigger.getOverridingAbility() != null) { + sa = trigger.getOverridingAbility(); + } else { + final String ability = source.getSVar(trigParams.get("Execute")); + sa = AbilityFactory.getAbility(ability, source); + } + sa.setActivatingPlayer(source.getController()); if (!CostPayment.canPayAdditionalCosts(sa.getPayCosts(), sa)) { continue; @@ -1514,12 +1545,20 @@ public class ComputerUtilCombat { final Map trigParams = trigger.getMapParams(); final Card source = trigger.getHostCard(); - if (!ComputerUtilCombat.combatTriggerWillTrigger(attacker, blocker, trigger, combat) - || !trigParams.containsKey("Execute")) { + if (!ComputerUtilCombat.combatTriggerWillTrigger(attacker, blocker, trigger, combat)) { continue; } - final String ability = source.getSVar(trigParams.get("Execute")); - final Map abilityParams = AbilityFactory.getMapParams(ability); + + Map abilityParams = null; + if (trigger.getOverridingAbility() != null) { + abilityParams = trigger.getOverridingAbility().getMapParams(); + } else if (trigParams.containsKey("Execute")) { + final String ability = source.getSVar(trigParams.get("Execute")); + abilityParams = AbilityFactory.getMapParams(ability); + } else { + continue; + } + if (abilityParams.containsKey("ValidTgts") || abilityParams.containsKey("Tgt")) { continue; // targeted pumping not supported } @@ -1552,7 +1591,14 @@ public class ComputerUtilCombat { } if (abilityParams.containsKey("Cost")) { - final SpellAbility sa = AbilityFactory.getAbility(ability, source); + SpellAbility sa = null; + if (trigger.getOverridingAbility() != null) { + sa = trigger.getOverridingAbility(); + } else { + final String ability = source.getSVar(trigParams.get("Execute")); + sa = AbilityFactory.getAbility(ability, source); + } + sa.setActivatingPlayer(source.getController()); if (!CostPayment.canPayAdditionalCosts(sa.getPayCosts(), sa)) { continue; diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtilCost.java b/forge-ai/src/main/java/forge/ai/ComputerUtilCost.java index 77ff6849087..e9a0ccee4e8 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtilCost.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtilCost.java @@ -5,7 +5,6 @@ import com.google.common.collect.Lists; import com.google.common.collect.Sets; import forge.ai.ability.AnimateAi; import forge.card.ColorSet; -import forge.game.GameActionUtil; import forge.game.ability.AbilityUtils; import forge.game.card.Card; import forge.game.card.CardCollection; diff --git a/forge-ai/src/main/java/forge/ai/GameState.java b/forge-ai/src/main/java/forge/ai/GameState.java index 9ca52ea5324..10fee4a5847 100644 --- a/forge-ai/src/main/java/forge/ai/GameState.java +++ b/forge-ai/src/main/java/forge/ai/GameState.java @@ -6,6 +6,7 @@ import com.google.common.collect.Maps; import com.google.common.collect.Multimap; import forge.StaticData; import forge.card.CardStateName; +import forge.card.MagicColor; import forge.game.Game; import forge.game.GameEntity; import forge.game.ability.AbilityFactory; @@ -19,8 +20,10 @@ import forge.game.combat.Combat; import forge.game.combat.CombatUtil; import forge.game.event.GameEventAttackersDeclared; import forge.game.event.GameEventCombatChanged; +import forge.game.mana.ManaPool; import forge.game.phase.PhaseType; import forge.game.player.Player; +import forge.game.spellability.AbilityManaPart; import forge.game.spellability.SpellAbility; import forge.game.trigger.TriggerType; import forge.game.zone.PlayerZone; @@ -52,6 +55,14 @@ public abstract class GameState { private int computerLife = -1; private String humanCounters = ""; private String computerCounters = ""; + private String humanManaPool = ""; + private String computerManaPool = ""; + private String humanPersistentMana = ""; + private String computerPersistentMana = ""; + private int humanLandsPlayed = 0; + private int computerLandsPlayed = 0; + private int humanLandsPlayedLastTurn = 0; + private int computerLandsPlayedLastTurn = 0; private boolean puzzleCreatorState = false; @@ -60,6 +71,7 @@ public abstract class GameState { private final Map idToCard = new HashMap<>(); private final Map cardToAttachId = new HashMap<>(); + private final Map cardToEnchantPlayerId = new HashMap<>(); private final Map markedDamage = new HashMap<>(); private final Map> cardToChosenClrs = new HashMap<>(); private final Map cardToChosenType = new HashMap<>(); @@ -79,6 +91,8 @@ public abstract class GameState { private String tChangePlayer = "NONE"; private String tChangePhase = "NONE"; + private String tAdvancePhase = "NONE"; + private String precastHuman = null; private String precastAI = null; @@ -112,6 +126,10 @@ public abstract class GameState { sb.append(TextUtil.concatNoSpace("humanlife=", String.valueOf(humanLife), "\n")); sb.append(TextUtil.concatNoSpace("ailife=", String.valueOf(computerLife), "\n")); + sb.append(TextUtil.concatNoSpace("humanlandsplayed=", String.valueOf(humanLandsPlayed), "\n")); + sb.append(TextUtil.concatNoSpace("ailandsplayed=", String.valueOf(computerLandsPlayed), "\n")); + sb.append(TextUtil.concatNoSpace("humanlandsplayedlastturn=", String.valueOf(humanLandsPlayedLastTurn), "\n")); + sb.append(TextUtil.concatNoSpace("ailandsplayedlastturn=", String.valueOf(computerLandsPlayedLastTurn), "\n")); sb.append(TextUtil.concatNoSpace("turn=", String.valueOf(turn), "\n")); if (!humanCounters.isEmpty()) { @@ -121,6 +139,13 @@ public abstract class GameState { sb.append(TextUtil.concatNoSpace("aicounters=", computerCounters, "\n")); } + if (!humanManaPool.isEmpty()) { + sb.append(TextUtil.concatNoSpace("humanmanapool=", humanManaPool, "\n")); + } + if (!computerManaPool.isEmpty()) { + sb.append(TextUtil.concatNoSpace("aimanapool=", humanManaPool, "\n")); + } + sb.append(TextUtil.concatNoSpace("activeplayer=", tChangePlayer, "\n")); sb.append(TextUtil.concatNoSpace("activephase=", tChangePhase, "\n")); appendCards(humanCardTexts, "human", sb); @@ -147,8 +172,14 @@ public abstract class GameState { } humanLife = human.getLife(); computerLife = ai.getLife(); + humanLandsPlayed = human.getLandsPlayedThisTurn(); + computerLandsPlayed = ai.getLandsPlayedThisTurn(); + humanLandsPlayedLastTurn = human.getLandsPlayedLastTurn(); + computerLandsPlayedLastTurn = ai.getLandsPlayedLastTurn(); humanCounters = countersToString(human.getCounters()); computerCounters = countersToString(ai.getCounters()); + humanManaPool = processManaPool(human.getManaPool()); + computerManaPool = processManaPool(ai.getManaPool()); tChangePlayer = game.getPhaseHandler().getPlayerTurn() == ai ? "ai" : "human"; tChangePhase = game.getPhaseHandler().getPhase().toString(); @@ -266,6 +297,12 @@ public abstract class GameState { } else if (c.getEnchantingCard() != null) { newText.append("|Attaching:").append(c.getEnchantingCard().getId()); } + if (c.getEnchantingPlayer() != null) { + // TODO: improve this for game states with more than two players + newText.append("|EnchantingPlayer:"); + Player p = c.getEnchantingPlayer(); + newText.append(p.getController().isAI() ? "AI" : "HUMAN"); + } if (c.getDamage() > 0) { newText.append("|Damage:").append(c.getDamage()); @@ -388,8 +425,10 @@ public abstract class GameState { if (categoryName.startsWith("active")) { if (categoryName.endsWith("player")) tChangePlayer = categoryValue.trim().toLowerCase(); - if (categoryName.endsWith("phase")) + else if (categoryName.endsWith("phase")) tChangePhase = categoryValue.trim().toUpperCase(); + else if (categoryName.endsWith("phaseadvance")) + tAdvancePhase = categoryValue.trim().toUpperCase(); return; } @@ -413,6 +452,20 @@ public abstract class GameState { computerCounters = categoryValue; } + else if (categoryName.endsWith("landsplayed")) { + if (isHuman) + humanLandsPlayed = Integer.parseInt(categoryValue); + else + computerLandsPlayed = Integer.parseInt(categoryValue); + } + + else if (categoryName.endsWith("landsplayedlastturn")) { + if (isHuman) + humanLandsPlayedLastTurn = Integer.parseInt(categoryValue); + else + computerLandsPlayedLastTurn = Integer.parseInt(categoryValue); + } + else if (categoryName.endsWith("play") || categoryName.endsWith("battlefield")) { if (isHuman) humanCardTexts.put(ZoneType.Battlefield, categoryValue); @@ -465,6 +518,21 @@ public abstract class GameState { else precastAI = categoryValue; } + + else if (categoryName.endsWith("manapool")) { + if (isHuman) + humanManaPool = categoryValue; + else + computerManaPool = categoryValue; + } + + else if (categoryName.endsWith("persistentmana")) { + if (isHuman) + humanPersistentMana = categoryValue; + else + computerPersistentMana = categoryValue; + } + else { System.out.println("Unknown key: " + categoryName); } @@ -485,6 +553,7 @@ public abstract class GameState { idToCard.clear(); cardToAttachId.clear(); + cardToEnchantPlayerId.clear(); cardToRememberedId.clear(); cardToExiledWithId.clear(); markedDamage.clear(); @@ -493,12 +562,18 @@ public abstract class GameState { cardToScript.clear(); cardAttackMap.clear(); - Player newPlayerTurn = tChangePlayer.equals("human") ? human : tChangePlayer.equals("ai") ? ai : null; - PhaseType newPhase = tChangePhase.equals("none") ? null : PhaseType.smartValueOf(tChangePhase); + Player newPlayerTurn = tChangePlayer.equalsIgnoreCase("human") ? human : tChangePlayer.equalsIgnoreCase("ai") ? ai : null; + PhaseType newPhase = tChangePhase.equalsIgnoreCase("none") ? null : PhaseType.smartValueOf(tChangePhase); + PhaseType advPhase = tAdvancePhase.equalsIgnoreCase("none") ? null : PhaseType.smartValueOf(tAdvancePhase); // Set stack to resolving so things won't trigger/effects be checked right away game.getStack().setResolving(true); + updateManaPool(human, humanManaPool, true, false); + updateManaPool(ai, computerManaPool, true, false); + updateManaPool(human, humanPersistentMana, false, true); + updateManaPool(ai, computerPersistentMana, false, true); + if (!humanCounters.isEmpty()) { applyCountersToGameEntity(human, humanCounters); } @@ -510,8 +585,8 @@ public abstract class GameState { game.getTriggerHandler().setSuppressAllTriggers(true); - setupPlayerState(humanLife, humanCardTexts, human); - setupPlayerState(computerLife, aiCardTexts, ai); + setupPlayerState(humanLife, humanCardTexts, human, humanLandsPlayed, humanLandsPlayedLastTurn); + setupPlayerState(computerLife, aiCardTexts, ai, computerLandsPlayed, computerLandsPlayedLastTurn); handleCardAttachments(); handleChosenEntities(); @@ -531,9 +606,50 @@ public abstract class GameState { game.getStack().setResolving(false); + // Advance to a certain phase, activating all triggered abilities + if (advPhase != null) { + game.getPhaseHandler().devAdvanceToPhase(advPhase); + } + game.getAction().checkStateEffects(true); //ensure state based effects and triggers are updated } + private String processManaPool(ManaPool manaPool) { + String mana = ""; + for (final byte c : MagicColor.WUBRGC) { + int amount = manaPool.getAmountOfColor(c); + for (int i = 0; i < amount; i++) { + mana += MagicColor.toShortString(c) + " "; + } + } + + return mana.trim(); + } + + private void updateManaPool(Player p, String manaDef, boolean clearPool, boolean persistent) { + Game game = p.getGame(); + if (clearPool) { + p.getManaPool().clearPool(false); + } + + if (!manaDef.isEmpty()) { + final Card dummy = new Card(-777777, game); + dummy.setOwner(p); + final Map produced = Maps.newHashMap(); + produced.put("Produced", manaDef); + if (persistent) { + produced.put("PersistentMana", "True"); + } + final AbilityManaPart abMana = new AbilityManaPart(dummy, produced); + game.getAction().invoke(new Runnable() { + @Override + public void run() { + abMana.produceMana(null); + } + }); + } + } + private void handleCombat(final Game game, final Player attackingPlayer, final Player defendingPlayer, final boolean toDeclareBlockers) { // First we need to ensure that all attackers are declared in the Declare Attackers step, // even if proceeding straight to Declare Blockers @@ -864,6 +980,16 @@ public abstract class GameState { attacher.fortifyCard(attachedTo); } } + + // Enchant players by ID + for(Entry entry : cardToEnchantPlayerId.entrySet()) { + // TODO: improve this for game states with more than two players + Card attacher = entry.getKey(); + Game game = attacher.getGame(); + Player attachedTo = entry.getValue() == TARGET_AI ? game.getPlayers().get(1) : game.getPlayers().get(0); + + attacher.enchantEntity(attachedTo); + } } private void applyCountersToGameEntity(GameEntity entity, String counterString) { @@ -875,7 +1001,7 @@ public abstract class GameState { } } - private void setupPlayerState(int life, Map cardTexts, final Player p) { + private void setupPlayerState(int life, Map cardTexts, final Player p, final int landsPlayed, final int landsPlayedLastTurn) { // Lock check static as we setup player state Map playerCards = new EnumMap(ZoneType.class); @@ -885,6 +1011,9 @@ public abstract class GameState { } if (life >= 0) p.setLife(life, null); + p.setLandsPlayedThisTurn(landsPlayed); + p.setLandsPlayedLastTurn(landsPlayedLastTurn); + for (Entry kv : playerCards.entrySet()) { PlayerZone zone = p.getZone(kv.getKey()); if (kv.getKey() == ZoneType.Battlefield) { @@ -1008,6 +1137,10 @@ public abstract class GameState { } else if (info.startsWith("Attaching:")) { int id = Integer.parseInt(info.substring(info.indexOf(':') + 1)); cardToAttachId.put(c, id); + } else if (info.startsWith("EnchantingPlayer:")) { + // TODO: improve this for game states with more than two players + String tgt = info.substring(info.indexOf(':') + 1); + cardToEnchantPlayerId.put(c, tgt.equalsIgnoreCase("AI") ? TARGET_AI : TARGET_HUMAN); } else if (info.startsWith("Ability:")) { String abString = info.substring(info.indexOf(':') + 1).toLowerCase(); c.addSpellAbility(AbilityFactory.getAbility(abilityString.get(abString), c)); diff --git a/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java b/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java index 8e063fc4ccb..e230c7bd04c 100644 --- a/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java +++ b/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java @@ -168,12 +168,13 @@ public class PlayerControllerAi extends PlayerController { } @Override - public SpellAbility chooseSingleSpellForEffect(java.util.List spells, SpellAbility sa, String title) { + public SpellAbility chooseSingleSpellForEffect(java.util.List spells, SpellAbility sa, String title, + Map params) { ApiType api = sa.getApi(); if (null == api) { throw new InvalidParameterException("SA is not api-based, this is not supported yet"); } - return SpellApiToAi.Converter.get(api).chooseSingleSpellAbility(player, sa, spells); + return SpellApiToAi.Converter.get(api).chooseSingleSpellAbility(player, sa, spells, params); } @Override @@ -291,9 +292,38 @@ public class PlayerControllerAi extends PlayerController { return ImmutablePair.of(toTop, toBottom); } + /* (non-Javadoc) + * @see forge.game.player.PlayerController#arrangeForSurveil(forge.game.card.CardCollection) + */ + @Override + public ImmutablePair arrangeForSurveil(CardCollection topN) { + CardCollection toGraveyard = new CardCollection(); + CardCollection toTop = new CardCollection(); + + // TODO: Currently this logic uses the same routine as Scry. Possibly differentiate this and implement + // a specific logic for Surveil (e.g. maybe to interact better with Reanimator strategies etc.). + if (getPlayer().getCardsIn(ZoneType.Hand).size() <= getAi().getIntProperty(AiProps.SURVEIL_NUM_CARDS_IN_LIBRARY_TO_BAIL)) { + toTop.addAll(topN); + } else { + for (Card c : topN) { + if (ComputerUtil.scryWillMoveCardToBottomOfLibrary(player, c)) { + toGraveyard.add(c); + } else { + toTop.add(c); + } + } + } + + Collections.shuffle(toTop, MyRandom.getRandom()); + return ImmutablePair.of(toTop, toGraveyard); + } + @Override public boolean willPutCardOnTop(Card c) { - return true; // AI does not know what will happen next (another clash or that would become his topdeck) + // This is used for Clash. Currently uses Scry logic to determine whether the card should be put on top. + // Note that the AI does not know what will happen next (another clash or that would become his topdeck) + + return !ComputerUtil.scryWillMoveCardToBottomOfLibrary(player, c); } @Override diff --git a/forge-ai/src/main/java/forge/ai/SpellAbilityAi.java b/forge-ai/src/main/java/forge/ai/SpellAbilityAi.java index be3d906ec92..93168edf512 100644 --- a/forge-ai/src/main/java/forge/ai/SpellAbilityAi.java +++ b/forge-ai/src/main/java/forge/ai/SpellAbilityAi.java @@ -324,7 +324,7 @@ public abstract class SpellAbilityAi { return null; } - public SpellAbility chooseSingleSpellAbility(Player player, SpellAbility sa, List spells) { + public SpellAbility chooseSingleSpellAbility(Player player, SpellAbility sa, List spells, Map params) { System.err.println("Warning: default (ie. inherited from base class) implementation of chooseSingleSpellAbility is used by " + sa.getHostCard().getName() + " for " + this.getClass().getName() + ". Consider declaring an overloaded method"); return spells.get(0); } diff --git a/forge-ai/src/main/java/forge/ai/SpellApiToAi.java b/forge-ai/src/main/java/forge/ai/SpellApiToAi.java index c11bd25aad6..d5b9473a39e 100644 --- a/forge-ai/src/main/java/forge/ai/SpellApiToAi.java +++ b/forge-ai/src/main/java/forge/ai/SpellApiToAi.java @@ -25,6 +25,7 @@ public enum SpellApiToAi { .put(ApiType.AnimateAll, AnimateAllAi.class) .put(ApiType.Attach, AttachAi.class) .put(ApiType.Ascend, AlwaysPlayAi.class) + .put(ApiType.AssignGroup, AssignGroupAi.class) .put(ApiType.Balance, BalanceAi.class) .put(ApiType.BecomeMonarch, AlwaysPlayAi.class) .put(ApiType.BecomesBlocked, BecomesBlockedAi.class) @@ -144,6 +145,7 @@ public enum SpellApiToAi { .put(ApiType.SkipTurn, SkipTurnAi.class) .put(ApiType.StoreMap, StoreMapAi.class) .put(ApiType.StoreSVar, StoreSVarAi.class) + .put(ApiType.Surveil, SurveilAi.class) .put(ApiType.Tap, TapAi.class) .put(ApiType.TapAll, TapAllAi.class) .put(ApiType.TapOrUntap, TapOrUntapAi.class) diff --git a/forge-ai/src/main/java/forge/ai/ability/ActivateAbilityAi.java b/forge-ai/src/main/java/forge/ai/ability/ActivateAbilityAi.java index b71f07080f7..7eba97960da 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ActivateAbilityAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ActivateAbilityAi.java @@ -12,6 +12,7 @@ import forge.game.zone.ZoneType; import forge.util.MyRandom; import java.util.List; +import java.util.Map; public class ActivateAbilityAi extends SpellAbilityAi { @@ -93,7 +94,8 @@ public class ActivateAbilityAi extends SpellAbilityAi { } @Override - public SpellAbility chooseSingleSpellAbility(Player player, SpellAbility sa, List spells) { + public SpellAbility chooseSingleSpellAbility(Player player, SpellAbility sa, List spells, + Map params) { return spells.get(0); } } diff --git a/forge-ai/src/main/java/forge/ai/ability/AnimateAi.java b/forge-ai/src/main/java/forge/ai/ability/AnimateAi.java index 28e8fb5bb9c..76fdbbd3d0d 100644 --- a/forge-ai/src/main/java/forge/ai/ability/AnimateAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/AnimateAi.java @@ -23,12 +23,12 @@ import forge.game.staticability.StaticAbilityLayer; import forge.game.trigger.Trigger; import forge.game.trigger.TriggerHandler; import forge.game.zone.ZoneType; -import forge.util.collect.FCollectionView; import java.util.Arrays; import java.util.List; import java.util.Map; +import forge.game.ability.effects.AnimateEffectBase; /** *

@@ -363,11 +363,11 @@ public class AnimateAi extends SpellAbilityAi { card.setSickness(hasOriginalCardSickness); // AF specific sa - int power = -1; + Integer power = null; if (sa.hasParam("Power")) { power = AbilityUtils.calculateAmount(source, sa.getParam("Power"), sa); } - int toughness = -1; + Integer toughness = null; if (sa.hasParam("Toughness")) { toughness = AbilityUtils.calculateAmount(source, sa.getParam("Toughness"), sa); } @@ -453,65 +453,7 @@ public class AnimateAi extends SpellAbilityAi { sVars.addAll(Arrays.asList(sa.getParam("sVars").split(","))); } - // duplicating AnimateEffectBase.doAnimate - boolean removeSuperTypes = false; - boolean removeCardTypes = false; - boolean removeSubTypes = false; - boolean removeCreatureTypes = false; - boolean removeArtifactTypes = false; - - if (sa.hasParam("OverwriteTypes")) { - removeSuperTypes = true; - removeCardTypes = true; - removeSubTypes = true; - removeCreatureTypes = true; - removeArtifactTypes = true; - } - - if (sa.hasParam("KeepSupertypes")) { - removeSuperTypes = false; - } - - if (sa.hasParam("KeepCardTypes")) { - removeCardTypes = false; - } - - if (sa.hasParam("RemoveSuperTypes")) { - removeSuperTypes = true; - } - - if (sa.hasParam("RemoveCardTypes")) { - removeCardTypes = true; - } - - if (sa.hasParam("RemoveSubTypes")) { - removeSubTypes = true; - } - - if (sa.hasParam("RemoveCreatureTypes")) { - removeCreatureTypes = true; - } - - if (sa.hasParam("RemoveArtifactTypes")) { - removeArtifactTypes = true; - } - - if ((power != -1) || (toughness != -1)) { - card.addNewPT(power, toughness, timestamp); - } - - if (!types.isEmpty() || !removeTypes.isEmpty() || removeCreatureTypes) { - card.addChangedCardTypes(types, removeTypes, removeSuperTypes, removeCardTypes, removeSubTypes, - removeCreatureTypes, removeArtifactTypes, timestamp); - } - - card.addChangedCardKeywords(keywords, removeKeywords, sa.hasParam("RemoveAllAbilities"), timestamp); - - for (final String k : hiddenKeywords) { - card.addHiddenExtrinsicKeyword(k); - } - - card.addColor(finalDesc, !sa.hasParam("OverwriteColors"), timestamp); + AnimateEffectBase.doAnimate(card, sa, power, toughness, types, removeTypes, finalDesc, keywords, removeKeywords, hiddenKeywords, timestamp); // back to duplicating AnimateEffect.resolve // TODO will all these abilities/triggers/replacements/etc. lead to @@ -521,10 +463,14 @@ public class AnimateAi extends SpellAbilityAi { boolean clearAbilities = sa.hasParam("OverwriteAbilities"); boolean clearSpells = sa.hasParam("OverwriteSpells"); boolean removeAll = sa.hasParam("RemoveAllAbilities"); + boolean removeIntrinsic = sa.hasParam("RemoveIntrinsicAbilities"); if (clearAbilities || clearSpells || removeAll) { for (final SpellAbility ab : card.getSpellAbilities()) { - if (removeAll || (ab.isAbility() && clearAbilities) || (ab.isSpell() && clearSpells)) { + if (removeAll + || (ab.isIntrinsic() && removeIntrinsic && !ab.isBasicLandAbility()) + || (ab.isAbility() && clearAbilities) + || (ab.isSpell() && clearSpells)) { card.removeSpellAbility(ab); removedAbilities.add(ab); } @@ -565,9 +511,11 @@ public class AnimateAi extends SpellAbilityAi { // suppress triggers from the animated card final List removedTriggers = Lists.newArrayList(); - if (sa.hasParam("OverwriteTriggers") || removeAll) { - final FCollectionView triggersToRemove = card.getTriggers(); - for (final Trigger trigger : triggersToRemove) { + if (sa.hasParam("OverwriteTriggers") || removeAll || removeIntrinsic) { + for (final Trigger trigger : card.getTriggers()) { + if (removeIntrinsic && !trigger.isIntrinsic()) { + continue; + } trigger.setSuppressed(true); removedTriggers.add(trigger); } @@ -603,9 +551,11 @@ public class AnimateAi extends SpellAbilityAi { // suppress static abilities from the animated card final List removedStatics = Lists.newArrayList(); - if (sa.hasParam("OverwriteStatics") || removeAll) { - final FCollectionView staticsToRemove = card.getStaticAbilities(); - for (final StaticAbility stAb : staticsToRemove) { + if (sa.hasParam("OverwriteStatics") || removeAll || removeIntrinsic) { + for (final StaticAbility stAb : card.getStaticAbilities()) { + if (removeIntrinsic && !stAb.isIntrinsic()) { + continue; + } stAb.setTemporarilySuppressed(true); removedStatics.add(stAb); } @@ -613,8 +563,11 @@ public class AnimateAi extends SpellAbilityAi { // suppress static abilities from the animated card final List removedReplacements = Lists.newArrayList(); - if (sa.hasParam("OverwriteReplacements") || removeAll) { + if (sa.hasParam("OverwriteReplacements") || removeAll || removeIntrinsic) { for (final ReplacementEffect re : card.getReplacementEffects()) { + if (removeIntrinsic && !re.isIntrinsic()) { + continue; + } re.setTemporarilySuppressed(true); removedReplacements.add(re); } diff --git a/forge-ai/src/main/java/forge/ai/ability/AssignGroupAi.java b/forge-ai/src/main/java/forge/ai/ability/AssignGroupAi.java new file mode 100644 index 00000000000..691a21904ce --- /dev/null +++ b/forge-ai/src/main/java/forge/ai/ability/AssignGroupAi.java @@ -0,0 +1,33 @@ +package forge.ai.ability; + +import java.util.List; +import java.util.Map; + +import com.google.common.collect.Iterables; + +import forge.ai.SpellAbilityAi; +import forge.game.player.Player; +import forge.game.spellability.SpellAbility; + +public class AssignGroupAi extends SpellAbilityAi { + + protected boolean canPlayAI(Player ai, SpellAbility sa) { + // TODO: Currently this AI relies on the card-specific limiting hints (NeedsToPlay / NeedsToPlayVar), + // otherwise the AI considers the card playable. + + return true; + } + + public SpellAbility chooseSingleSpellAbility(Player player, SpellAbility sa, List spells, Map params) { + final String logic = sa.getParamOrDefault("AILogic", ""); + + if (logic.equals("FriendOrFoe")) { + if (params.containsKey("Affected") && spells.size() >= 2) { + Player t = (Player) params.get("Affected"); + return spells.get(player.isOpponentOf(t) ? 1 : 0); + } + } + + return Iterables.getFirst(spells, null); + } +} diff --git a/forge-ai/src/main/java/forge/ai/ability/AttachAi.java b/forge-ai/src/main/java/forge/ai/ability/AttachAi.java index 902691478f8..cdd19a65318 100644 --- a/forge-ai/src/main/java/forge/ai/ability/AttachAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/AttachAi.java @@ -510,7 +510,7 @@ public class AttachAi extends SpellAbilityAi { // Prefer "tap to deal damage" // TODO : Skip this one if triggers on combat damage only? for (SpellAbility sa2 : card.getSpellAbilities()) { - if ((sa2.getApi().equals(ApiType.DealDamage)) + if (ApiType.DealDamage.equals(sa2.getApi()) && (sa2.getTargetRestrictions().canTgtPlayer())) { cardPriority += 300; } @@ -971,8 +971,8 @@ public class AttachAi extends SpellAbilityAi { continue; } if ((affected.contains(stCheck) || affected.contains("AttachedBy"))) { - totToughness += AbilityUtils.calculateAmount(attachSource, stabMap.get("AddToughness"), sa); - totPower += AbilityUtils.calculateAmount(attachSource, stabMap.get("AddPower"), sa); + totToughness += AbilityUtils.calculateAmount(attachSource, stabMap.get("AddToughness"), stAbility); + totPower += AbilityUtils.calculateAmount(attachSource, stabMap.get("AddPower"), stAbility); grantingAbilities |= stabMap.containsKey("AddAbility"); diff --git a/forge-ai/src/main/java/forge/ai/ability/CanPlayAsDrawbackAi.java b/forge-ai/src/main/java/forge/ai/ability/CanPlayAsDrawbackAi.java index 0b4cf77f7c9..96876913dd9 100644 --- a/forge-ai/src/main/java/forge/ai/ability/CanPlayAsDrawbackAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/CanPlayAsDrawbackAi.java @@ -6,6 +6,7 @@ import forge.game.player.Player; import forge.game.spellability.SpellAbility; import java.util.List; +import java.util.Map; public class CanPlayAsDrawbackAi extends SpellAbilityAi { @@ -37,7 +38,8 @@ public class CanPlayAsDrawbackAi extends SpellAbilityAi { @Override - public SpellAbility chooseSingleSpellAbility(Player player, SpellAbility sa, List spells) { + public SpellAbility chooseSingleSpellAbility(Player player, SpellAbility sa, List spells, + Map params) { // This might be called from CopySpellAbilityEffect - to hide warning (for having no overload) use this simple overload return spells.get(0); } diff --git a/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java b/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java index 2eb6f30a6f2..ab2ef609098 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java @@ -152,7 +152,9 @@ public class ChangeZoneAi extends SpellAbilityAi { return doReturnCommanderLogic(sa, aiPlayer); } - if ("IfNotBuffed".equals(sa.getParam("AILogic"))) { + if ("Always".equals(sa.getParam("AILogic"))) { + return true; + } else if ("IfNotBuffed".equals(sa.getParam("AILogic"))) { if (ComputerUtilCard.isUselessCreature(aiPlayer, sa.getHostCard())) { return true; // debuffed by opponent's auras to the level that it becomes useless } diff --git a/forge-ai/src/main/java/forge/ai/ability/ChooseGenericEffectAi.java b/forge-ai/src/main/java/forge/ai/ability/ChooseGenericEffectAi.java index 05ba5338e55..af986809b36 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ChooseGenericEffectAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ChooseGenericEffectAi.java @@ -1,6 +1,7 @@ package forge.ai.ability; import java.util.List; +import java.util.Map; import com.google.common.base.Predicate; import com.google.common.collect.Iterables; @@ -79,7 +80,8 @@ public class ChooseGenericEffectAi extends SpellAbilityAi { } @Override - public SpellAbility chooseSingleSpellAbility(Player player, SpellAbility sa, List spells) { + public SpellAbility chooseSingleSpellAbility(Player player, SpellAbility sa, List spells, + Map params) { Card host = sa.getHostCard(); final String sourceName = ComputerUtilAbility.getAbilitySourceName(sa); final Game game = host.getGame(); diff --git a/forge-ai/src/main/java/forge/ai/ability/CopySpellAbilityAi.java b/forge-ai/src/main/java/forge/ai/ability/CopySpellAbilityAi.java index 4471074c3f5..55a0804a562 100644 --- a/forge-ai/src/main/java/forge/ai/ability/CopySpellAbilityAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/CopySpellAbilityAi.java @@ -7,6 +7,7 @@ import forge.game.player.PlayerActionConfirmMode; import forge.game.spellability.SpellAbility; import java.util.List; +import java.util.Map; public class CopySpellAbilityAi extends SpellAbilityAi { @@ -36,7 +37,8 @@ public class CopySpellAbilityAi extends SpellAbilityAi { } @Override - public SpellAbility chooseSingleSpellAbility(Player player, SpellAbility sa, List spells) { + public SpellAbility chooseSingleSpellAbility(Player player, SpellAbility sa, List spells, + Map params) { return spells.get(0); } diff --git a/forge-ai/src/main/java/forge/ai/ability/CountersPutAi.java b/forge-ai/src/main/java/forge/ai/ability/CountersPutAi.java index 3a2f2777dc1..171d3431506 100644 --- a/forge-ai/src/main/java/forge/ai/ability/CountersPutAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/CountersPutAi.java @@ -125,7 +125,7 @@ public class CountersPutAi extends SpellAbilityAi { CardCollection list; Card choice = null; final String type = sa.getParam("CounterType"); - final String amountStr = sa.getParam("CounterNum"); + final String amountStr = sa.getParamOrDefault("CounterNum", "1"); final boolean divided = sa.hasParam("DividedAsYouChoose"); final String logic = sa.getParamOrDefault("AILogic", ""); PhaseHandler ph = ai.getGame().getPhaseHandler(); @@ -220,13 +220,9 @@ public class CountersPutAi extends SpellAbilityAi { if ("Never".equals(logic)) { return false; - } - - if ("PayEnergy".equals(logic)) { + } else if ("PayEnergy".equals(logic)) { return true; - } - - if ("PayEnergyConservatively".equals(logic)) { + } else if ("PayEnergyConservatively".equals(logic)) { boolean onlyInCombat = ai.getController().isAI() && ((PlayerControllerAi) ai.getController()).getAi().getBooleanProperty(AiProps.CONSERVATIVE_ENERGY_PAYMENT_ONLY_IN_COMBAT); boolean onlyDefensive = ai.getController().isAI() @@ -266,9 +262,7 @@ public class CountersPutAi extends SpellAbilityAi { return true; } } - } - - if (logic.equals("MarkOppCreature")) { + } else if (logic.equals("MarkOppCreature")) { if (!ph.is(PhaseType.END_OF_TURN)) { return false; } @@ -283,6 +277,11 @@ public class CountersPutAi extends SpellAbilityAi { sa.getTargets().add(bestCreat); return true; } + } else if (logic.equals("CheckDFC")) { + // for cards like Ludevic's Test Subject + if (!source.canTransform()) { + return false; + } } if (sa.getConditions() != null && !sa.getConditions().areMet(sa) && sa.getSubAbility() == null) { @@ -581,7 +580,7 @@ public class CountersPutAi extends SpellAbilityAi { final String type = sa.getParam("CounterType"); final String logic = sa.getParamOrDefault("AILogic", ""); - final String amountStr = sa.getParam("CounterNum"); + final String amountStr = sa.getParamOrDefault("CounterNum", "1"); final boolean divided = sa.hasParam("DividedAsYouChoose"); final int amount = AbilityUtils.calculateAmount(sa.getHostCard(), amountStr, sa); @@ -661,7 +660,7 @@ public class CountersPutAi extends SpellAbilityAi { boolean preferred = true; CardCollection list; final String type = sa.getParam("CounterType"); - final String amountStr = sa.getParam("CounterNum"); + final String amountStr = sa.getParamOrDefault("CounterNum", "1"); final boolean divided = sa.hasParam("DividedAsYouChoose"); final int amount = AbilityUtils.calculateAmount(sa.getHostCard(), amountStr, sa); int left = amount; @@ -804,7 +803,8 @@ public class CountersPutAi extends SpellAbilityAi { if (mode == PlayerActionConfirmMode.Tribute) { // add counter if that opponent has a giant creature final List creats = player.getCreaturesInPlay(); - final int tributeAmount = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("CounterNum"), sa); + final String amountStr = sa.getParamOrDefault("CounterNum", "1"); + final int tributeAmount = AbilityUtils.calculateAmount(sa.getHostCard(), amountStr, sa); final boolean isHaste = source.hasKeyword(Keyword.HASTE); List threatening = CardLists.filter(creats, new Predicate() { @@ -863,7 +863,7 @@ public class CountersPutAi extends SpellAbilityAi { } final CounterType type = CounterType.valueOf(sa.getParam("CounterType")); - final String amountStr = sa.getParam("CounterNum"); + final String amountStr = sa.getParamOrDefault("CounterNum", "1"); final int amount = AbilityUtils.calculateAmount(sa.getHostCard(), amountStr, sa); final boolean isCurse = sa.isCurse(); diff --git a/forge-ai/src/main/java/forge/ai/ability/DamageDealAi.java b/forge-ai/src/main/java/forge/ai/ability/DamageDealAi.java index 1e78c806dda..d55ad8aa463 100644 --- a/forge-ai/src/main/java/forge/ai/ability/DamageDealAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/DamageDealAi.java @@ -481,10 +481,11 @@ public class DamageDealAi extends DamageAiBase { final PhaseHandler phase = game.getPhaseHandler(); final boolean divided = sa.hasParam("DividedAsYouChoose"); final boolean oppTargetsChoice = sa.hasParam("TargetingPlayer"); + final String logic = sa.getParamOrDefault("AILogic", ""); Player enemy = ComputerUtil.getOpponentFor(ai); - if ("PowerDmg".equals(sa.getParam("AILogic"))) { + if ("PowerDmg".equals(logic)) { // check if it is better to target the player instead, the original target is already set in PumpAi.pumpTgtAI() if (tgt.canTgtCreatureAndPlayer() && this.shouldTgtP(ai, sa, dmg, noPrevention)){ sa.resetTargets(); @@ -504,11 +505,11 @@ public class DamageDealAi extends DamageAiBase { TargetChoices tcs = sa.getTargets(); // Do not use if would kill self - if (("SelfDamage".equals(sa.getParam("AILogic"))) && (ai.getLife() <= Integer.parseInt(source.getSVar("SelfDamageAmount")))) { + if (("SelfDamage".equals(logic)) && (ai.getLife() <= Integer.parseInt(source.getSVar("SelfDamageAmount")))) { return false; } - if ("ChoiceBurn".equals(sa.getParam("AILogic"))) { + if ("ChoiceBurn".equals(logic)) { // do not waste burns on player if other choices are present if (this.shouldTgtP(ai, sa, dmg, noPrevention)) { tcs.add(enemy); @@ -517,7 +518,7 @@ public class DamageDealAi extends DamageAiBase { return false; } } - if ("Polukranos".equals(sa.getParam("AILogic"))) { + if ("Polukranos".equals(logic)) { int dmgTaken = 0; CardCollection humCreatures = enemy.getCreaturesInPlay(); Card lastTgt = null; @@ -681,7 +682,7 @@ public class DamageDealAi extends DamageAiBase { } continue; } - } else if ("OppAtTenLife".equals(sa.getParam("AILogic"))) { + } else if ("OppAtTenLife".equals(logic)) { for (final Player p : ai.getOpponents()) { if (sa.canTarget(p) && p.getLife() == 10 && tcs.getNumTargeted() < tgt.getMaxTargets(source, sa)) { tcs.add(p); @@ -690,9 +691,10 @@ public class DamageDealAi extends DamageAiBase { } // TODO: Improve Damage, we shouldn't just target the player just // because we can - else if (sa.canTarget(enemy)) { + if (sa.canTarget(enemy) && tcs.getNumTargeted() < tgt.getMaxTargets(source, sa)) { if (((phase.is(PhaseType.END_OF_TURN) && phase.getNextTurn().equals(ai)) || (SpellAbilityAi.isSorcerySpeed(sa) && phase.is(PhaseType.MAIN2)) + || ("PingAfterAttack".equals(logic) && phase.getPhase().isAfter(PhaseType.COMBAT_DECLARE_ATTACKERS) && phase.isPlayerTurn(ai)) || sa.getPayCosts() == null || immediately || this.shouldTgtP(ai, sa, dmg, noPrevention)) && (!avoidTargetP(ai, sa))) { diff --git a/forge-ai/src/main/java/forge/ai/ability/DrawAi.java b/forge-ai/src/main/java/forge/ai/ability/DrawAi.java index 0c020491679..2a2967f317b 100644 --- a/forge-ai/src/main/java/forge/ai/ability/DrawAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/DrawAi.java @@ -26,10 +26,7 @@ import forge.game.card.Card; import forge.game.card.CardLists; import forge.game.card.CardPredicates; import forge.game.card.CounterType; -import forge.game.cost.Cost; -import forge.game.cost.CostDiscard; -import forge.game.cost.CostPart; -import forge.game.cost.PaymentDecision; +import forge.game.cost.*; import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseType; import forge.game.player.Player; @@ -252,19 +249,34 @@ public class DrawAi extends SpellAbilityAi { } if (num != null && num.equals("ChosenX")) { - // Necrologia, Pay X Life : Draw X Cards if (sa.getSVar("X").equals("XChoice")) { // Draw up to max hand size but leave at least 3 in library numCards = Math.min(computerMaxHandSize - computerHandSize, computerLibrarySize - 3); - // But no more than what's "safe" and doesn't risk a near death experience - // Maybe would be better to check for "serious danger" and take more risk? - while ((ComputerUtil.aiLifeInDanger(ai, false, numCards) && (numCards > 0))) { - numCards--; + + if (sa.getPayCosts() != null) { + if (sa.getPayCosts().hasSpecificCostType(CostPayLife.class)) { + // [Necrologia, Pay X Life : Draw X Cards] + // Don't draw more than what's "safe" and don't risk a near death experience + // Maybe would be better to check for "serious danger" and take more risk? + while ((ComputerUtil.aiLifeInDanger(ai, false, numCards) && (numCards > 0))) { + numCards--; + } + } else if (sa.getPayCosts().hasSpecificCostType(CostSacrifice.class)) { + // [e.g. Krav, the Unredeemed and other cases which say "Sacrifice X creatures: draw X cards] + // TODO: Add special logic to limit/otherwise modify the ChosenX value here + + // Skip this ability if nothing is to be chosen for sacrifice + if (numCards <= 0) { + return false; + } + } } + sa.setSVar("ChosenX", Integer.toString(numCards)); source.setSVar("ChosenX", Integer.toString(numCards)); } } + // Logic for cards that require special handling if ("YawgmothsBargain".equals(logic)) { return SpecialCardAi.YawgmothsBargain.consider(ai, sa); diff --git a/forge-ai/src/main/java/forge/ai/ability/FightAi.java b/forge-ai/src/main/java/forge/ai/ability/FightAi.java index f9805e09954..3a1ad5b5528 100644 --- a/forge-ai/src/main/java/forge/ai/ability/FightAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/FightAi.java @@ -33,6 +33,12 @@ public class FightAi extends SpellAbilityAi { sa.resetTargets(); final Card source = sa.getHostCard(); + // everything is defined or targeted above, can't do anything there? + if (sa.hasParam("Defined") && !sa.usesTargeting()) { + // TODO extend Logic for cards like Arena or Grothama + return true; + } + // Get creature lists CardCollectionView aiCreatures = ai.getCreaturesInPlay(); aiCreatures = CardLists.getTargetableCards(aiCreatures, sa); diff --git a/forge-ai/src/main/java/forge/ai/ability/LifeExchangeVariantAi.java b/forge-ai/src/main/java/forge/ai/ability/LifeExchangeVariantAi.java index a34f5e0d801..633dfadf4e7 100644 --- a/forge-ai/src/main/java/forge/ai/ability/LifeExchangeVariantAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/LifeExchangeVariantAi.java @@ -9,6 +9,7 @@ import forge.game.card.Card; import forge.game.player.Player; import forge.game.spellability.SpellAbility; import forge.game.spellability.TargetRestrictions; +import forge.game.zone.MagicStack; public class LifeExchangeVariantAi extends SpellAbilityAi { @@ -83,7 +84,25 @@ public class LifeExchangeVariantAi extends SpellAbilityAi { return shouldDo; } else if ("Evra, Halcyon Witness".equals(sourceName)) { - // TODO add logic + if (!ai.canGainLife()) + return false; + + int aiLife = ai.getLife(); + + if (source.getNetPower() > aiLife) { + if (ComputerUtilCombat.lifeInSeriousDanger(ai, ai.getGame().getCombat())) { + return true; + } + + // check the top of stack + MagicStack stack = ai.getGame().getStack(); + if (!stack.isEmpty()) { + SpellAbility saTop = stack.peekAbility(); + if (ComputerUtil.predictDamageFromSpell(saTop, ai) >= aiLife) { + return true; + } + } + } } return false; diff --git a/forge-ai/src/main/java/forge/ai/ability/ScryAi.java b/forge-ai/src/main/java/forge/ai/ability/ScryAi.java index a831818c7da..ea10f386b9e 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ScryAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ScryAi.java @@ -11,7 +11,6 @@ import forge.game.phase.PhaseType; import forge.game.player.Player; import forge.game.player.PlayerActionConfirmMode; import forge.game.spellability.SpellAbility; -import forge.game.spellability.TargetRestrictions; import forge.game.zone.ZoneType; import forge.util.MyRandom; @@ -22,9 +21,8 @@ public class ScryAi extends SpellAbilityAi { */ @Override protected boolean doTriggerAINoCost(Player ai, SpellAbility sa, boolean mandatory) { - final TargetRestrictions tgt = sa.getTargetRestrictions(); - if (tgt != null) { // It doesn't appear that Scry ever targets + if (sa.usesTargeting()) { // It doesn't appear that Scry ever targets // ability is targeted sa.resetTargets(); diff --git a/forge-ai/src/main/java/forge/ai/ability/SetStateAi.java b/forge-ai/src/main/java/forge/ai/ability/SetStateAi.java index 350f368a817..2a2a5d7493e 100644 --- a/forge-ai/src/main/java/forge/ai/ability/SetStateAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/SetStateAi.java @@ -3,7 +3,6 @@ package forge.ai.ability; import com.google.common.base.Predicate; import forge.ai.ComputerUtilCard; import forge.ai.SpellAbilityAi; -import forge.card.CardSplitType; import forge.card.CardStateName; import forge.game.Game; import forge.game.GlobalRuleChange; @@ -65,8 +64,6 @@ public class SetStateAi extends SpellAbilityAi { @Override protected boolean checkAiLogic(final Player aiPlayer, final SpellAbility sa, final String aiLogic) { - final Card source = sa.getHostCard(); - return super.checkAiLogic(aiPlayer, sa, aiLogic); } @@ -87,7 +84,7 @@ public class SetStateAi extends SpellAbilityAi { if("Transform".equals(mode)) { if (!sa.usesTargeting()) { // no Transform with Defined which is not Self - if (source.hasKeyword("CARDNAME can't transform")) { + if (!source.canTransform()) { return false; } return shouldTransformCard(source, ai, ph) || "Always".equals(logic); @@ -96,15 +93,13 @@ public class SetStateAi extends SpellAbilityAi { sa.resetTargets(); CardCollection list = CardLists.getValidCards(CardLists.filter(game.getCardsIn(ZoneType.Battlefield), Presets.CREATURES), tgt.getValidTgts(), ai, source, sa); - // select only cards with Transform as SplitType + // select only the ones that can transform list = CardLists.filter(list, new Predicate() { @Override public boolean apply(Card c) { - return c.hasAlternateState() && c.getRules().getSplitType() == CardSplitType.Transform; + return c.canTransform(); } }); - // select only the ones that can transform - list = CardLists.getNotKeyword(list, "CARDNAME can't transform"); list = CardLists.getTargetableCards(list, sa); if (list.isEmpty()) { diff --git a/forge-ai/src/main/java/forge/ai/ability/SurveilAi.java b/forge-ai/src/main/java/forge/ai/ability/SurveilAi.java new file mode 100644 index 00000000000..fe7b1671e67 --- /dev/null +++ b/forge-ai/src/main/java/forge/ai/ability/SurveilAi.java @@ -0,0 +1,104 @@ +package forge.ai.ability; + +import forge.ai.SpellAbilityAi; +import forge.game.phase.PhaseHandler; +import forge.game.phase.PhaseType; +import forge.game.player.Player; +import forge.game.player.PlayerActionConfirmMode; +import forge.game.spellability.SpellAbility; +import forge.game.zone.ZoneType; +import forge.util.MyRandom; + +public class SurveilAi extends SpellAbilityAi { + + /* + * (non-Javadoc) + * @see forge.ai.SpellAbilityAi#doTriggerAINoCost(forge.game.player.Player, forge.game.spellability.SpellAbility, boolean) + */ + @Override + protected boolean doTriggerAINoCost(Player ai, SpellAbility sa, boolean mandatory) { + + if (sa.usesTargeting()) { // TODO: It doesn't appear that Surveil ever targets, is this necessary? + sa.resetTargets(); + sa.getTargets().add(ai); + } + + return true; + } + + /* + * (non-Javadoc) + * @see forge.ai.SpellAbilityAi#chkAIDrawback(forge.game.spellability.SpellAbility, forge.game.player.Player) + */ + @Override + public boolean chkAIDrawback(SpellAbility sa, Player ai) { + return doTriggerAINoCost(ai, sa, false); + } + + /** + * Checks if the AI will play a SpellAbility based on its phase restrictions + */ + @Override + protected boolean checkPhaseRestrictions(final Player ai, final SpellAbility sa, final PhaseHandler ph) { + // if the Surveil ability requires tapping and has a mana cost, it's best done at the end of opponent's turn + // and right before the beginning of AI's turn, if possible, to avoid mana locking the AI and also to + // try to scry right before drawing a card. Also, avoid tapping creatures in the AI's turn, if possible, + // even if there's no mana cost. + if (sa.getPayCosts() != null) { + if (sa.getPayCosts().hasTapCost() + && (sa.getPayCosts().hasManaCost() || (sa.getHostCard() != null && sa.getHostCard().isCreature())) + && !SpellAbilityAi.isSorcerySpeed(sa)) { + return ph.getNextTurn() == ai && ph.is(PhaseType.END_OF_TURN); + } + } + + // in the player's turn Surveil should only be done in Main1 or in Upkeep if able + if (ph.isPlayerTurn(ai)) { + if (SpellAbilityAi.isSorcerySpeed(sa)) { + return ph.is(PhaseType.MAIN1) || sa.hasParam("Planeswalker"); + } else { + return ph.is(PhaseType.UPKEEP); + } + } + return true; + } + + /** + * Checks if the AI will play a SpellAbility with the specified AiLogic + */ + @Override + protected boolean checkAiLogic(final Player ai, final SpellAbility sa, final String aiLogic) { + if ("Never".equals(aiLogic)) { + return false; + } + + // TODO: add card-specific Surveil AI logic here when/if necessary + + return true; + } + + @Override + protected boolean checkApiLogic(Player ai, SpellAbility sa) { + // Makes no sense to do Surveil when there's nothing in the library + if (ai.getCardsIn(ZoneType.Library).isEmpty()) { + return false; + } + + double chance = .4; // 40 percent chance for instant speed + if (SpellAbilityAi.isSorcerySpeed(sa)) { + chance = .667; // 66.7% chance for sorcery speed (since it will never activate EOT) + } + + boolean randomReturn = MyRandom.getRandom().nextFloat() <= Math.pow(chance, sa.getActivationsThisTurn() + 1); + if (SpellAbilityAi.playReusable(ai, sa)) { + randomReturn = true; + } + + return randomReturn; + } + + @Override + public boolean confirmAction(Player player, SpellAbility sa, PlayerActionConfirmMode mode, String message) { + return true; + } +} diff --git a/forge-ai/src/main/java/forge/ai/ability/TokenAi.java b/forge-ai/src/main/java/forge/ai/ability/TokenAi.java index ec86828e6d8..56d88681c72 100644 --- a/forge-ai/src/main/java/forge/ai/ability/TokenAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/TokenAi.java @@ -8,6 +8,7 @@ import forge.game.GameEntity; import forge.game.ability.AbilityFactory; import forge.game.ability.AbilityUtils; import forge.game.ability.ApiType; +import forge.game.ability.effects.TokenEffect; import forge.game.card.*; import forge.game.card.token.TokenInfo; import forge.game.combat.Combat; @@ -42,14 +43,11 @@ import java.util.List; * @version $Id: AbilityFactoryToken.java 17656 2012-10-22 19:32:56Z Max mtg $ */ public class TokenAi extends SpellAbilityAi { - - private String tokenAmount; - private String tokenName; - private String[] tokenTypes; - private String[] tokenKeywords; private String tokenPower; private String tokenToughness; + + private Card actualToken; /** *

* Constructor for AbilityFactory_Token. @@ -58,23 +56,28 @@ public class TokenAi extends SpellAbilityAi { * a {@link forge.game.ability.AbilityFactory} object. */ private void readParameters(final SpellAbility mapParams) { - String[] keywords; - - if (mapParams.hasParam("TokenKeywords")) { - // TODO: Change this Split to a semicolon or something else - keywords = mapParams.getParam("TokenKeywords").split("<>"); - } else { - keywords = new String[0]; - } - - this.tokenAmount = mapParams.getParamOrDefault("TokenAmount", "1"); - this.tokenPower = mapParams.getParam("TokenPower"); - this.tokenToughness = mapParams.getParam("TokenToughness"); - this.tokenName = mapParams.getParam("TokenName"); - this.tokenTypes = mapParams.getParam("TokenTypes").split(","); - this.tokenKeywords = keywords; + TokenEffect effect = new TokenEffect(); + + this.actualToken = effect.loadTokenPrototype(mapParams); + + if (actualToken == null) { + String[] keywords; + + if (mapParams.hasParam("TokenKeywords")) { + // TODO: Change this Split to a semicolon or something else + keywords = mapParams.getParam("TokenKeywords").split("<>"); + } else { + keywords = new String[0]; + } + + this.tokenPower = mapParams.getParam("TokenPower"); + this.tokenToughness = mapParams.getParam("TokenToughness"); + } else { + this.tokenPower = actualToken.getBasePowerString(); + this.tokenToughness = actualToken.getBaseToughnessString(); + } } @Override @@ -103,8 +106,11 @@ public class TokenAi extends SpellAbilityAi { } } - final Card token = spawnToken(ai, sa); - if (token == null) { + if (actualToken == null) { + actualToken = spawnToken(ai, sa); + } + + if (actualToken == null) { final AbilitySub sub = sa.getSubAbility(); if (pwPlus || (sub != null && SpellApiToAi.Converter.get(sub.getApi()).chkAIDrawback(sub, ai))) { return true; // planeswalker plus ability or sub-ability is @@ -130,24 +136,21 @@ public class TokenAi extends SpellAbilityAi { } } - if (canInterruptSacrifice(ai, sa, token)) { + if (canInterruptSacrifice(ai, sa, actualToken)) { return true; } - boolean haste = false; + boolean haste = this.actualToken.hasKeyword(Keyword.HASTE); boolean oneShot = sa.getSubAbility() != null && sa.getSubAbility().getApi() == ApiType.DelayedTrigger; - for (final String kw : this.tokenKeywords) { - if (kw.equals("Haste")) { - haste = true; - } - } + boolean isCreature = this.actualToken.getType().isCreature(); + // Don't generate tokens without haste before main 2 if possible if (ph.getPhase().isBefore(PhaseType.MAIN2) && ph.isPlayerTurn(ai) && !haste && !sa.hasParam("ActivationPhases") && !ComputerUtil.castSpellInMain1(ai, sa)) { boolean buff = false; for (Card c : ai.getCardsIn(ZoneType.Battlefield)) { - if ("Creature".equals(c.getSVar("BuffedBy"))) { + if (isCreature && "Creature".equals(c.getSVar("BuffedBy"))) { buff = true; } } @@ -180,12 +183,9 @@ public class TokenAi extends SpellAbilityAi { } // Don't kill AIs Legendary tokens - for (final String type : this.tokenTypes) { - if (type.equals("Legendary")) { - if (ai.isCardInPlay(this.tokenName)) { - return false; - } - } + if (this.actualToken.getType().isLegendary() && ai.isCardInPlay(this.actualToken.getName())) { + // TODO Check if Token is useless due to an aura or counters? + return false; } final TargetRestrictions tgt = sa.getTargetRestrictions(); @@ -311,6 +311,18 @@ public class TokenAi extends SpellAbilityAi { } } + if (mandatory) { + // Necessary because the AI goes into this method twice, first to set up targets (with mandatory=true) + // and then the second time to confirm the trigger (where mandatory may be set to false). + return true; + } + + if ("OnlyOnAlliedAttack".equals(sa.getParam("AILogic"))) { + Combat combat = ai.getGame().getCombat(); + return combat != null && combat.getAttackingPlayer() != null + && !combat.getAttackingPlayer().isOpponentOf(ai); + } + return true; } /* (non-Javadoc) @@ -388,6 +400,7 @@ public class TokenAi extends SpellAbilityAi { * @param notNull if the token would not survive, still return it * @return token creature created by ability */ + // TODO Is this just completely copied from TokenEffect? Let's just call that thing public static Card spawnToken(Player ai, SpellAbility sa, boolean notNull) { final Card host = sa.getHostCard(); @@ -511,7 +524,7 @@ public class TokenAi extends SpellAbilityAi { // Apply static abilities and prune dead tokens final Game game = ai.getGame(); ComputerUtilCard.applyStaticContPT(game, token, null); - if (!notNull && token.getNetToughness() < 1) { + if (!notNull && token.isCreature() && token.getNetToughness() < 1) { return null; } else { return token; diff --git a/forge-core/.classpath b/forge-core/.classpath index f7bf6c0c0ab..95651cd7399 100644 --- a/forge-core/.classpath +++ b/forge-core/.classpath @@ -1,7 +1,6 @@ - diff --git a/forge-core/pom.xml b/forge-core/pom.xml index c3dfef97b0a..75670239273 100644 --- a/forge-core/pom.xml +++ b/forge-core/pom.xml @@ -6,7 +6,7 @@ forge forge - 1.6.11-SNAPSHOT + 1.6.16-SNAPSHOT forge-core @@ -16,7 +16,7 @@ com.google.guava guava - 24.1-jre + 24.1-android org.apache.commons @@ -24,4 +24,31 @@ 3.7 + + + + + org.apache.maven.plugins + maven-checkstyle-plugin + 3.0.0 + + + checkstyle-validation + validate + + ../checkstyle.xml + true + UTF-8 + true + true + true + + + check + + + + + + diff --git a/forge-core/src/main/java/forge/CardStorageReader.java b/forge-core/src/main/java/forge/CardStorageReader.java index 0f99bf6b87d..92b30bce7ac 100644 --- a/forge-core/src/main/java/forge/CardStorageReader.java +++ b/forge-core/src/main/java/forge/CardStorageReader.java @@ -413,6 +413,9 @@ public class CardStorageReader { return reader.readCard(lines, Files.getNameWithoutExtension(file.getName())); } catch (final FileNotFoundException ex) { throw new RuntimeException("CardReader : run error -- file not found: " + file.getPath(), ex); + } catch (final Exception ex) { + System.out.println("Error loading cardscript " + file.getName() + ". Please close Forge and resolve this."); + throw ex; } finally { try { assert fileInputStream != null; diff --git a/forge-core/src/main/java/forge/StaticData.java b/forge-core/src/main/java/forge/StaticData.java index 6c7d931d7b3..9e8629baf20 100644 --- a/forge-core/src/main/java/forge/StaticData.java +++ b/forge-core/src/main/java/forge/StaticData.java @@ -37,6 +37,8 @@ public class StaticData { private Predicate brawlPredicate; private Predicate modernPredicate; + private boolean filteredHandsEnabled = false; + // Loaded lazily: private IStorage boosters; private IStorage specialBoosters; @@ -209,6 +211,14 @@ public class StaticData { return brawlPredicate; } + public void setFilteredHandsEnabled(boolean filteredHandsEnabled){ + this.filteredHandsEnabled = filteredHandsEnabled; + } + + public boolean getFilteredHandsEnabled(){ + return filteredHandsEnabled; + } + public PaperCard getCardByEditionDate(PaperCard card, Date editionDate) { PaperCard c = this.getCommonCards().getCardFromEdition(card.getName(), editionDate, CardDb.SetPreference.LatestCoreExp, card.getArtIndex()); diff --git a/forge-core/src/main/java/forge/card/CardChangedType.java b/forge-core/src/main/java/forge/card/CardChangedType.java index 1aae3bd41fa..6e855548598 100644 --- a/forge-core/src/main/java/forge/card/CardChangedType.java +++ b/forge-core/src/main/java/forge/card/CardChangedType.java @@ -32,19 +32,24 @@ public class CardChangedType { private final boolean removeSuperTypes; private final boolean removeCardTypes; private final boolean removeSubTypes; + private final boolean removeLandTypes; private final boolean removeCreatureTypes; private final boolean removeArtifactTypes; + private final boolean removeEnchantmentTypes; public CardChangedType(final CardType addType0, final CardType removeType0, final boolean removeSuperType0, - final boolean removeCardType0, final boolean removeSubType0, final boolean removeCreatureType0, - final boolean removeArtifactType0) { + final boolean removeCardType0, final boolean removeSubType0, final boolean removeLandType0, + final boolean removeCreatureType0, final boolean removeArtifactType0, + final boolean removeEnchantmentTypes0) { addType = addType0; removeType = removeType0; removeSuperTypes = removeSuperType0; removeCardTypes = removeCardType0; removeSubTypes = removeSubType0; + removeLandTypes = removeLandType0; removeCreatureTypes = removeCreatureType0; removeArtifactTypes = removeArtifactType0; + removeEnchantmentTypes = removeEnchantmentTypes0; } public final CardType getAddType() { @@ -67,6 +72,10 @@ public class CardChangedType { return removeSubTypes; } + public final boolean isRemoveLandTypes() { + return removeLandTypes; + } + public final boolean isRemoveCreatureTypes() { return removeCreatureTypes; } @@ -74,4 +83,8 @@ public class CardChangedType { public final boolean isRemoveArtifactTypes() { return removeArtifactTypes; } + + public final boolean isRemoveEnchantmentTypes() { + return removeEnchantmentTypes; + } } diff --git a/forge-core/src/main/java/forge/card/CardEdition.java b/forge-core/src/main/java/forge/card/CardEdition.java index 022a915fdb8..d9afaef296b 100644 --- a/forge-core/src/main/java/forge/card/CardEdition.java +++ b/forge-core/src/main/java/forge/card/CardEdition.java @@ -123,12 +123,19 @@ public final class CardEdition implements Comparable { // immutable private boolean smallSetOverride = false; private String boosterMustContain = ""; private final CardInSet[] cards; + private final String[] tokenNormalized; private int boosterArts = 1; private SealedProduct.Template boosterTpl = null; private CardEdition(CardInSet[] cards) { this.cards = cards; + tokenNormalized = null; + } + + private CardEdition(CardInSet[] cards, String[] tokens) { + this.cards = cards; + this.tokenNormalized = tokens; } /** @@ -254,6 +261,7 @@ public final class CardEdition implements Comparable { // immutable protected CardEdition read(File file) { final Map> contents = FileSection.parseSections(FileUtil.readFile(file)); + List tokenNormalized = new ArrayList<>(); List processedCards = new ArrayList<>(); if (contents.containsKey("cards")) { for(String line : contents.get("cards")) { @@ -277,7 +285,19 @@ public final class CardEdition implements Comparable { // immutable } } - CardEdition res = new CardEdition(processedCards.toArray(new CardInSet[processedCards.size()])); + if (contents.containsKey("tokens")) { + for(String line : contents.get("tokens")) { + if (StringUtils.isBlank(line)) + continue; + + tokenNormalized.add(line); + } + } + + CardEdition res = new CardEdition( + processedCards.toArray(new CardInSet[processedCards.size()]), + tokenNormalized.toArray(new String[tokenNormalized.size()]) + ); FileSection section = FileSection.parse(contents.get("metadata"), "="); res.name = section.get("name"); diff --git a/forge-core/src/main/java/forge/card/CardFace.java b/forge-core/src/main/java/forge/card/CardFace.java index 041e9251378..cfb3205c44b 100644 --- a/forge-core/src/main/java/forge/card/CardFace.java +++ b/forge-core/src/main/java/forge/card/CardFace.java @@ -87,21 +87,27 @@ final class CardFace implements ICardFace { void setInitialLoyalty(int value) { this.initialLoyalty = value; } void setPtText(String value) { - final int slashPos = value.indexOf('/'); - if (slashPos == -1) { + final String k[] = value.split("/"); + + if (k.length != 2) { throw new RuntimeException("Creature '" + this.getName() + "' has bad p/t stats"); } - boolean negPower = value.charAt(0) == '-'; - boolean negToughness = value.charAt(slashPos + 1) == '-'; - this.power = negPower ? value.substring(1, slashPos) : value.substring(0, slashPos); - this.toughness = negToughness ? value.substring(slashPos + 2) : value.substring(slashPos + 1); + this.power = k[0]; + this.toughness = k[1]; - this.iPower = StringUtils.isNumeric(this.power) ? Integer.parseInt(this.power) : 0; - this.iToughness = StringUtils.isNumeric(this.toughness) ? Integer.parseInt(this.toughness) : 0; + this.iPower = parsePT(k[0]); + this.iToughness = parsePT(k[1]); + } - if (negPower) { this.iPower *= -1; } - if (negToughness) { this.iToughness *= -1; } + static int parsePT(String val) { + // normalize PT value + if (val.contains("*")) { + val = val.replace("+*", ""); + val = val.replace("-*", ""); + val = val.replace("*", "0"); + } + return Integer.parseInt(val); } // Raw fields used for Card creation diff --git a/forge-core/src/main/java/forge/card/CardFacePredicates.java b/forge-core/src/main/java/forge/card/CardFacePredicates.java index 80209bb43b1..ee83dda3787 100644 --- a/forge-core/src/main/java/forge/card/CardFacePredicates.java +++ b/forge-core/src/main/java/forge/card/CardFacePredicates.java @@ -76,6 +76,51 @@ public final class CardFacePredicates { }; } + static class ValidPredicate implements Predicate { + private String valid; + + public ValidPredicate(final String valid) { + this.valid = valid; + } + + @Override + public boolean apply(ICardFace input) { + String k[] = valid.split("\\.", 2); + + if ("Card".equals(k[0])) { + // okay + } else if ("Permanent".equals(k[0])) { + if (input.getType().isInstant() || input.getType().isSorcery()) { + return false; + } + } else if (!input.getType().hasStringType(k[0])) { + return false; + } + if (k.length > 1) { + for (final String m : k[1].split("\\+")) { + if (!hasProperty(input, m)) { + return false; + } + } + } + + return true; + } + + static protected boolean hasProperty(ICardFace input, final String v) { + if (v.startsWith("non")) { + return !hasProperty(input, v.substring(3)); + } else if (!input.getType().hasStringType(v)) { + return false; + } + return true; + } + } + + public static Predicate valid(final String val) { + return new ValidPredicate(val); + } + public static class Presets { /** The Constant isBasicLand. */ public static final Predicate IS_BASIC_LAND = new Predicate() { diff --git a/forge-core/src/main/java/forge/card/CardRules.java b/forge-core/src/main/java/forge/card/CardRules.java index a16a8152179..f96411d4dc7 100644 --- a/forge-core/src/main/java/forge/card/CardRules.java +++ b/forge-core/src/main/java/forge/card/CardRules.java @@ -41,6 +41,7 @@ public final class CardRules implements ICardCharacteristics { private CardAiHints aiHints; private ColorSet colorIdentity; private String meldWith; + private String partnerWith; private CardRules(ICardFace[] faces, CardSplitType altMode, CardAiHints cah) { splitType = altMode; @@ -48,6 +49,7 @@ public final class CardRules implements ICardCharacteristics { otherPart = faces[1]; aiHints = cah; meldWith = ""; + partnerWith = ""; //calculate color identity byte colMask = calculateColorIdentity(mainPart); @@ -68,6 +70,7 @@ public final class CardRules implements ICardCharacteristics { aiHints = newRules.aiHints; colorIdentity = newRules.colorIdentity; meldWith = newRules.meldWith; + partnerWith = newRules.partnerWith; } private static byte calculateColorIdentity(final ICardFace face) { @@ -204,7 +207,7 @@ public final class CardRules implements ICardCharacteristics { } public boolean canBePartnerCommander() { - return canBeCommander() && Iterables.contains(mainPart.getKeywords(), "Partner"); + return canBeCommander() && (hasKeyword("Partner") || !this.partnerWith.isEmpty()); } public boolean canBeBrawlCommander() { @@ -216,6 +219,10 @@ public final class CardRules implements ICardCharacteristics { return meldWith; } + public String getParterWith() { + return partnerWith; + } + // vanguard card fields, they don't use sides. private int deltaHand; private int deltaLife; @@ -262,6 +269,7 @@ public final class CardRules implements ICardCharacteristics { private int curFace = 0; private CardSplitType altMode = CardSplitType.None; private String meldWith = ""; + private String partnerWith = ""; private String handLife = null; private String normalizedName = ""; @@ -291,6 +299,7 @@ public final class CardRules implements ICardCharacteristics { this.hints = null; this.has = null; this.meldWith = ""; + this.partnerWith = ""; this.normalizedName = ""; } @@ -307,6 +316,7 @@ public final class CardRules implements ICardCharacteristics { result.setNormalizedName(this.normalizedName); result.meldWith = this.meldWith; + result.partnerWith = this.partnerWith; result.setDlUrls(pictureUrl); if (StringUtils.isNotBlank(handLife)) result.setVanguardProperties(handLife); @@ -382,6 +392,9 @@ public final class CardRules implements ICardCharacteristics { case 'K': if ("K".equals(key)) { this.faces[this.curFace].addKeyword(value); + if (value.startsWith("Partner:")) { + this.partnerWith = value.split(":")[1]; + } } break; @@ -533,4 +546,8 @@ public final class CardRules implements ICardCharacteristics { return result; } + + public boolean hasKeyword(final String k) { + return Iterables.contains(mainPart.getKeywords(), k); + } } diff --git a/forge-core/src/main/java/forge/card/CardRulesPredicates.java b/forge-core/src/main/java/forge/card/CardRulesPredicates.java index cd8a3ec4e23..dba9ccad197 100644 --- a/forge-core/src/main/java/forge/card/CardRulesPredicates.java +++ b/forge-core/src/main/java/forge/card/CardRulesPredicates.java @@ -10,7 +10,6 @@ import com.google.common.collect.Iterables; import forge.util.ComparableOp; import forge.util.PredicateString; -import forge.util.PredicateString.StringOp; /** * Filtering conditions specific for CardRules class, defined here along with @@ -558,6 +557,19 @@ public final class CardRulesPredicates { } }; + public static final Predicate CAN_BE_COMMANDER = new Predicate() { + @Override + public boolean apply(final CardRules subject) { + return subject.canBeCommander(); + } + }; + public static final Predicate CAN_BE_PARTNER_COMMANDER = new Predicate() { + @Override + public boolean apply(final CardRules subject) { + return subject.canBePartnerCommander(); + } + }; + public static final Predicate IS_PLANESWALKER = CardRulesPredicates.coreType(true, CardType.CoreType.Planeswalker); public static final Predicate IS_INSTANT = CardRulesPredicates.coreType(true, CardType.CoreType.Instant); public static final Predicate IS_SORCERY = CardRulesPredicates.coreType(true, CardType.CoreType.Sorcery); @@ -570,13 +582,10 @@ public final class CardRulesPredicates { public static final Predicate IS_CONSPIRACY = CardRulesPredicates.coreType(true, CardType.CoreType.Conspiracy); public static final Predicate IS_NON_LAND = CardRulesPredicates.coreType(false, CardType.CoreType.Land); public static final Predicate IS_NON_CREATURE_SPELL = Predicates.not(Predicates.or(Presets.IS_CREATURE, Presets.IS_LAND)); - public static final Predicate CAN_BE_COMMANDER = Predicates.or(CardRulesPredicates.rules(StringOp.CONTAINS_IC, "can be your commander"), - Predicates.and(Presets.IS_CREATURE, Presets.IS_LEGENDARY)); public static final Predicate CAN_BE_BRAWL_COMMANDER = Predicates.or(Presets.IS_PLANESWALKER, Predicates.and(Presets.IS_CREATURE, Presets.IS_LEGENDARY)); /** The Constant IS_NONCREATURE_SPELL_FOR_GENERATOR. **/ - @SuppressWarnings("unchecked") public static final Predicate IS_NONCREATURE_SPELL_FOR_GENERATOR = com.google.common.base.Predicates .or(Presets.IS_SORCERY, Presets.IS_INSTANT, Presets.IS_PLANESWALKER, Presets.IS_ENCHANTMENT, Predicates.and(Presets.IS_ARTIFACT, Predicates.not(Presets.IS_CREATURE))); diff --git a/forge-core/src/main/java/forge/card/CardType.java b/forge-core/src/main/java/forge/card/CardType.java index f01b9e59413..e3713cf1f1b 100644 --- a/forge-core/src/main/java/forge/card/CardType.java +++ b/forge-core/src/main/java/forge/card/CardType.java @@ -190,7 +190,7 @@ public final class CardType implements Comparable, CardTypeView { public boolean setCreatureTypes(Collection ctypes) { // if it isn't a creature then this has no effect - if (!coreTypes.contains(CoreType.Creature)) { + if (!isCreature() && !isTribal()) { return false; } boolean changed = Iterables.removeIf(subtypes, Predicates.IS_CREATURE_TYPE); @@ -236,7 +236,7 @@ public final class CardType implements Comparable, CardTypeView { final Set landTypes = Sets.newHashSet(); if (isLand()) { for (final String t : subtypes) { - if (isALandType(t) || isABasicLandType(t)) { + if (isALandType(t)) { landTypes.add(t); } } @@ -435,6 +435,9 @@ public final class CardType implements Comparable, CardTypeView { @Override public CardTypeView getTypeWithChanges(final Iterable changedCardTypes) { CardType newType = null; + if (Iterables.isEmpty(changedCardTypes)) { + return this; + } // we assume that changes are already correctly ordered (taken from TreeMap.values()) for (final CardChangedType ct : changedCardTypes) { if(null == newType) @@ -449,7 +452,10 @@ public final class CardType implements Comparable, CardTypeView { if (ct.isRemoveSubTypes()) { newType.subtypes.clear(); } - else { + else if (!newType.subtypes.isEmpty()) { + if (ct.isRemoveLandTypes()) { + Iterables.removeIf(newType.subtypes, Predicates.IS_LAND_TYPE); + } if (ct.isRemoveCreatureTypes()) { Iterables.removeIf(newType.subtypes, Predicates.IS_CREATURE_TYPE); // need to remove AllCreatureTypes too when removing creature Types @@ -458,6 +464,9 @@ public final class CardType implements Comparable, CardTypeView { if (ct.isRemoveArtifactTypes()) { Iterables.removeIf(newType.subtypes, Predicates.IS_ARTIFACT_TYPE); } + if (ct.isRemoveEnchantmentTypes()) { + Iterables.removeIf(newType.subtypes, Predicates.IS_ENCHANTMENT_TYPE); + } } if (ct.getRemoveType() != null) { newType.removeAll(ct.getRemoveType()); @@ -466,6 +475,28 @@ public final class CardType implements Comparable, CardTypeView { newType.addAll(ct.getAddType()); } } + // sanisfy subtypes + if (newType != null && !newType.subtypes.isEmpty()) { + if (!newType.isCreature() && !newType.isTribal()) { + Iterables.removeIf(newType.subtypes, Predicates.IS_CREATURE_TYPE); + newType.subtypes.remove("AllCreatureTypes"); + } + if (!newType.isLand()) { + Iterables.removeIf(newType.subtypes, Predicates.IS_LAND_TYPE); + } + if (!newType.isArtifact()) { + Iterables.removeIf(newType.subtypes, Predicates.IS_ARTIFACT_TYPE); + } + if (!newType.isEnchantment()) { + Iterables.removeIf(newType.subtypes, Predicates.IS_ENCHANTMENT_TYPE); + } + if (!newType.isInstant() && !newType.isSorcery()) { + Iterables.removeIf(newType.subtypes, Predicates.IS_SPELL_TYPE); + } + if (!newType.isPlaneswalker() && !newType.isEmblem()) { + Iterables.removeIf(newType.subtypes, Predicates.IS_WALKER_TYPE); + } + } return newType == null ? this : newType; } @@ -574,6 +605,13 @@ public final class CardType implements Comparable, CardTypeView { public static final BiMap singularTypes = pluralTypes.inverse(); } public static class Predicates { + public static Predicate IS_LAND_TYPE = new Predicate() { + @Override + public boolean apply(String input) { + return CardType.isALandType(input); + } + }; + public static Predicate IS_ARTIFACT_TYPE = new Predicate() { @Override public boolean apply(String input) { @@ -587,6 +625,27 @@ public final class CardType implements Comparable, CardTypeView { return CardType.isACreatureType(input); } }; + + public static Predicate IS_ENCHANTMENT_TYPE = new Predicate() { + @Override + public boolean apply(String input) { + return CardType.isAnEnchantmentType(input); + } + }; + + public static Predicate IS_SPELL_TYPE = new Predicate() { + @Override + public boolean apply(String input) { + return CardType.isASpellType(input); + } + }; + + public static Predicate IS_WALKER_TYPE = new Predicate() { + @Override + public boolean apply(String input) { + return CardType.isAPlaneswalkerType(input); + } + }; } @@ -656,7 +715,7 @@ public final class CardType implements Comparable, CardTypeView { } public static boolean isALandType(final String cardType) { - return (Constant.LAND_TYPES.contains(cardType)); + return Constant.LAND_TYPES.contains(cardType) || isABasicLandType(cardType); } public static boolean isAPlaneswalkerType(final String cardType) { @@ -667,6 +726,13 @@ public final class CardType implements Comparable, CardTypeView { return (Constant.BASIC_TYPES.contains(cardType)); } + public static boolean isAnEnchantmentType(final String cardType) { + return (Constant.ENCHANTMENT_TYPES.contains(cardType)); + } + + public static boolean isASpellType(final String cardType) { + return (Constant.SPELL_TYPES.contains(cardType)); + } /** * If the input is a plural type, return the corresponding singular form. diff --git a/forge-core/src/main/java/forge/deck/Deck.java b/forge-core/src/main/java/forge/deck/Deck.java index 6f0be2bbd95..a4b43b51efd 100644 --- a/forge-core/src/main/java/forge/deck/Deck.java +++ b/forge-core/src/main/java/forge/deck/Deck.java @@ -291,17 +291,13 @@ public class Deck extends DeckBase implements Iterable. */ package forge.deck; import forge.item.InventoryItem; - import java.io.Serializable; - public abstract class DeckBase implements Serializable, Comparable, InventoryItem { private static final long serialVersionUID = -7538150536939660052L; // gameType is from Constant.GameType, like GameType.Regular @@ -59,7 +57,7 @@ public abstract class DeckBase implements Serializable, Comparable, In /* * (non-Javadoc) - * + * * @see java.lang.Object#hashCode() */ @Override @@ -74,6 +72,7 @@ public abstract class DeckBase implements Serializable, Comparable, In public String getDirectory() { return directory; } + public void setDirectory(String directory0) { directory = directory0; } @@ -101,7 +100,7 @@ public abstract class DeckBase implements Serializable, Comparable, In *

* getComment. *

- * + * * @return a {@link java.lang.String} object. */ public String getComment() { @@ -149,5 +148,5 @@ public abstract class DeckBase implements Serializable, Comparable, In public abstract boolean isEmpty(); - public abstract void importDeck(Deck deck); + public abstract Deck getHumanDeck(); } diff --git a/forge-core/src/main/java/forge/deck/DeckFormat.java b/forge-core/src/main/java/forge/deck/DeckFormat.java index b1494cbc322..131b4360e42 100644 --- a/forge-core/src/main/java/forge/deck/DeckFormat.java +++ b/forge-core/src/main/java/forge/deck/DeckFormat.java @@ -248,41 +248,33 @@ public enum DeckFormat { return "too many commanders"; } - // Bring values up to 100 - min++; - max++; - byte cmdCI = 0; - Boolean hasPartner = null; for (PaperCard pc : commanders) { - // For each commander decrement size by 1 (99 for 1, 98 for 2) - min--; - max--; - if (!isLegalCommander(pc.getRules())) { return "has an illegal commander"; } - - if (hasPartner != null && !hasPartner) { - return "has an illegal commander partnership"; - } - - boolean isPartner = false; - for(String s : pc.getRules().getMainPart().getKeywords()) { - if (s.equals("Partner")) { - isPartner = true; - break; - } - } - if (hasPartner == null) { - hasPartner = isPartner; - } else if (!isPartner) { - return "has an illegal commander partnership"; - } - cmdCI |= pc.getRules().getColorIdentity().getColor(); } + // special check for Partner + if (commanders.size() == 2) { + // two commander = 98 cards + min--; + max--; + + PaperCard a = commanders.get(0); + PaperCard b = commanders.get(1); + + if (a.getRules().hasKeyword("Partner") && b.getRules().hasKeyword("Partner")) { + // normal partner commander + } else if (a.getName().equals(b.getRules().getParterWith()) + && b.getName().equals(a.getRules().getParterWith())) { + // paired partner commander + } else { + return "has an illegal commander partnership"; + } + } + final List erroneousCI = new ArrayList(); Set basicLandNames = new HashSet<>(); @@ -521,6 +513,8 @@ public enum DeckFormat { for (final PaperCard p : commanders) { cmdCI |= p.getRules().getColorIdentity().getColor(); } - return Predicates.compose(Predicates.or(CardRulesPredicates.hasColorIdentity(cmdCI), CardRulesPredicates.hasKeyword("Partner")), PaperCard.FN_GET_RULES); + // TODO : check commander what kind of Partner it needs + return Predicates.compose(Predicates.or(CardRulesPredicates.hasColorIdentity(cmdCI), + CardRulesPredicates.Presets.CAN_BE_PARTNER_COMMANDER), PaperCard.FN_GET_RULES); } } diff --git a/forge-core/src/main/java/forge/deck/DeckGroup.java b/forge-core/src/main/java/forge/deck/DeckGroup.java index 599449d69a2..1a48f019d25 100644 --- a/forge-core/src/main/java/forge/deck/DeckGroup.java +++ b/forge-core/src/main/java/forge/deck/DeckGroup.java @@ -18,9 +18,6 @@ package forge.deck; import com.google.common.base.Function; -import forge.StaticData; -import forge.item.PaperCard; - import java.util.*; /** @@ -47,7 +44,8 @@ public class DeckGroup extends DeckBase { * * @return the human deck */ - public final Deck getHumanDeck() { + @Override + public Deck getHumanDeck() { return humanDeck; } @@ -160,100 +158,4 @@ public class DeckGroup extends DeckBase { public String getImageKey(boolean altState) { return null; } - - - @Override - public void importDeck(Deck deck) { - CardPool draftedCards = this.getHumanDeck().getAllCardsInASinglePool(false); - - this.getHumanDeck().putSection(DeckSection.Main, new CardPool()); - this.getHumanDeck().putSection(DeckSection.Sideboard, new CardPool()); - - HashMap countByName = getCountByName(deck); - - addFromDraftedCardPool(countByName, draftedCards); - addBasicLands(deck, countByName, draftedCards); - } - - private HashMap getCountByName(Deck deck) { - HashMap result = new HashMap(); - - for (Map.Entry entry: deck.getMain()) { - PaperCard importedCard = entry.getKey(); - - Integer previousCount = result.getOrDefault(importedCard.getName(), 0); - int countToAdd = entry.getValue(); - - result.put(importedCard.getName(), countToAdd + previousCount); - } - - return result; - } - - private void addFromDraftedCardPool(HashMap countByName, CardPool availableCards) { - for (Map.Entry entry: availableCards) { - - PaperCard availableCard = entry.getKey(); - Integer availableCount = entry.getValue(); - int countToAdd = countByName.getOrDefault(availableCard.getName(), 0); - - if (availableCard.getRules().getType().isBasicLand()) { - // basic lands are added regardless from drafted cards - continue; - } - - int countMain = Math.min(availableCount, countToAdd); - - if (countMain > 0) { - this.getHumanDeck().getMain().add(availableCard, countMain); - countByName.put(availableCard.getName(), countToAdd - countMain); - } - - int countSideboard = availableCount - countMain; - - if (countSideboard > 0) { - CardPool sideboard = this.getHumanDeck().getOrCreate(DeckSection.Sideboard); - sideboard.add(availableCard, countSideboard); - } - } - } - - private void addBasicLands(Deck deck, HashMap countByName, CardPool availableCards) { - HashMap basicLandsByName = getBasicLandsByName(deck, countByName); - - Date dateWithAllCards = StaticData.instance().getEditions().getEarliestDateWithAllCards(availableCards); - for (String cardName: countByName.keySet()) { - - PaperCard card = basicLandsByName.getOrDefault(cardName, null); - - if (card == null) { - continue; - } - - int countToAdd = countByName.get(cardName); - - card = StaticData.instance().getCardByEditionDate(card, dateWithAllCards); - this.getHumanDeck().getMain().add(card.getName(), card.getEdition(), countToAdd); - } - } - - private HashMap getBasicLandsByName(Deck deck, HashMap countByName) { - HashMap result = new HashMap(); - - for (Map.Entry entry: deck.getMain()) { - PaperCard card = entry.getKey(); - - if (!card.getRules().getType().isBasicLand()) { - continue; - } - - if (result.containsKey(card.getName())) { - continue; - } - - result.put(card.getName(), card); - } - - return result; - } } diff --git a/forge-core/src/main/java/forge/deck/DeckSection.java b/forge-core/src/main/java/forge/deck/DeckSection.java index 7974d1e1677..90d2b91d17e 100644 --- a/forge-core/src/main/java/forge/deck/DeckSection.java +++ b/forge-core/src/main/java/forge/deck/DeckSection.java @@ -21,9 +21,9 @@ public enum DeckSection { return null; } - final String valToCompate = value.trim(); + final String valToCompare = value.trim(); for (final DeckSection v : DeckSection.values()) { - if (v.name().compareToIgnoreCase(valToCompate) == 0) { + if (v.name().compareToIgnoreCase(valToCompare) == 0) { return v; } } diff --git a/forge-core/src/main/java/forge/item/PaperToken.java b/forge-core/src/main/java/forge/item/PaperToken.java index f958afdfac0..59e2e0015ae 100644 --- a/forge-core/src/main/java/forge/item/PaperToken.java +++ b/forge-core/src/main/java/forge/item/PaperToken.java @@ -137,6 +137,6 @@ public class PaperToken implements InventoryItemFromSet, IPaperCard { @Override public String getImageKey(boolean altState) { - return ImageKeys.TOKEN_PREFIX + imageFileName; + return ImageKeys.TOKEN_PREFIX + imageFileName.replace(" ", "_"); } } diff --git a/forge-core/src/main/java/forge/token/TokenDb.java b/forge-core/src/main/java/forge/token/TokenDb.java index d3fe2aac9ce..f4275e4c86b 100644 --- a/forge-core/src/main/java/forge/token/TokenDb.java +++ b/forge-core/src/main/java/forge/token/TokenDb.java @@ -39,13 +39,19 @@ public class TokenDb implements ITokenDatabase { @Override public PaperToken getToken(String tokenName, String edition) { - try { - PaperToken pt = new PaperToken(rulesByName.get(tokenName), editions.get(edition)); - // TODO Cache the token after it's referenced - return pt; - } catch(Exception e) { - return null; + String fullName = String.format("%s_%s", tokenName, edition.toLowerCase()); + + if (!tokensByName.containsKey(fullName)) { + try { + PaperToken pt = new PaperToken(rulesByName.get(tokenName), editions.get(edition)); + tokensByName.put(fullName, pt); + return pt; + } catch(Exception e) { + return null; + } } + + return tokensByName.get(fullName); } @Override diff --git a/forge-game/pom.xml b/forge-game/pom.xml index bdd76921006..363022a7855 100644 --- a/forge-game/pom.xml +++ b/forge-game/pom.xml @@ -6,7 +6,7 @@ forge forge - 1.6.11-SNAPSHOT + 1.6.16-SNAPSHOT forge-game @@ -30,5 +30,37 @@ test jar + + io.sentry + sentry-log4j + 1.7.5 + + + + + + org.apache.maven.plugins + maven-checkstyle-plugin + 3.0.0 + + + checkstyle-validation + validate + + ../checkstyle.xml + true + UTF-8 + true + true + true + + + check + + + + + + diff --git a/forge-game/src/main/java/forge/game/CardTraitBase.java b/forge-game/src/main/java/forge/game/CardTraitBase.java index d3ff7689545..b59c994a80c 100644 --- a/forge-game/src/main/java/forge/game/CardTraitBase.java +++ b/forge-game/src/main/java/forge/game/CardTraitBase.java @@ -314,7 +314,11 @@ public abstract class CardTraitBase extends GameObject implements IHasCardView { list.addAll(p.getCardsIn(presentZone)); } } - + if (presentPlayer.equals("Any")) { + for (final Player p : this.getHostCard().getController().getAllies()) { + list.addAll(p.getCardsIn(presentZone)); + } + } list = CardLists.getValidCards(list, sIsPresent.split(","), this.getHostCard().getController(), this.getHostCard(), null); int right = 1; diff --git a/forge-game/src/main/java/forge/game/ForgeScript.java b/forge-game/src/main/java/forge/game/ForgeScript.java index aec9121c12d..59870a830de 100644 --- a/forge-game/src/main/java/forge/game/ForgeScript.java +++ b/forge-game/src/main/java/forge/game/ForgeScript.java @@ -168,6 +168,10 @@ public class ForgeScript { if (!sa.isFlashBackAbility()) { return false; } + } else if (property.equals("Jumpstart")) { + if (!sa.isJumpstart()) { + return false; + } } else if (property.equals("Kicked")) { if (!sa.isKicked()) { return false; @@ -204,6 +208,12 @@ public class ForgeScript { if (!found) { return false; } + } else if (property.equals("YouCtrl")) { + return sa.getActivatingPlayer().equals(sourceController); + } else if (sa.getHostCard() != null) { + if (!sa.getHostCard().hasProperty(property, sourceController, source, spellAbility)) { + return false; + } } return true; diff --git a/forge-game/src/main/java/forge/game/GameAction.java b/forge-game/src/main/java/forge/game/GameAction.java index 3bf8a391842..2741c83f892 100644 --- a/forge-game/src/main/java/forge/game/GameAction.java +++ b/forge-game/src/main/java/forge/game/GameAction.java @@ -20,6 +20,7 @@ package forge.game; import com.google.common.base.Predicate; import com.google.common.collect.*; import forge.GameCommand; +import forge.StaticData; import forge.card.CardStateName; import forge.game.ability.AbilityFactory; import forge.game.ability.AbilityUtils; @@ -150,8 +151,9 @@ public class GameAction { // Cards returned from exile face-down must be reset to their original state, otherwise // all sort of funky shenanigans may happen later (e.g. their ETB replacement effects are set // up on the wrong card state etc.). - if (zoneTo.is(ZoneType.Hand) && zoneFrom.is(ZoneType.Exile) && c.isFaceDown()) { + if (c.isFaceDown() && (fromBattlefield || (toHand && zoneFrom.is(ZoneType.Exile)))) { c.setState(CardStateName.Original, true); + c.runFaceupCommands(); } // Clean up the temporary Dash SVar when the Dashed card leaves the battlefield @@ -190,7 +192,7 @@ public class GameAction { if (!c.isToken()) { if (c.isCloned()) { - c.switchStates(CardStateName.Cloner, CardStateName.Original, false); + c.switchStates(CardStateName.Original, CardStateName.Cloner, false); c.setState(CardStateName.Original, false); c.clearStates(CardStateName.Cloner, false); if (c.isFlipCard()) { @@ -250,11 +252,24 @@ public class GameAction { Card noLandLKI = CardUtil.getLKICopy(c); // this check needs to check if this card would be on the battlefield noLandLKI.setLastKnownZone(zoneTo); - + CardCollection preList = new CardCollection(noLandLKI); checkStaticAbilities(false, Sets.newHashSet(noLandLKI), preList); + // fake etb counters thing, then if something changed, + // need to apply checkStaticAbilities again + if(!noLandLKI.isLand()) { + if (noLandLKI.putEtbCounters()) { + // counters are added need to check again + checkStaticAbilities(false, Sets.newHashSet(noLandLKI), preList); + } + } + if(noLandLKI.isLand()) { + // if it isn't on the Stack, it stays in that Zone + if (!c.getZone().is(ZoneType.Stack)) { + return c; + } // if something would only be a land when entering the battlefield and not before // put it into the graveyard instead zoneTo = c.getOwner().getZone(ZoneType.Graveyard); @@ -262,6 +277,9 @@ public class GameAction { copied.setState(CardStateName.Original, false); copied.setManifested(false); copied.updateStateForView(); + + // not to battlefield anymore! + toBattlefield = false; } } @@ -357,7 +375,10 @@ public class GameAction { // do ETB counters after StaticAbilities check if (!suppress) { if (toBattlefield) { - copied.putEtbCounters(); + if (copied.putEtbCounters()) { + // if counter where put of card, call checkStaticAbilities again + checkStaticAbilities(); + } } copied.clearEtbCounters(); } @@ -367,6 +388,7 @@ public class GameAction { final Map runParams = Maps.newHashMap(); runParams.put("Card", lastKnownInfo); + runParams.put("Cause", cause); runParams.put("Origin", zoneFrom != null ? zoneFrom.getZoneType().name() : null); runParams.put("Destination", zoneTo.getZoneType().name()); runParams.put("SpellAbilityStackInstance", game.stack.peek()); @@ -873,9 +895,13 @@ public class GameAction { } } - if (runEvents) { + // preList means that this is run by a pre Check with LKI objects + // in that case Always trigger should not Run + if (preList.isEmpty()) { final Map runParams = Maps.newHashMap(); game.getTriggerHandler().runTrigger(TriggerType.Always, runParams, false); + + game.getTriggerHandler().runTrigger(TriggerType.Immediate, runParams, false); } // Update P/T and type in the view only once after all the cards have been processed, to avoid flickering @@ -1562,6 +1588,53 @@ public class GameAction { } } + private void drawStartingHand(Player p1){ + + //check initial hand + List lib1 = Lists.newArrayList(p1.getZone(ZoneType.Library).getCards().threadSafeIterable()); + List hand1 = lib1.subList(0,p1.getMaxHandSize()); + System.out.println(hand1.toString()); + + //shuffle + List shuffledCards = Lists.newArrayList(p1.getZone(ZoneType.Library).getCards().threadSafeIterable()); + Collections.shuffle(shuffledCards); + + //check a second hand + List hand2 = shuffledCards.subList(0,p1.getMaxHandSize()); + System.out.println(hand2.toString()); + + //choose better hand according to land count + float averageLandRatio = getLandRatio(lib1); + if(getHandScore(hand1, averageLandRatio)>getHandScore(hand2, averageLandRatio)){ + p1.getZone(ZoneType.Library).setCards(shuffledCards); + } + p1.drawCards(p1.getMaxHandSize()); + } + + private float getLandRatio(List deck){ + int landCount = 0; + for(Card c:deck){ + if(c.isLand()){ + landCount++; + } + } + if (landCount == 0 ){ + return 0; + } + return Float.valueOf(landCount)/Float.valueOf(deck.size()); + } + + private float getHandScore(List hand, float landRatio){ + int landCount = 0; + for(Card c:hand){ + if(c.isLand()){ + landCount++; + } + } + float averageCount = landRatio * hand.size(); + return Math.abs(averageCount-landCount); + } + public void startGame(GameOutcome lastGameOutcome) { startGame(lastGameOutcome, null); } @@ -1582,7 +1655,11 @@ public class GameAction { game.setAge(GameStage.Mulligan); for (final Player p1 : game.getPlayers()) { - p1.drawCards(p1.getMaxHandSize()); + if (StaticData.instance().getFilteredHandsEnabled() ) { + drawStartingHand(p1); + } else { + p1.drawCards(p1.getStartingHandSize()); + } // If pl has Backup Plan as a Conspiracy draw that many extra hands @@ -1702,6 +1779,11 @@ public class GameAction { boolean isMultiPlayer = game.getPlayers().size() > 2; int mulliganDelta = isMultiPlayer ? 0 : 1; + // https://magic.wizards.com/en/articles/archive/feature/checking-brawl-2018-07-09 + if (game.getRules().hasAppliedVariant(GameType.Brawl) && !isMultiPlayer){ + mulliganDelta = 0; + } + boolean allKept; do { allKept = true; @@ -1766,7 +1848,7 @@ public class GameAction { //Vancouver Mulligan for(Player p : whoCanMulligan) { if (p.getStartingHandSize() > p.getZone(ZoneType.Hand).size()) { - p.scry(1); + p.scry(1, null); } } } diff --git a/forge-game/src/main/java/forge/game/GameActionUtil.java b/forge-game/src/main/java/forge/game/GameActionUtil.java index 2336b55b8d2..79824f924f7 100644 --- a/forge-game/src/main/java/forge/game/GameActionUtil.java +++ b/forge-game/src/main/java/forge/game/GameActionUtil.java @@ -109,7 +109,7 @@ public final class GameActionUtil { final SpellAbility newSA = sa.copy(activator); final SpellAbilityRestriction sar = newSA.getRestrictions(); if (o.isWithFlash()) { - sar.setInstantSpeed(true); + sar.setInstantSpeed(true); } sar.setZone(null); newSA.setMayPlay(o.getAbility()); @@ -174,7 +174,8 @@ public final class GameActionUtil { } if (sa.isCycling() && activator.hasKeyword("CyclingForZero")) { - final SpellAbility newSA = sa.copyWithNoManaCost(); + // set the cost to this directly to buypass non mana cost + final SpellAbility newSA = sa.copyWithDefinedCost("Discard<1/CARDNAME>"); newSA.setBasicSpell(false); newSA.getMapParams().put("CostDesc", ManaCostParser.parse("0")); // makes new SpellDescription @@ -186,6 +187,15 @@ public final class GameActionUtil { alternatives.add(newSA); } + if (sa.hasParam("Equip") && activator.hasKeyword("EquipInstantSpeed")) { + final SpellAbility newSA = sa.copy(activator); + SpellAbilityRestriction sar = newSA.getRestrictions(); + sar.setSorcerySpeed(false); + sar.setInstantSpeed(true); + newSA.setDescription(sa.getDescription() + " (you may activate any time you could cast an instant )"); + alternatives.add(newSA); + } + for (final KeywordInterface inst : source.getKeywords()) { final String keyword = inst.getOriginal(); if (sa.isSpell() && keyword.startsWith("Flashback")) { @@ -201,20 +211,12 @@ public final class GameActionUtil { flashback.getRestrictions().setZone(ZoneType.Graveyard); // there is a flashback cost (and not the cards cost) - if (!keyword.equals("Flashback")) { - flashback.setPayCosts(new Cost(keyword.substring(10), false)); + if (keyword.contains(":")) { + final String k[] = keyword.split(":"); + flashback.setPayCosts(new Cost(k[1], false)); } alternatives.add(flashback); } - - if (sa.hasParam("Equip") && sa instanceof AbilityActivated && keyword.equals("EquipInstantSpeed")) { - final SpellAbility newSA = sa.copy(activator); - SpellAbilityRestriction sar = newSA.getRestrictions(); - sar.setSorcerySpeed(false); - sar.setInstantSpeed(true); - newSA.setDescription(sa.getDescription() + " (you may activate any time you could cast an instant )"); - alternatives.add(newSA); - } } return alternatives; } @@ -259,6 +261,11 @@ public final class GameActionUtil { final Cost cost = new Cost("Discard<1/Land>", false); costs.add(new OptionalCostValue(OptionalCost.Retrace, cost)); } + } else if (keyword.equals("Jump-start")) { + if (source.getZone().is(ZoneType.Graveyard)) { + final Cost cost = new Cost("Discard<1/Card>", false); + costs.add(new OptionalCostValue(OptionalCost.Jumpstart, cost)); + } } else if (keyword.startsWith("MayFlashCost")) { String[] k = keyword.split(":"); final Cost cost = new Cost(k[1], false); @@ -286,6 +293,7 @@ public final class GameActionUtil { result.addConspireInstance(); break; case Retrace: + case Jumpstart: result.getRestrictions().setZone(ZoneType.Graveyard); break; case Flash: @@ -389,8 +397,8 @@ public final class GameActionUtil { } } } else if (keyword.startsWith("Kicker")) { - String[] sCosts = TextUtil.split(keyword.substring(6), ':'); - boolean generic = "Generic".equals(sCosts[sCosts.length - 1]); + String[] sCosts = TextUtil.split(keyword.substring(6), ':'); + boolean generic = "Generic".equals(sCosts[sCosts.length - 1]); // If this is a "generic kicker" (Undergrowth), ignore value for kicker creations int numKickers = sCosts.length - (generic ? 1 : 0); for (int i = 0; i < abilities.size(); i++) { diff --git a/forge-game/src/main/java/forge/game/GameEntity.java b/forge-game/src/main/java/forge/game/GameEntity.java index 61c5ad6457a..37a27344866 100644 --- a/forge-game/src/main/java/forge/game/GameEntity.java +++ b/forge-game/src/main/java/forge/game/GameEntity.java @@ -25,7 +25,9 @@ import forge.game.card.CounterType; import forge.game.event.GameEventCardAttachment; import forge.game.event.GameEventCardAttachment.AttachMethod; import forge.game.keyword.Keyword; +import forge.game.player.Player; import forge.game.spellability.SpellAbility; +import forge.game.spellability.TargetRestrictions; import forge.game.trigger.TriggerType; import forge.util.collect.FCollection; @@ -337,6 +339,17 @@ public abstract class GameEntity extends GameObject implements IIdentifiable { } } + public boolean canBeEnchantedBy(final Card aura) { + SpellAbility sa = aura.getFirstAttachSpell(); + TargetRestrictions tgt = null; + if (sa != null) { + tgt = sa.getTargetRestrictions(); + } + + return !(hasProtectionFrom(aura) + || ((tgt != null) && !isValid(tgt.getValidTgts(), aura.getController(), aura, sa))); + } + public abstract boolean hasProtectionFrom(final Card source); // Counters! @@ -365,7 +378,7 @@ public abstract class GameEntity extends GameObject implements IIdentifiable { abstract public void setCounters(final Map allCounters); abstract public boolean canReceiveCounters(final CounterType type); - abstract public void addCounter(final CounterType counterType, final int n, final Card source, final boolean applyMultiplier, final boolean fireEvents); + abstract public int addCounter(final CounterType counterType, final int n, final Player source, final boolean applyMultiplier, final boolean fireEvents); abstract public void subtractCounter(final CounterType counterName, final int n); abstract public void clearCounters(); diff --git a/forge-game/src/main/java/forge/game/GameLogFormatter.java b/forge-game/src/main/java/forge/game/GameLogFormatter.java index 9756a7b79b6..6ad9bd1cf8f 100644 --- a/forge-game/src/main/java/forge/game/GameLogFormatter.java +++ b/forge-game/src/main/java/forge/game/GameLogFormatter.java @@ -24,6 +24,7 @@ import forge.game.event.GameEventPlayerPoisoned; import forge.game.event.GameEventScry; import forge.game.event.GameEventSpellAbilityCast; import forge.game.event.GameEventSpellResolved; +import forge.game.event.GameEventSurveil; import forge.game.event.GameEventTurnBegan; import forge.game.event.GameEventTurnPhase; import forge.game.event.IGameEventVisitor; @@ -65,7 +66,24 @@ public class GameLogFormatter extends IGameEventVisitor.Base { return new GameLogEntry(GameLogEntryType.STACK_RESOLVE, scryOutcome); } - + + @Override + public GameLogEntry visit(GameEventSurveil ev) { + String surveilOutcome = ""; + String toLibrary = Lang.nounWithAmount(ev.toLibrary, "card") + " to the top of the library"; + String toGraveyard = Lang.nounWithAmount(ev.toGraveyard, "card") + " to the graveyard"; + + if (ev.toLibrary > 0 && ev.toGraveyard > 0) { + surveilOutcome = ev.player.toString() + " surveiled " + toLibrary + " and " + toGraveyard; + } else if (ev.toGraveyard == 0) { + surveilOutcome = ev.player.toString() + " surveiled " + toLibrary; + } else { + surveilOutcome = ev.player.toString() + " surveiled " + toGraveyard; + } + + return new GameLogEntry(GameLogEntryType.STACK_RESOLVE, surveilOutcome); + } + @Override public GameLogEntry visit(GameEventSpellResolved ev) { String messageForLog = ev.hasFizzled ? ev.spell.getHostCard().getName() + " ability fizzles." : ev.spell.getStackDescription(); diff --git a/forge-game/src/main/java/forge/game/StaticEffect.java b/forge-game/src/main/java/forge/game/StaticEffect.java index 4462acce247..b2c925c748e 100644 --- a/forge-game/src/main/java/forge/game/StaticEffect.java +++ b/forge-game/src/main/java/forge/game/StaticEffect.java @@ -58,9 +58,6 @@ public class StaticEffect { private String chosenType; private Map mapParams = Maps.newTreeMap(); - // for P/T - private final Map originalPT = Maps.newTreeMap(); - // for types private boolean overwriteTypes = false; private boolean keepSupertype = false; @@ -101,7 +98,6 @@ public class StaticEffect { copy.xValueMap = this.xValueMap; copy.chosenType = this.chosenType; copy.mapParams = this.mapParams; - map.fillKeyedMap(copy.originalPT, this.originalPT); copy.overwriteTypes = this.overwriteTypes; copy.keepSupertype = this.keepSupertype; copy.removeSubTypes = this.removeSubTypes; @@ -345,68 +341,6 @@ public class StaticEffect { this.originalKeywords.clear(); } - // original power/toughness - /** - *

- * addOriginalPT. - *

- * - * @param c - * a {@link forge.game.card.Card} object. - * @param power - * a int. - * @param toughness - * a int. - */ - public final void addOriginalPT(final Card c, final int power, final int toughness) { - final String pt = power + "/" + toughness; - if (!this.originalPT.containsKey(c)) { - this.originalPT.put(c, pt); - } - } - - /** - *

- * getOriginalPower. - *

- * - * @param c - * a {@link forge.game.card.Card} object. - * @return a int. - */ - public final int getOriginalPower(final Card c) { - int power = -1; - if (this.originalPT.containsKey(c)) { - power = Integer.parseInt(this.originalPT.get(c).split("/")[0]); - } - return power; - } - - /** - *

- * getOriginalToughness. - *

- * - * @param c - * a {@link forge.game.card.Card} object. - * @return a int. - */ - public final int getOriginalToughness(final Card c) { - int tough = -1; - if (this.originalPT.containsKey(c)) { - tough = Integer.parseInt(this.originalPT.get(c).split("/")[1]); - } - return tough; - } - - /** - *

- * clearAllOriginalPTs. - *

- */ - public final void clearAllOriginalPTs() { - this.originalPT.clear(); - } // should we overwrite types? /** @@ -995,7 +929,7 @@ public class StaticEffect { } // remove set P/T - if (!params.containsKey("CharacteristicDefining") && setPT) { + if (setPT) { affectedCard.removeNewPT(getTimestamp()); } @@ -1036,7 +970,7 @@ public class StaticEffect { } // remove abilities - if (params.containsKey("RemoveAllAbilities")) { + if (params.containsKey("RemoveAllAbilities") || params.containsKey("RemoveIntrinsicAbilities")) { affectedCard.unSuppressCardTraits(); } diff --git a/forge-game/src/main/java/forge/game/ability/AbilityFactory.java b/forge-game/src/main/java/forge/game/ability/AbilityFactory.java index e68d8fb454a..b068872a5b4 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityFactory.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityFactory.java @@ -256,7 +256,7 @@ public final class AbilityFactory { } } - if (api == ApiType.Charm || api == ApiType.GenericChoice) { + if (api == ApiType.Charm || api == ApiType.GenericChoice || api == ApiType.AssignGroup) { final String key = "Choices"; if (mapParams.containsKey(key)) { List names = Lists.newArrayList(mapParams.get(key).split(",")); 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 cb8ae2e50e4..3401a5d6a80 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java @@ -381,7 +381,7 @@ public class AbilityUtils { svarval = ability.getSVar(amount); } if (StringUtils.isBlank(svarval)) { - if ((ability != null) && (ability instanceof SpellAbility) && !(ability instanceof SpellPermanent)) { + if ((ability != null) && (ability instanceof SpellAbility) && !(ability instanceof SpellPermanent) && !amount.equals("ChosenX")) { System.err.printf("SVar '%s' not found in ability, fallback to Card (%s). Ability is (%s)%n", amount, card.getName(), ability); } svarval = card.getSVar(amount); @@ -439,6 +439,10 @@ public class AbilityUtils { players.addAll(game.getPlayers()); val = CardFactoryUtil.playerXCount(players, calcX[1], card); } + else if (hType.equals("YourTeam")) { + players.addAll(player.getYourTeam()); + val = CardFactoryUtil.playerXCount(players, calcX[1], card); + } else if (hType.equals("Opponents")) { players.addAll(player.getOpponents()); val = CardFactoryUtil.playerXCount(players, calcX[1], card); @@ -891,7 +895,11 @@ public class AbilityUtils { final Player player = sa == null ? card.getController() : sa.getActivatingPlayer(); - if (defined.equals("Targeted") || defined.equals("TargetedPlayer")) { + if (defined.equals("TargetedOrController")) { + players.addAll(getDefinedPlayers(card, "Targeted", sa)); + players.addAll(getDefinedPlayers(card, "TargetedController", sa)); + } + else if (defined.equals("Targeted") || defined.equals("TargetedPlayer")) { final SpellAbility saTargeting = sa.getSATargetingPlayer(); if (saTargeting != null) { players.addAll(saTargeting.getTargets().getTargetPlayers()); @@ -1672,7 +1680,10 @@ public class AbilityUtils { res.setZone(null); newSA.setRestrictions(res); // timing restrictions still apply - if (res.checkTimingRestrictions(tgtCard, newSA) && newSA.checkOtherRestrictions()) { + if (res.checkTimingRestrictions(tgtCard, newSA) + // still need to check the other restrictions like Aftermath + && res.checkOtherRestrictions(tgtCard, newSA, controller) + && newSA.checkOtherRestrictions()) { sas.add(newSA); } } diff --git a/forge-game/src/main/java/forge/game/ability/ApiType.java b/forge-game/src/main/java/forge/game/ability/ApiType.java index ad4f48c739c..a5d9572fde2 100644 --- a/forge-game/src/main/java/forge/game/ability/ApiType.java +++ b/forge-game/src/main/java/forge/game/ability/ApiType.java @@ -21,6 +21,7 @@ public enum ApiType { AnimateAll (AnimateAllEffect.class), Attach (AttachEffect.class), Ascend (AscendEffect.class), + AssignGroup (AssignGroupEffect.class), Balance (BalanceEffect.class), BecomeMonarch (BecomeMonarchEffect.class), BecomesBlocked (BecomesBlockedEffect.class), @@ -81,6 +82,7 @@ public enum ApiType { GenericChoice (ChooseGenericEffect.class), Goad (GoadEffect.class), Haunt (HauntEffect.class), + ImmediateTrigger (ImmediateTriggerEffect.class), LookAt (LookAtEffect.class), LoseLife (LifeLoseEffect.class), LosesGame (GameLossEffect.class), @@ -142,6 +144,7 @@ public enum ApiType { SkipTurn (SkipTurnEffect.class), StoreSVar (StoreSVarEffect.class), StoreMap (StoreMapEffect.class), + Surveil (SurveilEffect.class), Tap (TapEffect.class), TapAll (TapAllEffect.class), TapOrUntap (TapOrUntapEffect.class), diff --git a/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java b/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java index 6670b9bab6d..cff15f16e83 100644 --- a/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java +++ b/forge-game/src/main/java/forge/game/ability/SpellAbilityEffect.java @@ -10,6 +10,7 @@ import org.apache.commons.lang3.StringUtils; import com.google.common.collect.Lists; +import forge.GameCommand; import forge.card.CardType; import forge.game.Game; import forge.game.GameObject; @@ -385,4 +386,83 @@ public abstract class SpellAbilityEffect { return eff; } + + protected static void replaceDying(final SpellAbility sa) { + if (sa.hasParam("ReplaceDyingDefined") || sa.hasParam("ReplaceDyingValid")) { + + if (sa.hasParam("ReplaceDyingCondition")) { + // currently there is only one with Kicker + final String condition = sa.getParam("ReplaceDyingCondition"); + if ("Kicked".equals(condition)) { + if (!sa.isKicked()) { + return; + } + } + } + + final Card host = sa.getHostCard(); + final Player controller = sa.getActivatingPlayer(); + final Game game = host.getGame(); + String zone = sa.getParamOrDefault("ReplaceDyingZone", "Exile"); + + CardCollection cards = null; + + if (sa.hasParam("ReplaceDyingDefined")) { + cards = AbilityUtils.getDefinedCards(host, sa.getParam("ReplaceDyingDefined"), sa); + // no cards, no need for Effect + if (cards.isEmpty()) { + return; + } + } + + // build an Effect with that infomation + String name = host.getName() + "'s Effect"; + + final Card eff = createEffect(host, controller, name, host.getImageKey()); + if (cards != null) { + eff.addRemembered(cards); + } + + String valid = sa.getParamOrDefault("ReplaceDyingValid", "Card.IsRemembered"); + + String repeffstr = "Event$ Moved | ValidCard$ " + valid + + "| Origin$ Battlefield | Destination$ Graveyard " + + "| Description$ If the creature would die this turn, exile it instead."; + String effect = "DB$ ChangeZone | Defined$ ReplacedCard | Origin$ Battlefield | Destination$ " + zone; + + ReplacementEffect re = ReplacementHandler.parseReplacement(repeffstr, eff, true); + re.setLayer(ReplacementLayer.Other); + + re.setOverridingAbility(AbilityFactory.getAbility(effect, eff)); + eff.addReplacementEffect(re); + + if (cards != null) { + // Add forgot trigger + addForgetOnMovedTrigger(eff, "Battlefield"); + } + + // Copy text changes + if (sa.isIntrinsic()) { + eff.copyChangedTextFrom(host); + } + + final GameCommand endEffect = new GameCommand() { + private static final long serialVersionUID = -5861759814760561373L; + + @Override + public void run() { + game.getAction().exile(eff, null); + } + }; + + game.getEndOfTurn().addUntil(endEffect); + + eff.updateStateForView(); + + // TODO: Add targeting to the effect so it knows who it's dealing with + game.getTriggerHandler().suppressMode(TriggerType.ChangesZone); + game.getAction().moveTo(ZoneType.Command, eff, sa); + game.getTriggerHandler().clearSuppression(TriggerType.ChangesZone); + } + } } diff --git a/forge-game/src/main/java/forge/game/ability/effects/ActivateAbilityEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ActivateAbilityEffect.java index fc0aae36d17..3114cf48501 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ActivateAbilityEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ActivateAbilityEffect.java @@ -12,6 +12,7 @@ import forge.util.Lang; import org.apache.commons.lang3.StringUtils; +import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; import java.util.List; @@ -49,7 +50,8 @@ public class ActivateAbilityEffect extends SpellAbilityEffect { if (possibleAb.isEmpty()) { continue; } - SpellAbility manaAb = p.getController().chooseSingleSpellForEffect(possibleAb, sa, "Choose a mana ability:"); + SpellAbility manaAb = p.getController().chooseSingleSpellForEffect( + possibleAb, sa, "Choose a mana ability:", ImmutableMap.of()); p.getController().playChosenSpellAbility(manaAb); } } diff --git a/forge-game/src/main/java/forge/game/ability/effects/AnimateAllEffect.java b/forge-game/src/main/java/forge/game/ability/effects/AnimateAllEffect.java index 17b5a336eb1..0f3219c7e55 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/AnimateAllEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/AnimateAllEffect.java @@ -25,6 +25,8 @@ import java.util.Arrays; import java.util.List; import java.util.Map; +import com.google.common.collect.ImmutableList; + public class AnimateAllEffect extends AnimateEffectBase { @Override @@ -144,6 +146,9 @@ public class AnimateAllEffect extends AnimateEffectBase { list = CardLists.getValidCards(list, valid.split(","), host.getController(), host, sa); + boolean removeAll = sa.hasParam("RemoveAllAbilities"); + boolean removeIntrinsic = sa.hasParam("RemoveIntrinsicAbilities"); + for (final Card c : list) { doAnimate(c, sa, power, toughness, types, removeTypes, finalDesc, keywords, removeKeywords, hiddenKeywords, timestamp); @@ -161,11 +166,14 @@ public class AnimateAllEffect extends AnimateEffectBase { // remove abilities final List removedAbilities = new ArrayList(); - if (sa.hasParam("OverwriteAbilities") || sa.hasParam("RemoveAllAbilities")) { + if (sa.hasParam("OverwriteAbilities") || removeAll || removeIntrinsic) { for (final SpellAbility ab : c.getSpellAbilities()) { if (ab.isAbility()) { - c.removeSpellAbility(ab); - removedAbilities.add(ab); + if (removeAll + || (ab.isIntrinsic() && removeIntrinsic && !ab.isBasicLandAbility())) { + ab.setTemporarilySuppressed(true); + removedAbilities.add(ab); + } } } } @@ -190,19 +198,24 @@ public class AnimateAllEffect extends AnimateEffectBase { // suppress triggers from the animated card final List removedTriggers = new ArrayList(); - if (sa.hasParam("OverwriteTriggers") || sa.hasParam("RemoveAllAbilities")) { + if (sa.hasParam("OverwriteTriggers") || removeAll || removeIntrinsic) { final FCollectionView triggersToRemove = c.getTriggers(); for (final Trigger trigger : triggersToRemove) { - trigger.setSuppressed(true); + if (removeIntrinsic && !trigger.isIntrinsic()) { + continue; + } + trigger.setSuppressed(true); // why this not TemporarilySuppressed? removedTriggers.add(trigger); } } // suppress static abilities from the animated card final List removedStatics = new ArrayList(); - if (sa.hasParam("OverwriteStatics") || sa.hasParam("RemoveAllAbilities")) { - final FCollectionView staticsToRemove = c.getStaticAbilities(); - for (final StaticAbility stAb : staticsToRemove) { + if (sa.hasParam("OverwriteStatics") || removeAll || removeIntrinsic) { + for (final StaticAbility stAb : c.getStaticAbilities()) { + if (removeIntrinsic && !stAb.isIntrinsic()) { + continue; + } stAb.setTemporarilySuppressed(true); removedStatics.add(stAb); } @@ -210,9 +223,11 @@ public class AnimateAllEffect extends AnimateEffectBase { // suppress static abilities from the animated card final List removedReplacements = new ArrayList(); - if (sa.hasParam("OverwriteReplacements") || sa.hasParam("RemoveAllAbilities")) { - final FCollectionView replacementsToRemove = c.getReplacementEffects(); - for (final ReplacementEffect re : replacementsToRemove) { + if (sa.hasParam("OverwriteReplacements") || removeAll || removeIntrinsic) { + for (final ReplacementEffect re : c.getReplacementEffects()) { + if (removeIntrinsic && !re.isIntrinsic()) { + continue; + } re.setTemporarilySuppressed(true); removedReplacements.add(re); } @@ -234,8 +249,11 @@ public class AnimateAllEffect extends AnimateEffectBase { public void run() { doUnanimate(c, sa, finalDesc, hiddenKeywords, addedAbilities, addedTriggers, addedReplacements, - false, removedAbilities, timestamp); + ImmutableList.of(), timestamp); + for (final SpellAbility sa : removedAbilities) { + sa.setTemporarilySuppressed(false); + } // give back suppressed triggers for (final Trigger t : removedTriggers) { t.setSuppressed(false); diff --git a/forge-game/src/main/java/forge/game/ability/effects/AnimateEffect.java b/forge-game/src/main/java/forge/game/ability/effects/AnimateEffect.java index e2de4258f82..59c9f4a5a93 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/AnimateEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/AnimateEffect.java @@ -18,7 +18,6 @@ import forge.game.spellability.SpellAbility; import forge.game.staticability.StaticAbility; import forge.game.trigger.Trigger; import forge.game.trigger.TriggerHandler; -import forge.util.collect.FCollectionView; import java.util.Arrays; import java.util.List; @@ -162,21 +161,20 @@ public class AnimateEffect extends AnimateEffectBase { boolean clearAbilities = sa.hasParam("OverwriteAbilities"); boolean clearSpells = sa.hasParam("OverwriteSpells"); boolean removeAll = sa.hasParam("RemoveAllAbilities"); + boolean removeIntrinsic = sa.hasParam("RemoveIntrinsicAbilities"); if (clearAbilities || clearSpells || removeAll) { for (final SpellAbility ab : c.getSpellAbilities()) { - if (removeAll || (ab.isAbility() && clearAbilities) + if (removeAll + || (ab.isIntrinsic() && removeIntrinsic && !ab.isBasicLandAbility()) + || (ab.isAbility() && clearAbilities) || (ab.isSpell() && clearSpells)) { + ab.setTemporarilySuppressed(true); removedAbilities.add(ab); } } } - // Can't rmeove SAs in foreach loop that finds them - for (final SpellAbility ab : removedAbilities) { - c.removeSpellAbility(ab); - } - if (sa.hasParam("RemoveThisAbility") && !removedAbilities.contains(sa)) { c.removeSpellAbility(sa); removedAbilities.add(sa); @@ -215,20 +213,23 @@ public class AnimateEffect extends AnimateEffectBase { // suppress triggers from the animated card final List removedTriggers = Lists.newArrayList(); - if (sa.hasParam("OverwriteTriggers") || removeAll) { - final FCollectionView triggersToRemove = c.getTriggers(); - for (final Trigger trigger : triggersToRemove) { - trigger.setSuppressed(true); + if (sa.hasParam("OverwriteTriggers") || removeAll || removeIntrinsic) { + for (final Trigger trigger : c.getTriggers()) { + if (removeIntrinsic && !trigger.isIntrinsic()) { + continue; + } + trigger.setSuppressed(true); // why this not TemporarilySuppressed? removedTriggers.add(trigger); } } // give static abilities (should only be used by cards to give // itself a static ability) + final List addedStaticAbilities = Lists.newArrayList(); if (stAbs.size() > 0) { for (final String s : stAbs) { final String actualAbility = source.getSVar(s); - c.addStaticAbility(actualAbility); + addedStaticAbilities.add(c.addStaticAbility(actualAbility)); } } @@ -248,9 +249,11 @@ public class AnimateEffect extends AnimateEffectBase { // suppress static abilities from the animated card final List removedStatics = Lists.newArrayList(); - if (sa.hasParam("OverwriteStatics") || removeAll) { - final FCollectionView staticsToRemove = c.getStaticAbilities(); - for (final StaticAbility stAb : staticsToRemove) { + if (sa.hasParam("OverwriteStatics") || removeAll || removeIntrinsic) { + for (final StaticAbility stAb : c.getStaticAbilities()) { + if (removeIntrinsic && !stAb.isIntrinsic()) { + continue; + } stAb.setTemporarilySuppressed(true); removedStatics.add(stAb); } @@ -258,8 +261,11 @@ public class AnimateEffect extends AnimateEffectBase { // suppress static abilities from the animated card final List removedReplacements = Lists.newArrayList(); - if (sa.hasParam("OverwriteReplacements") || removeAll) { + if (sa.hasParam("OverwriteReplacements") || removeAll || removeIntrinsic) { for (final ReplacementEffect re : c.getReplacementEffects()) { + if (removeIntrinsic && !re.isIntrinsic()) { + continue; + } re.setTemporarilySuppressed(true); removedReplacements.add(re); } @@ -272,8 +278,6 @@ public class AnimateEffect extends AnimateEffectBase { } } - final boolean givesStAbs = (stAbs.size() > 0); - final GameCommand unanimate = new GameCommand() { private static final long serialVersionUID = -5861759814760561373L; @@ -281,9 +285,13 @@ public class AnimateEffect extends AnimateEffectBase { public void run() { doUnanimate(c, sa, finalDesc, hiddenKeywords, addedAbilities, addedTriggers, addedReplacements, - givesStAbs, removedAbilities, timestamp); + addedStaticAbilities, timestamp); game.fireEvent(new GameEventCardStatsChanged(c)); + + for (final SpellAbility sa : removedAbilities) { + sa.setTemporarilySuppressed(false); + } // give back suppressed triggers for (final Trigger t : removedTriggers) { t.setSuppressed(false); @@ -458,6 +466,8 @@ public class AnimateEffect extends AnimateEffectBase { sb.append(" until ").append(host).append(" leaves the battlefield."); } else if (sa.hasParam("UntilYourNextUpkeep")) { sb.append(" until your next upkeep."); + } else if (sa.hasParam("UntilYourNextTurn")) { + sb.append(" until your next turn."); } else if (sa.hasParam("UntilControllerNextUntap")) { sb.append(" until its controller's next untap step."); } else { diff --git a/forge-game/src/main/java/forge/game/ability/effects/AnimateEffectBase.java b/forge-game/src/main/java/forge/game/ability/effects/AnimateEffectBase.java index 627e5e6e84b..e6f814bb780 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/AnimateEffectBase.java +++ b/forge-game/src/main/java/forge/game/ability/effects/AnimateEffectBase.java @@ -24,11 +24,10 @@ import forge.game.replacement.ReplacementEffect; import forge.game.spellability.SpellAbility; import forge.game.staticability.StaticAbility; import forge.game.trigger.Trigger; -import java.util.ArrayList; import java.util.List; public abstract class AnimateEffectBase extends SpellAbilityEffect { - void doAnimate(final Card c, final SpellAbility sa, final Integer power, final Integer toughness, + public static void doAnimate(final Card c, final SpellAbility sa, final Integer power, final Integer toughness, final CardType addType, final CardType removeType, final String colors, final List keywords, final List removeKeywords, final List hiddenKeywords, final long timestamp) { @@ -36,15 +35,19 @@ public abstract class AnimateEffectBase extends SpellAbilityEffect { boolean removeSuperTypes = false; boolean removeCardTypes = false; boolean removeSubTypes = false; + boolean removeLandTypes = false; boolean removeCreatureTypes = false; boolean removeArtifactTypes = false; + boolean removeEnchantmentTypes = false; if (sa.hasParam("OverwriteTypes")) { removeSuperTypes = true; removeCardTypes = true; removeSubTypes = true; + removeLandTypes = true; removeCreatureTypes = true; removeArtifactTypes = true; + removeEnchantmentTypes = true; } if (sa.hasParam("KeepSupertypes")) { @@ -57,6 +60,10 @@ public abstract class AnimateEffectBase extends SpellAbilityEffect { if (sa.hasParam("KeepSubtypes")) { removeSubTypes = false; + removeLandTypes = false; + removeCreatureTypes = false; + removeArtifactTypes = false; + removeEnchantmentTypes = false; } if (sa.hasParam("RemoveSuperTypes")) { @@ -71,23 +78,30 @@ public abstract class AnimateEffectBase extends SpellAbilityEffect { removeSubTypes = true; } + if (sa.hasParam("RemoveLandTypes")) { + removeCreatureTypes = true; + } if (sa.hasParam("RemoveCreatureTypes")) { removeCreatureTypes = true; } - if (sa.hasParam("RemoveArtifactTypes")) { removeArtifactTypes = true; } + if (sa.hasParam("RemoveEnchantmentTypes")) { + removeEnchantmentTypes = true; + } + if ((power != null) || (toughness != null)) { c.addNewPT(power, toughness, timestamp); } if (!addType.isEmpty() || !removeType.isEmpty() || removeCreatureTypes) { c.addChangedCardTypes(addType, removeType, removeSuperTypes, removeCardTypes, removeSubTypes, - removeCreatureTypes, removeArtifactTypes, timestamp); + removeLandTypes, removeCreatureTypes, removeArtifactTypes, removeEnchantmentTypes, timestamp); } - c.addChangedCardKeywords(keywords, removeKeywords, sa.hasParam("RemoveAllAbilities"), timestamp); + c.addChangedCardKeywords(keywords, removeKeywords, + sa.hasParam("RemoveAllAbilities"), sa.hasParam("RemoveIntrinsicAbilities"), timestamp); for (final String k : hiddenKeywords) { c.addHiddenExtrinsicKeyword(k); @@ -114,10 +128,10 @@ public abstract class AnimateEffectBase extends SpellAbilityEffect { * @param timestamp * a long. */ - void doUnanimate(final Card c, SpellAbility sa, final String colorDesc, + static void doUnanimate(final Card c, SpellAbility sa, final String colorDesc, final List hiddenKeywords, final List addedAbilities, final List addedTriggers, final List addedReplacements, - final boolean givesStAbs, final List removedAbilities, final long timestamp) { + final List addedStaticAbilities, final long timestamp) { if (sa.hasParam("LastsIndefinitely")) { return; @@ -127,16 +141,7 @@ public abstract class AnimateEffectBase extends SpellAbilityEffect { c.removeChangedCardKeywords(timestamp); - // remove all static abilities - if (givesStAbs) { - c.setStaticAbilities(new ArrayList()); - } - - if (sa.hasParam("Types") || sa.hasParam("RemoveTypes") - || sa.hasParam("RemoveCreatureTypes") || sa.hasParam("RemoveArtifactTypes")) { - c.removeChangedCardTypes(timestamp); - } - + c.removeChangedCardTypes(timestamp); c.removeColor(timestamp); for (final String k : hiddenKeywords) { @@ -147,10 +152,6 @@ public abstract class AnimateEffectBase extends SpellAbilityEffect { c.removeSpellAbility(saAdd); } - for (final SpellAbility saRem : removedAbilities) { - c.addSpellAbility(saRem); - } - for (final Trigger t : addedTriggers) { c.removeTrigger(t); } @@ -159,6 +160,10 @@ public abstract class AnimateEffectBase extends SpellAbilityEffect { c.removeReplacementEffect(rep); } + for (final StaticAbility stAb : addedStaticAbilities) { + c.removeStaticAbility(stAb); + } + // any other unanimate cleanup if (!c.isCreature()) { c.unEquipAllCards(); diff --git a/forge-game/src/main/java/forge/game/ability/effects/AssignGroupEffect.java b/forge-game/src/main/java/forge/game/ability/effects/AssignGroupEffect.java new file mode 100644 index 00000000000..eb53cecf76b --- /dev/null +++ b/forge-game/src/main/java/forge/game/ability/effects/AssignGroupEffect.java @@ -0,0 +1,74 @@ +package forge.game.ability.effects; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +import com.google.common.collect.ArrayListMultimap; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Multimap; + +import forge.game.Game; +import forge.game.GameObject; +import forge.game.ability.AbilityUtils; +import forge.game.ability.SpellAbilityEffect; +import forge.game.card.Card; +import forge.game.player.Player; +import forge.game.spellability.SpellAbility; + +public class AssignGroupEffect extends SpellAbilityEffect { + + /* (non-Javadoc) + * @see forge.game.ability.SpellAbilityEffect#getStackDescription(forge.game.spellability.SpellAbility) + */ + @Override + protected String getStackDescription(SpellAbility sa) { + return sa.getDescription(); + } + + /* + * (non-Javadoc) + * @see forge.game.ability.SpellAbilityEffect#resolve(forge.game.spellability.SpellAbility) + */ + @Override + public void resolve(SpellAbility sa) { + final Card host = sa.getHostCard(); + final Game game = host.getGame(); + + List defined = getDefinedOrTargeted(sa, "Defined"); + + final List abilities = Lists.newArrayList(sa.getAdditionalAbilityList("Choices")); + + Player chooser = sa.getActivatingPlayer(); + if (sa.hasParam("Chooser")) { + final String choose = sa.getParam("Chooser"); + chooser = AbilityUtils.getDefinedPlayers(sa.getHostCard(), choose, sa).get(0); + } + + Multimap result = ArrayListMultimap.create(); + + for (GameObject g : defined) { + final String title = "Choose ability for " + g.toString(); + Map params = Maps.newHashMap(); + params.put("Affected", g); + + result.put(chooser.getController().chooseSingleSpellForEffect(abilities, sa, title, params), g); + } + + // in order of choice list + for (SpellAbility s : abilities) { + // is that in Player order? + Collection l = result.get(s); + + host.addRemembered(l); + AbilityUtils.resolve(s); + host.removeRemembered(l); + + // this will refresh continuous abilities for players and permanents. + game.getAction().checkStaticAbilities(); + game.getTriggerHandler().resetActiveTriggers(false); + } + } + +} diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneAllEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneAllEffect.java index 57c6a945fdf..4ed23fa7392 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneAllEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneAllEffect.java @@ -156,7 +156,7 @@ public class ChangeZoneAllEffect extends SpellAbilityEffect { // Auras without Candidates stay in their current location if (c.isAura()) { final SpellAbility saAura = c.getFirstAttachSpell(); - if (!saAura.getTargetRestrictions().hasCandidates(saAura, false)) { + if (saAura != null && !saAura.getTargetRestrictions().hasCandidates(saAura, false)) { continue; } } diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java index df665e7a7cb..749b72a277e 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java @@ -6,7 +6,9 @@ import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.common.collect.Maps; +import forge.GameCommand; import forge.card.CardStateName; +import forge.card.CardType; import forge.game.Game; import forge.game.GameEntity; import forge.game.GameObject; @@ -32,6 +34,7 @@ import forge.util.collect.*; import forge.util.Lang; import forge.util.MessageUtil; +import java.util.Arrays; import java.util.List; import java.util.Map; @@ -484,7 +487,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect { } if (sa.hasParam("WithCounters")) { String[] parse = sa.getParam("WithCounters").split("_"); - tgtC.addEtbCounter(CounterType.getType(parse[0]), Integer.parseInt(parse[1]), hostCard); + tgtC.addEtbCounter(CounterType.getType(parse[0]), Integer.parseInt(parse[1]), player); } if (sa.hasParam("GainControl")) { if (sa.hasParam("NewController")) { @@ -552,9 +555,11 @@ public class ChangeZoneEffect extends SpellAbilityEffect { // location if (tgtC.isAura()) { final SpellAbility saAura = tgtC.getFirstAttachSpell(); - saAura.setActivatingPlayer(sa.getActivatingPlayer()); - if (!saAura.getTargetRestrictions().hasCandidates(saAura, false)) { - continue; + if (saAura != null) { + saAura.setActivatingPlayer(sa.getActivatingPlayer()); + if (!saAura.getTargetRestrictions().hasCandidates(saAura, false)) { + continue; + } } } @@ -865,7 +870,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect { final boolean champion = sa.hasParam("Champion"); final boolean forget = sa.hasParam("ForgetChanged"); final boolean imprint = sa.hasParam("Imprint"); - final String selectPrompt = sa.hasParam("SelectPrompt") ? sa.getParam("SelectPrompt") : MessageUtil.formatMessage("Select a card from {player's} " + Lang.joinHomogenous(origin).toLowerCase(), decider, player); + String selectPrompt = sa.hasParam("SelectPrompt") ? sa.getParam("SelectPrompt") : MessageUtil.formatMessage("Select a card from {player's} " + Lang.joinHomogenous(origin).toLowerCase(), decider, player); final String totalcmc = sa.getParam("WithTotalCMC"); int totcmc = AbilityUtils.calculateAmount(source, totalcmc, sa); @@ -874,7 +879,20 @@ public class ChangeZoneEffect extends SpellAbilityEffect { CardCollection chosenCards = new CardCollection(); // only multi-select if player can select more than one if (changeNum > 1 && allowMultiSelect(decider, sa)) { - for (Card card : decider.getController().chooseCardsForZoneChange(destination, origin, sa, fetchList, delayedReveal, selectPrompt, decider)) { + List selectedCards; + if (! sa.hasParam("SelectPrompt")) { + // new default messaging for multi select + if (fetchList.size() > changeNum) { + selectPrompt = MessageUtil.formatMessage("Select up to " + changeNum + " cards from {player's} " + Lang.joinHomogenous(origin).toLowerCase(), decider, player); + } else { + selectPrompt = MessageUtil.formatMessage("Select cards from {player's} " + Lang.joinHomogenous(origin).toLowerCase(), decider, player); + } + } + // ensure that selection is within maximum allowed changeNum + do { + selectedCards = decider.getController().chooseCardsForZoneChange(destination, origin, sa, fetchList, delayedReveal, selectPrompt, decider); + } while (selectedCards != null && selectedCards.size() > changeNum); + for (Card card : selectedCards) { chosenCards.add(card); }; // maybe prompt the user if they selected fewer than the maximum possible? @@ -1101,11 +1119,49 @@ public class ChangeZoneEffect extends SpellAbilityEffect { } } } + // need to be facedown before it hits the battlefield in case of Replacement Effects or Trigger + if (sa.hasParam("FaceDown") && ZoneType.Battlefield.equals(destination)) { + c.setState(CardStateName.FaceDown, true); + + // set New Pt doesn't work because this values need to be copyable for clone effects + if (sa.hasParam("FaceDownPower") || sa.hasParam("FaceDownToughness")) { + if (sa.hasParam("FaceDownPower")) { + c.setBasePower(AbilityUtils.calculateAmount( + source, sa.getParam("FaceDownPower"), sa)); + } + if (sa.hasParam("FaceDownToughness")) { + c.setBaseToughness(AbilityUtils.calculateAmount( + source, sa.getParam("FaceDownToughness"), sa)); + } + } + + if (sa.hasParam("FaceDownAddType")) { + CardType t = new CardType(c.getCurrentState().getType()); + t.addAll(Arrays.asList(sa.getParam("FaceDownAddType").split(","))); + c.getCurrentState().setType(t); + } + + if (sa.hasParam("FaceDownPower") || sa.hasParam("FaceDownToughness") + || sa.hasParam("FaceDownAddType")) { + final GameCommand unanimate = new GameCommand() { + private static final long serialVersionUID = 8853789549297846163L; + + @Override + public void run() { + c.clearStates(CardStateName.FaceDown, true); + } + }; + + c.addFaceupCommand(unanimate); + } + } movedCard = game.getAction().moveTo(c.getController().getZone(destination), c, sa, null); if (sa.hasParam("Tapped")) { movedCard.setTapped(true); } - if (sa.hasParam("FaceDown")) { + + // need to do that again? + if (sa.hasParam("FaceDown") && !ZoneType.Battlefield.equals(destination)) { movedCard.setState(CardStateName.FaceDown, true); } movedCard.setTimestamp(ts); @@ -1181,7 +1237,6 @@ public class ChangeZoneEffect extends SpellAbilityEffect { && !sa.hasParam("DifferentNames") && !sa.hasParam("DifferentCMC") && !sa.hasParam("AtRandom") - && !sa.hasParam("ChangeNum") // TODO: doesn't work with card number limits, e.g. Doomsday && (!sa.hasParam("Defined") || sa.hasParam("ChooseFromDefined")) && sa.getParam("WithTotalCMC") == null; } diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChooseCardNameEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChooseCardNameEffect.java index 7e35b96c0ca..4938ecb370e 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChooseCardNameEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChooseCardNameEffect.java @@ -105,17 +105,8 @@ public class ChooseCardNameEffect extends SpellAbilityEffect { final String message = validDesc.equals("card") ? "Name a card" : "Name a " + validDesc + " card."; Predicate cpp = Predicates.alwaysTrue(); - if ( StringUtils.containsIgnoreCase(valid, "nonland") ) { - cpp = CardFacePredicates.Presets.IS_NON_LAND; - } - if ( StringUtils.containsIgnoreCase(valid, "nonbasic") ) { - cpp = Predicates.not(CardFacePredicates.Presets.IS_BASIC_LAND); - } - - if ( StringUtils.containsIgnoreCase(valid, "noncreature") ) { - cpp = Predicates.not(CardFacePredicates.Presets.IS_CREATURE); - } else if ( StringUtils.containsIgnoreCase(valid, "creature") ) { - cpp = CardFacePredicates.Presets.IS_CREATURE; + if (sa.hasParam("ValidCards")) { + cpp = CardFacePredicates.valid(valid); } chosen = p.getController().chooseCardName(sa, cpp, valid, message); diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChooseGenericEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChooseGenericEffect.java index 7cb835542b6..23ab1ad6b46 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChooseGenericEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChooseGenericEffect.java @@ -1,5 +1,6 @@ package forge.game.ability.effects; +import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; import forge.game.ability.AbilityUtils; import forge.game.ability.SpellAbilityEffect; @@ -65,7 +66,8 @@ public class ChooseGenericEffect extends SpellAbilityEffect { int idxChosen = MyRandom.getRandom().nextInt(abilities.size()); chosenSA = abilities.get(idxChosen); } else { - chosenSA = p.getController().chooseSingleSpellForEffect(abilities, sa, "Choose one"); + chosenSA = p.getController().chooseSingleSpellForEffect(abilities, sa, "Choose one", + ImmutableMap.of()); } if (chosenSA != null) { diff --git a/forge-game/src/main/java/forge/game/ability/effects/CloneEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CloneEffect.java index 977db72b19d..aa0ab0f4215 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CloneEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CloneEffect.java @@ -64,11 +64,15 @@ public class CloneEffect extends SpellAbilityEffect { Card cardToCopy = null; if (sa.hasParam("Choices")) { - CardCollectionView choices = game.getCardsIn(ZoneType.Battlefield); + ZoneType choiceZone = ZoneType.Battlefield; + if (sa.hasParam("ChoiceZone")) { + choiceZone = ZoneType.smartValueOf(sa.getParam("ChoiceZone")); + } + CardCollectionView choices = game.getCardsIn(choiceZone); choices = CardLists.getValidCards(choices, sa.getParam("Choices"), activator, host); String title = sa.hasParam("ChoiceTitle") ? sa.getParam("ChoiceTitle") : "Choose a card "; - cardToCopy = activator.getController().chooseSingleEntityForEffect(choices, sa, title, true); + cardToCopy = activator.getController().chooseSingleEntityForEffect(choices, sa, title, false); } else if (sa.hasParam("Defined")) { List cloneSources = AbilityUtils.getDefinedCards(host, sa.getParam("Defined"), sa); if (!cloneSources.isEmpty()) { @@ -213,6 +217,9 @@ public class CloneEffect extends SpellAbilityEffect { else if (duration.equals("UntilYourNextTurn")) { game.getCleanup().addUntil(host.getController(), unclone); } + else if (duration.equals("UntilUnattached")) { + sa.getHostCard().addUnattachCommand(unclone); + } } game.fireEvent(new GameEventCardStatsChanged(tgtCard)); } // cloneResolve diff --git a/forge-game/src/main/java/forge/game/ability/effects/CopyPermanentEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CopyPermanentEffect.java index 72678bb72a6..2c026736c05 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CopyPermanentEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CopyPermanentEffect.java @@ -5,7 +5,6 @@ import com.google.common.base.Predicates; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; -import com.google.common.collect.Maps; import forge.ImageKeys; import forge.StaticData; @@ -22,6 +21,7 @@ import forge.game.card.CardCollectionView; import forge.game.card.CardFactory; import forge.game.card.CardFactoryUtil; import forge.game.card.CardLists; +import forge.game.card.token.TokenInfo; import forge.game.combat.Combat; import forge.game.event.GameEventCombatChanged; import forge.game.player.Player; @@ -37,10 +37,10 @@ import forge.util.collect.FCollectionView; import forge.util.PredicateString.StringOp; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.tuple.Pair; import java.util.Arrays; import java.util.List; -import java.util.Map; public class CopyPermanentEffect extends SpellAbilityEffect { @@ -167,12 +167,18 @@ public class CopyPermanentEffect extends SpellAbilityEffect { } } } else if (sa.hasParam("Choices")) { + Player chooser = activator; + if (sa.hasParam("Chooser")) { + final String choose = sa.getParam("Chooser"); + chooser = AbilityUtils.getDefinedPlayers(sa.getHostCard(), choose, sa).get(0); + } + CardCollectionView choices = game.getCardsIn(ZoneType.Battlefield); choices = CardLists.getValidCards(choices, sa.getParam("Choices"), activator, host); if (!choices.isEmpty()) { String title = sa.hasParam("ChoiceTitle") ? sa.getParam("ChoiceTitle") : "Choose a card "; - Card choosen = activator.getController().chooseSingleEntityForEffect(choices, sa, title, false); + Card choosen = chooser.getController().chooseSingleEntityForEffect(choices, sa, title, false); if (choosen != null) { tgtCards.add(choosen); @@ -186,29 +192,17 @@ public class CopyPermanentEffect extends SpellAbilityEffect { for (final Card c : tgtCards) { if (!sa.usesTargeting() || c.canBeTargetedBy(sa)) { - int multiplier = numCopies; - - final Map repParams = Maps.newHashMap(); - repParams.put("Event", "CreateToken"); - repParams.put("Affected", controller); - repParams.put("TokenNum", multiplier); - repParams.put("EffectOnly", true); + Pair result = TokenInfo.calculateMultiplier( + game, controller, true, numCopies); - switch (game.getReplacementHandler().run(repParams)) { - case NotReplaced: - break; - case Updated: { - multiplier = (int) repParams.get("TokenNum"); - break; - } - default: - return ; + if (result.getRight() <= 0) { + return; } - final List crds = Lists.newArrayListWithCapacity(multiplier); + final List crds = Lists.newArrayListWithCapacity(result.getRight()); - for (int i = 0; i < multiplier; i++) { - final Card copy = CardFactory.copyCopiableCharacteristics(c, activator); + for (int i = 0; i < result.getRight(); i++) { + final Card copy = CardFactory.copyCopiableCharacteristics(c, result.getLeft()); copy.setToken(true); copy.setCopiedPermanent(c); // add keywords from sa @@ -337,7 +331,7 @@ public class CopyPermanentEffect extends SpellAbilityEffect { } } // set the controller before move to play: Crafty Cutpurse - copy.setController(controller, 0); + copy.setController(result.getLeft(), 0); copy.updateStateForView(); // Temporarily register triggers of an object created with CopyPermanent @@ -350,7 +344,7 @@ public class CopyPermanentEffect extends SpellAbilityEffect { copyInPlay.setCloneOrigin(host); sa.getHostCard().addClone(copyInPlay); if (!pumpKeywords.isEmpty()) { - copyInPlay.addChangedCardKeywords(pumpKeywords, Lists.newArrayList(), false, timestamp); + copyInPlay.addChangedCardKeywords(pumpKeywords, Lists.newArrayList(), false, false, timestamp); } crds.add(copyInPlay); if (sa.hasParam("RememberCopied")) { diff --git a/forge-game/src/main/java/forge/game/ability/effects/CopySpellAbilityEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CopySpellAbilityEffect.java index aa4d49c6080..116b5aae57b 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CopySpellAbilityEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CopySpellAbilityEffect.java @@ -1,5 +1,6 @@ package forge.game.ability.effects; +import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; @@ -83,8 +84,9 @@ public class CopySpellAbilityEffect extends SpellAbilityEffect { for (int multi = 0; multi < spellCount && !tgtSpells.isEmpty(); multi++) { String prompt = "Select " + Lang.getOrdinal(multi + 1) + " spell to copy to stack"; - SpellAbility chosen = controller.getController().chooseSingleSpellForEffect(tgtSpells, sa, prompt); - SpellAbility copiedSpell = CardFactory.copySpellAbilityAndSrcCard(card, chosen.getHostCard(), chosen, true); + SpellAbility chosen = controller.getController().chooseSingleSpellForEffect(tgtSpells, sa, prompt, + ImmutableMap.of()); + SpellAbility copiedSpell = CardFactory.copySpellAbilityAndPossiblyHost(card, chosen.getHostCard(), chosen, true); copiedSpell.getHostCard().setController(card.getController(), card.getGame().getNextTimestamp()); copiedSpell.setActivatingPlayer(controller); copies.add(copiedSpell); @@ -92,7 +94,8 @@ public class CopySpellAbilityEffect extends SpellAbilityEffect { } } else if (sa.hasParam("CopyForEachCanTarget")) { - SpellAbility chosenSA = controller.getController().chooseSingleSpellForEffect(tgtSpells, sa, "Select a spell to copy"); + SpellAbility chosenSA = controller.getController().chooseSingleSpellForEffect(tgtSpells, sa, + "Select a spell to copy", ImmutableMap.of()); chosenSA.setActivatingPlayer(controller); // Find subability or rootability that has targets SpellAbility targetedSA = chosenSA; @@ -114,7 +117,7 @@ public class CopySpellAbilityEffect extends SpellAbilityEffect { mayChooseNewTargets = false; for (GameEntity o : candidates) { - SpellAbility copy = CardFactory.copySpellAbilityAndSrcCard(card, chosenSA.getHostCard(), chosenSA, true); + SpellAbility copy = CardFactory.copySpellAbilityAndPossiblyHost(card, chosenSA.getHostCard(), chosenSA, true); resetFirstTargetOnCopy(copy, o, targetedSA); copies.add(copy); } @@ -140,22 +143,23 @@ public class CopySpellAbilityEffect extends SpellAbilityEffect { valid.remove(originalTarget); mayChooseNewTargets = false; for (final Card c : valid) { - SpellAbility copy = CardFactory.copySpellAbilityAndSrcCard(card, chosenSA.getHostCard(), chosenSA, true); + SpellAbility copy = CardFactory.copySpellAbilityAndPossiblyHost(card, chosenSA.getHostCard(), chosenSA, true); resetFirstTargetOnCopy(copy, c, targetedSA); copies.add(copy); } for (final Player p : players) { - SpellAbility copy = CardFactory.copySpellAbilityAndSrcCard(card, chosenSA.getHostCard(), chosenSA, true); + SpellAbility copy = CardFactory.copySpellAbilityAndPossiblyHost(card, chosenSA.getHostCard(), chosenSA, true); resetFirstTargetOnCopy(copy, p, targetedSA); copies.add(copy); } } } else { - SpellAbility chosenSA = controller.getController().chooseSingleSpellForEffect(tgtSpells, sa, "Select a spell to copy"); + SpellAbility chosenSA = controller.getController().chooseSingleSpellForEffect(tgtSpells, sa, + "Select a spell to copy", ImmutableMap.of()); chosenSA.setActivatingPlayer(controller); for (int i = 0; i < amount; i++) { - copies.add(CardFactory.copySpellAbilityAndSrcCard(card, chosenSA.getHostCard(), chosenSA, true)); + copies.add(CardFactory.copySpellAbilityAndPossiblyHost(card, chosenSA.getHostCard(), chosenSA, true)); } } diff --git a/forge-game/src/main/java/forge/game/ability/effects/CountersMoveEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CountersMoveEffect.java index 5c876c6720b..2522abf8853 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CountersMoveEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CountersMoveEffect.java @@ -100,6 +100,7 @@ public class CountersMoveEffect extends SpellAbilityEffect { // Test to see if the card we're trying to add is in the expected state return; } + dest = cur; int csum = 0; @@ -145,7 +146,7 @@ public class CountersMoveEffect extends SpellAbilityEffect { } if (csum > 0) { - dest.addCounter(cType, csum, host, true); + dest.addCounter(cType, csum, player, true); game.updateLastStateForCard(dest); } return; @@ -194,15 +195,15 @@ public class CountersMoveEffect extends SpellAbilityEffect { Map params = Maps.newHashMap(); params.put("CounterType", cType); params.put("Source", source); - params.put("Target", dest); + params.put("Target", cur); StringBuilder sb = new StringBuilder(); - sb.append("Put how many ").append(cType.getName()).append(" counters on ").append(dest).append("?"); + sb.append("Put how many ").append(cType.getName()).append(" counters on ").append(cur).append("?"); int cnum = player.getController().chooseNumber(sa, sb.toString(), 0, source.getCounters(cType), params); if (cnum > 0) { source.subtractCounter(cType, cnum); - dest.addCounter(cType, cnum, host, true); - game.updateLastStateForCard(dest); + cur.addCounter(cType, cnum, player, true); + game.updateLastStateForCard(cur); updateSource = true; } } @@ -245,7 +246,7 @@ public class CountersMoveEffect extends SpellAbilityEffect { } if (!"Any".matches(counterName)) { - if (!dest.canReceiveCounters(cType)) { + if (!cur.canReceiveCounters(cType)) { continue; } @@ -253,7 +254,7 @@ public class CountersMoveEffect extends SpellAbilityEffect { Map params = Maps.newHashMap(); params.put("CounterType", cType); params.put("Source", source); - params.put("Target", dest); + params.put("Target", cur); StringBuilder sb = new StringBuilder(); sb.append("Take how many ").append(cType.getName()); sb.append(" counters from ").append(source).append("?"); @@ -262,8 +263,8 @@ public class CountersMoveEffect extends SpellAbilityEffect { if (source.getCounters(cType) >= cntToMove) { source.subtractCounter(cType, cntToMove); - dest.addCounter(cType, cntToMove, host, true); - game.updateLastStateForCard(dest); + cur.addCounter(cType, cntToMove, player, true); + game.updateLastStateForCard(cur); } } else { // any counterType currently only Leech Bonder @@ -296,7 +297,7 @@ public class CountersMoveEffect extends SpellAbilityEffect { sa, sb.toString(), 0, Math.min(tgtCounters.get(chosenType), cntToMove), params); if (chosenAmount > 0) { - dest.addCounter(chosenType, chosenAmount, host, true); + dest.addCounter(chosenType, chosenAmount, player, true); source.subtractCounter(chosenType, chosenAmount); game.updateLastStateForCard(dest); cntToMove -= chosenAmount; diff --git a/forge-game/src/main/java/forge/game/ability/effects/CountersMultiplyEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CountersMultiplyEffect.java index 08117188072..8eaced12614 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CountersMultiplyEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CountersMultiplyEffect.java @@ -7,6 +7,7 @@ import forge.game.ability.AbilityUtils; import forge.game.ability.SpellAbilityEffect; import forge.game.card.Card; import forge.game.card.CounterType; +import forge.game.player.Player; import forge.game.spellability.SpellAbility; import forge.util.Lang; @@ -37,6 +38,7 @@ public class CountersMultiplyEffect extends SpellAbilityEffect { public void resolve(SpellAbility sa) { final Card host = sa.getHostCard(); final Game game = host.getGame(); + final Player player = sa.getActivatingPlayer(); final CounterType counterType = getCounterType(sa); final int n = Integer.valueOf(sa.getParamOrDefault("Multiplier", "2")) - 1; @@ -50,10 +52,10 @@ public class CountersMultiplyEffect extends SpellAbilityEffect { continue; } if (counterType != null) { - gameCard.addCounter(counterType, gameCard.getCounters(counterType) * n, host, true); + gameCard.addCounter(counterType, gameCard.getCounters(counterType) * n, player, true); } else { for (Map.Entry e : gameCard.getCounters().entrySet()) { - gameCard.addCounter(e.getKey(), e.getValue() * n, host, true); + gameCard.addCounter(e.getKey(), e.getValue() * n, player, true); } } game.updateLastStateForCard(gameCard); diff --git a/forge-game/src/main/java/forge/game/ability/effects/CountersNoteEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CountersNoteEffect.java index b5190983232..21a7f4c9d2c 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CountersNoteEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CountersNoteEffect.java @@ -6,6 +6,7 @@ import forge.game.ability.SpellAbilityEffect; import forge.game.card.Card; import forge.game.card.CardCollection; import forge.game.card.CounterType; +import forge.game.player.Player; import forge.game.spellability.SpellAbility; public class CountersNoteEffect extends SpellAbilityEffect { @@ -26,7 +27,7 @@ public class CountersNoteEffect extends SpellAbilityEffect { if (mode.equals(MODE_STORE)) { noteCounters(c, source); } else if (mode.equals(MODE_LOAD)) { - loadCounters(c, source); + loadCounters(c, source, sa.getActivatingPlayer()); } } } @@ -39,11 +40,11 @@ public class CountersNoteEffect extends SpellAbilityEffect { } } - private void loadCounters(Card notee, Card source) { + private void loadCounters(Card notee, Card source, final Player p) { for(Entry svar : source.getSVars().entrySet()) { String key = svar.getKey(); if (key.startsWith(NOTE_COUNTERS)) { - notee.addCounter(CounterType.getType(key.substring(NOTE_COUNTERS.length())), Integer.parseInt(svar.getValue()), source, false); + notee.addCounter(CounterType.getType(key.substring(NOTE_COUNTERS.length())), Integer.parseInt(svar.getValue()), p, false); } // TODO Probably should "remove" the svars that were temporarily used } diff --git a/forge-game/src/main/java/forge/game/ability/effects/CountersProliferateEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CountersProliferateEffect.java index 4b317322118..f5ef5b95ed8 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CountersProliferateEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CountersProliferateEffect.java @@ -24,6 +24,7 @@ public class CountersProliferateEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { + final Player p = sa.getActivatingPlayer(); final Card host = sa.getHostCard(); final Game game = host.getGame(); Player controller = host.getController(); @@ -32,10 +33,10 @@ public class CountersProliferateEffect extends SpellAbilityEffect { return; for(Entry ge: proliferateChoice.entrySet()) { if( ge.getKey() instanceof Player ) - ((Player) ge.getKey()).addCounter(ge.getValue(), 1, host, true); + ((Player) ge.getKey()).addCounter(ge.getValue(), 1, p, true); else if( ge.getKey() instanceof Card) { Card c = (Card) ge.getKey(); - c.addCounter(ge.getValue(), 1, host, true); + c.addCounter(ge.getValue(), 1, p, true); game.updateLastStateForCard(c); } } diff --git a/forge-game/src/main/java/forge/game/ability/effects/CountersPutAllEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CountersPutAllEffect.java index 29843622384..cf27b138ff8 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CountersPutAllEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CountersPutAllEffect.java @@ -38,30 +38,37 @@ public class CountersPutAllEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { final Card host = sa.getHostCard(); + final Player activator = sa.getActivatingPlayer(); final String type = sa.getParam("CounterType"); final int counterAmount = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("CounterNum"), sa); final String valid = sa.getParam("ValidCards"); final ZoneType zone = sa.hasParam("ValidZone") ? ZoneType.smartValueOf(sa.getParam("ValidZone")) : ZoneType.Battlefield; - final Game game = sa.getActivatingPlayer().getGame(); + final Game game = activator.getGame(); if (counterAmount <= 0) { return; } CardCollectionView cards = game.getCardsIn(zone); - cards = CardLists.getValidCards(cards, valid, sa.getHostCard().getController(), sa.getHostCard()); + cards = CardLists.getValidCards(cards, valid, host.getController(), sa.getHostCard()); if (sa.usesTargeting()) { final Player pl = sa.getTargets().getFirstTargetedPlayer(); cards = CardLists.filterControlledBy(cards, pl); } + Player placer = activator; + if (sa.hasParam("Placer")) { + final String pstr = sa.getParam("Placer"); + placer = AbilityUtils.getDefinedPlayers(host, pstr, sa).get(0); + } + for (final Card tgtCard : cards) { if (game.getZoneOf(tgtCard).is(ZoneType.Battlefield)) { - tgtCard.addCounter(CounterType.valueOf(type), counterAmount, host, true); + tgtCard.addCounter(CounterType.valueOf(type), counterAmount, placer, true); } else { // adding counters to something like re-suspend cards - tgtCard.addCounter(CounterType.valueOf(type), counterAmount, host, false); + tgtCard.addCounter(CounterType.valueOf(type), counterAmount, placer, false); } game.updateLastStateForCard(tgtCard); } diff --git a/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java index d58b3ab209c..61eb5e73201 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CountersPutEffect.java @@ -37,7 +37,7 @@ public class CountersPutEffect extends SpellAbilityEffect { final boolean dividedAsYouChoose = sa.hasParam("DividedAsYouChoose"); - final int amount = AbilityUtils.calculateAmount(card, sa.getParam("CounterNum"), sa); + final int amount = AbilityUtils.calculateAmount(card, sa.getParamOrDefault("CounterNum", "1"), sa); if (sa.hasParam("Bolster")) { sb.append("Bolster ").append(amount); return sb.toString(); @@ -110,6 +110,12 @@ public class CountersPutEffect extends SpellAbilityEffect { } } + Player placer = activator; + if (sa.hasParam("Placer")) { + final String pstr = sa.getParam("Placer"); + placer = AbilityUtils.getDefinedPlayers(sa.getHostCard(), pstr, sa).get(0); + } + final boolean etbcounter = sa.hasParam("ETB"); final boolean remember = sa.hasParam("RememberCounters"); final boolean rememberCards = sa.hasParam("RememberCards"); @@ -129,9 +135,10 @@ public class CountersPutEffect extends SpellAbilityEffect { for (final GameObject obj : tgtObjects) { // check if the object is still in game or if it was moved + Card gameCard = null; if (obj instanceof Card) { Card tgtCard = (Card) obj; - Card gameCard = game.getCardState(tgtCard, null); + gameCard = game.getCardState(tgtCard, null); // gameCard is LKI in that case, the card is not in game anymore // or the timestamp did change // this should check Self too @@ -155,10 +162,10 @@ public class CountersPutEffect extends SpellAbilityEffect { if (eachExistingCounter) { for(CounterType ct : choices) { if (obj instanceof Player) { - ((Player) obj).addCounter(ct, counterAmount, card, true); + ((Player) obj).addCounter(ct, counterAmount, placer, true); } if (obj instanceof Card) { - ((Card) obj).addCounter(ct, counterAmount, card, true); + gameCard.addCounter(ct, counterAmount, placer, true); } } continue; @@ -179,7 +186,7 @@ public class CountersPutEffect extends SpellAbilityEffect { } if (obj instanceof Card) { - Card tgtCard = (Card) obj; + Card tgtCard = gameCard; counterAmount = sa.usesTargeting() && sa.hasParam("DividedAsYouChoose") ? sa.getTargetRestrictions().getDividedValue(tgtCard) : counterAmount; if (!sa.usesTargeting() || tgtCard.canBeTargetedBy(sa)) { if (max != -1) { @@ -232,9 +239,9 @@ public class CountersPutEffect extends SpellAbilityEffect { final Zone zone = tgtCard.getGame().getZoneOf(tgtCard); if (zone == null || zone.is(ZoneType.Battlefield) || zone.is(ZoneType.Stack)) { if (etbcounter) { - tgtCard.addEtbCounter(counterType, counterAmount, card); + tgtCard.addEtbCounter(counterType, counterAmount, placer); } else { - tgtCard.addCounter(counterType, counterAmount, card, true); + tgtCard.addCounter(counterType, counterAmount, placer, true); } if (remember) { final int value = tgtCard.getTotalCountersToAdd(); @@ -263,9 +270,9 @@ public class CountersPutEffect extends SpellAbilityEffect { // adding counters to something like re-suspend cards // etbcounter should apply multiplier if (etbcounter) { - tgtCard.addEtbCounter(counterType, counterAmount, card); + tgtCard.addEtbCounter(counterType, counterAmount, placer); } else { - tgtCard.addCounter(counterType, counterAmount, card, false); + tgtCard.addCounter(counterType, counterAmount, placer, false); } } game.updateLastStateForCard(tgtCard); @@ -273,7 +280,7 @@ public class CountersPutEffect extends SpellAbilityEffect { } else if (obj instanceof Player) { // Add Counters to players! Player pl = (Player) obj; - pl.addCounter(counterType, counterAmount, card, true); + pl.addCounter(counterType, counterAmount, placer, true); } } } diff --git a/forge-game/src/main/java/forge/game/ability/effects/CountersPutOrRemoveEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CountersPutOrRemoveEffect.java index 9273c1ce2c6..8a45a41f78d 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CountersPutOrRemoveEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CountersPutOrRemoveEffect.java @@ -5,6 +5,7 @@ import forge.game.ability.AbilityUtils; import forge.game.ability.SpellAbilityEffect; import forge.game.card.Card; import forge.game.card.CounterType; +import forge.game.player.Player; import forge.game.player.PlayerController; import forge.game.player.PlayerController.BinaryChoiceType; import forge.game.spellability.SpellAbility; @@ -64,16 +65,16 @@ public class CountersPutOrRemoveEffect extends SpellAbilityEffect { if (gameCard == null || !tgtCard.equalsWithTimestamp(gameCard)) { continue; } - if (!sa.usesTargeting() || tgtCard.canBeTargetedBy(sa)) { - if (tgtCard.hasCounters()) { + if (!sa.usesTargeting() || gameCard.canBeTargetedBy(sa)) { + if (gameCard.hasCounters()) { if (sa.hasParam("EachExistingCounter")) { - for (CounterType listType : Lists.newArrayList(tgtCard.getCounters().keySet())) { - addOrRemoveCounter(sa, tgtCard, listType, counterAmount); + for (CounterType listType : Lists.newArrayList(gameCard.getCounters().keySet())) { + addOrRemoveCounter(sa, gameCard, listType, counterAmount); } } else { - addOrRemoveCounter(sa, tgtCard, ctype, counterAmount); + addOrRemoveCounter(sa, gameCard, ctype, counterAmount); } - game.updateLastStateForCard(tgtCard); + game.updateLastStateForCard(gameCard); } } } @@ -81,8 +82,8 @@ public class CountersPutOrRemoveEffect extends SpellAbilityEffect { private void addOrRemoveCounter(final SpellAbility sa, final Card tgtCard, CounterType ctype, final int counterAmount) { - PlayerController pc = sa.getActivatingPlayer().getController(); - final Card source = sa.getHostCard(); + final Player pl = sa.getActivatingPlayer(); + final PlayerController pc = pl.getController(); Map params = Maps.newHashMap(); params.put("Target", tgtCard); @@ -105,7 +106,7 @@ public class CountersPutOrRemoveEffect extends SpellAbilityEffect { boolean apply = zone == null || zone.is(ZoneType.Battlefield) || zone.is(ZoneType.Stack); - tgtCard.addCounter(chosenType, counterAmount, source, apply); + tgtCard.addCounter(chosenType, counterAmount, pl, apply); } else { tgtCard.subtractCounter(chosenType, counterAmount); } diff --git a/forge-game/src/main/java/forge/game/ability/effects/CountersRemoveEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CountersRemoveEffect.java index 1b6f684af87..4d73671c8ef 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CountersRemoveEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CountersRemoveEffect.java @@ -115,27 +115,27 @@ public class CountersRemoveEffect extends SpellAbilityEffect { if (gameCard == null || !tgtCard.equalsWithTimestamp(gameCard)) { continue; } - if (!sa.usesTargeting() || tgtCard.canBeTargetedBy(sa)) { + if (!sa.usesTargeting() || gameCard.canBeTargetedBy(sa)) { final Zone zone = game.getZoneOf(gameCard); if (type.equals("All")) { - for (Map.Entry e : tgtCard.getCounters().entrySet()) { - tgtCard.subtractCounter(e.getKey(), e.getValue()); + for (Map.Entry e : gameCard.getCounters().entrySet()) { + gameCard.subtractCounter(e.getKey(), e.getValue()); } - game.updateLastStateForCard(tgtCard); + game.updateLastStateForCard(gameCard); continue; } else if (num.equals("All")) { - cntToRemove = tgtCard.getCounters(counterType); + cntToRemove = gameCard.getCounters(counterType); } else if (sa.getParam("CounterNum").equals("Remembered")) { - cntToRemove = tgtCard.getCountersAddedBy(card, counterType); + cntToRemove = gameCard.getCountersAddedBy(card, counterType); } PlayerController pc = sa.getActivatingPlayer().getController(); if (type.equals("Any")) { - while (cntToRemove > 0 && tgtCard.hasCounters()) { - final Map tgtCounters = tgtCard.getCounters(); + while (cntToRemove > 0 && gameCard.hasCounters()) { + final Map tgtCounters = gameCard.getCounters(); Map params = Maps.newHashMap(); - params.put("Target", tgtCard); + params.put("Target", gameCard); String prompt = "Select type of counters to remove"; CounterType chosenType = pc.chooseCounterType( @@ -143,13 +143,13 @@ public class CountersRemoveEffect extends SpellAbilityEffect { prompt = "Select the number of " + chosenType.getName() + " counters to remove"; int max = Math.min(cntToRemove, tgtCounters.get(chosenType)); params = Maps.newHashMap(); - params.put("Target", tgtCard); + params.put("Target", gameCard); params.put("CounterType", chosenType); int chosenAmount = pc.chooseNumber(sa, prompt, 1, max, params); if (chosenAmount > 0) { - tgtCard.subtractCounter(chosenType, chosenAmount); - game.updateLastStateForCard(tgtCard); + gameCard.subtractCounter(chosenType, chosenAmount); + game.updateLastStateForCard(gameCard); if (rememberRemoved) { for (int i = 0; i < chosenAmount; i++) { card.addRemembered(Pair.of(chosenType, i)); @@ -159,12 +159,12 @@ public class CountersRemoveEffect extends SpellAbilityEffect { } } } else { - cntToRemove = Math.min(cntToRemove, tgtCard.getCounters(counterType)); + cntToRemove = Math.min(cntToRemove, gameCard.getCounters(counterType)); if (zone.is(ZoneType.Battlefield) || zone.is(ZoneType.Exile)) { if (sa.hasParam("UpTo")) { Map params = Maps.newHashMap(); - params.put("Target", tgtCard); + params.put("Target", gameCard); params.put("CounterType", type); String title = "Select the number of " + type + " counters to remove"; cntToRemove = pc.chooseNumber(sa, title, 0, cntToRemove, params); @@ -172,13 +172,13 @@ public class CountersRemoveEffect extends SpellAbilityEffect { } if (cntToRemove > 0) { - tgtCard.subtractCounter(counterType, cntToRemove); + gameCard.subtractCounter(counterType, cntToRemove); if (rememberRemoved) { for (int i = 0; i < cntToRemove; i++) { card.addRemembered(Pair.of(counterType, i)); } } - game.updateLastStateForCard(tgtCard); + game.updateLastStateForCard(gameCard); } } } diff --git a/forge-game/src/main/java/forge/game/ability/effects/DamageBaseEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DamageBaseEffect.java index 2f17ffbb8b6..95b5092d6cd 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DamageBaseEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DamageBaseEffect.java @@ -1,87 +1,7 @@ package forge.game.ability.effects; -import forge.GameCommand; -import forge.game.Game; -import forge.game.ability.AbilityFactory; -import forge.game.ability.AbilityUtils; import forge.game.ability.SpellAbilityEffect; -import forge.game.card.Card; -import forge.game.card.CardCollection; -import forge.game.player.Player; -import forge.game.replacement.ReplacementEffect; -import forge.game.replacement.ReplacementHandler; -import forge.game.replacement.ReplacementLayer; -import forge.game.spellability.SpellAbility; -import forge.game.trigger.TriggerType; -import forge.game.zone.ZoneType; abstract public class DamageBaseEffect extends SpellAbilityEffect { - static void replaceDying(final SpellAbility sa) { - if (sa.hasParam("ReplaceDyingDefined")) { - - if (sa.hasParam("ReplaceDyingCondition")) { - // currently there is only one with Kicker - final String condition = sa.getParam("ReplaceDyingCondition"); - if ("Kicked".equals(condition)) { - if (!sa.isKicked()) { - return; - } - } - } - - final Card host = sa.getHostCard(); - final Player controller = sa.getActivatingPlayer(); - final Game game = host.getGame(); - String zone = sa.getParamOrDefault("ReplaceDyingZone", "Exile"); - CardCollection cards = AbilityUtils.getDefinedCards(host, sa.getParam("ReplaceDyingDefined"), sa); - // no cards, no need for Effect - if (cards.isEmpty()) { - return; - } - - // build an Effect with that infomation - String name = host.getName() + "'s Effect"; - - final Card eff = createEffect(host, controller, name, host.getImageKey()); - eff.addRemembered(cards); - - String repeffstr = "Event$ Moved | ValidCard$ Card.IsRemembered " + - "| Origin$ Battlefield | Destination$ Graveyard " + - "| Description$ If the creature would die this turn, exile it instead."; - String effect = "DB$ ChangeZone | Defined$ ReplacedCard | Origin$ Battlefield | Destination$ " + zone; - - ReplacementEffect re = ReplacementHandler.parseReplacement(repeffstr, eff, true); - re.setLayer(ReplacementLayer.Other); - - re.setOverridingAbility(AbilityFactory.getAbility(effect, eff)); - eff.addReplacementEffect(re); - - // Add forgot trigger - addForgetOnMovedTrigger(eff, "Battlefield"); - - // Copy text changes - if (sa.isIntrinsic()) { - eff.copyChangedTextFrom(host); - } - - final GameCommand endEffect = new GameCommand() { - private static final long serialVersionUID = -5861759814760561373L; - - @Override - public void run() { - game.getAction().exile(eff, null); - } - }; - - game.getEndOfTurn().addUntil(endEffect); - - eff.updateStateForView(); - - // TODO: Add targeting to the effect so it knows who it's dealing with - game.getTriggerHandler().suppressMode(TriggerType.ChangesZone); - game.getAction().moveTo(ZoneType.Command, eff, sa); - game.getTriggerHandler().clearSuppression(TriggerType.ChangesZone); - } - } } diff --git a/forge-game/src/main/java/forge/game/ability/effects/DamageDealEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DamageDealEffect.java index a7ef697d62c..9f3e2df9ef7 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DamageDealEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DamageDealEffect.java @@ -1,6 +1,8 @@ package forge.game.ability.effects; import com.google.common.collect.Iterables; + +import forge.game.Game; import forge.game.GameObject; import forge.game.ability.AbilityUtils; import forge.game.card.Card; @@ -68,6 +70,7 @@ public class DamageDealEffect extends DamageBaseEffect { @Override public void resolve(SpellAbility sa) { final Card hostCard = sa.getHostCard(); + final Game game = hostCard.getGame(); final String damage = sa.getParam("NumDmg"); int dmg = AbilityUtils.calculateAmount(hostCard, damage, sa); @@ -176,7 +179,12 @@ public class DamageDealEffect extends DamageBaseEffect { dmg = (sa.usesTargeting() && sa.hasParam("DividedAsYouChoose")) ? sa.getTargetRestrictions().getDividedValue(o) : dmg; if (o instanceof Card) { final Card c = (Card) o; - if (c.isInPlay() && (!targeted || c.canBeTargetedBy(sa))) { + final Card gc = game.getCardState(c, null); + if (gc == null || !c.equalsWithTimestamp(gc) || !gc.isInPlay()) { + // timestamp different or not in play + continue; + } + if (!targeted || c.canBeTargetedBy(sa)) { if (removeDamage) { c.setDamage(0); c.setHasBeenDealtDeathtouchDamage(false); diff --git a/forge-game/src/main/java/forge/game/ability/effects/DebuffEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DebuffEffect.java index 71256eab926..767f43bd9d8 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DebuffEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DebuffEffect.java @@ -137,7 +137,7 @@ public class DebuffEffect extends SpellAbilityEffect { } removedKW.addAll(kws); - tgtC.addChangedCardKeywords(addedKW, removedKW, false, timestamp); + tgtC.addChangedCardKeywords(addedKW, removedKW, false, false, timestamp); } if (!sa.hasParam("Permanent")) { game.getEndOfTurn().addUntil(new GameCommand() { diff --git a/forge-game/src/main/java/forge/game/ability/effects/DigEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DigEffect.java index 19e434bd55f..365adf0855a 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DigEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DigEffect.java @@ -35,7 +35,7 @@ public class DigEffect extends SpellAbilityEffect { sb.append(Lang.nounWithAmount(numToDig, "card")).append(" of "); if (tgtPlayers.contains(host.getController())) { - sb.append("his or her "); + sb.append("their "); } else { for (final Player p : tgtPlayers) { @@ -377,7 +377,7 @@ public class DigEffect extends SpellAbilityEffect { } } else if (destZone2 == ZoneType.Exile) { if (sa.hasParam("ExileWithCounter")) { - c.addCounter(CounterType.getType(sa.getParam("ExileWithCounter")), 1, effectHost, true); + c.addCounter(CounterType.getType(sa.getParam("ExileWithCounter")), 1, player, true); } c.setExiledWith(effectHost); } diff --git a/forge-game/src/main/java/forge/game/ability/effects/DigUntilEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DigUntilEffect.java index 73a32885eed..5615f70b2de 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DigUntilEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DigUntilEffect.java @@ -37,7 +37,7 @@ public class DigUntilEffect extends SpellAbilityEffect { sb.append(pl).append(" "); } - sb.append("reveals cards from his or her library until revealing "); + sb.append("reveals cards from their library until revealing "); sb.append(untilAmount).append(" ").append(desc).append(" card"); if (untilAmount != 1) { sb.append("s"); @@ -56,18 +56,18 @@ public class DigUntilEffect extends SpellAbilityEffect { sb.append(" "); if (found.equals(ZoneType.Hand)) { - sb.append("into his or her hand "); + sb.append("into their hand "); } if (revealed.equals(ZoneType.Graveyard)) { - sb.append("and all other cards into his or her graveyard."); + sb.append("and all other cards into their graveyard."); } if (revealed.equals(ZoneType.Exile)) { sb.append("and exile all other cards revealed this way."); } } else { if (revealed.equals(ZoneType.Hand)) { - sb.append("all cards revealed this way into his or her hand"); + sb.append("all cards revealed this way into their hand"); } } return sb.toString(); diff --git a/forge-game/src/main/java/forge/game/ability/effects/DiscardEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DiscardEffect.java index 942e5e63ab9..b2ebcb304bc 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DiscardEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DiscardEffect.java @@ -35,9 +35,9 @@ public class DiscardEffect extends SpellAbilityEffect { } if (mode.equals("RevealYouChoose")) { - sb.append("reveals his or her hand.").append(" You choose ("); + sb.append("reveals their hand.").append(" You choose ("); } else if (mode.equals("RevealDiscardAll")) { - sb.append("reveals his or her hand. Discard ("); + sb.append("reveals their hand. Discard ("); } else { sb.append("discards ("); } @@ -48,7 +48,7 @@ public class DiscardEffect extends SpellAbilityEffect { } if (mode.equals("Hand")) { - sb.append("his or her hand"); + sb.append("their hand"); } else if (mode.equals("RevealDiscardAll")) { sb.append("All"); } else if (sa.hasParam("AnyNumber")) { diff --git a/forge-game/src/main/java/forge/game/ability/effects/ExploreEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ExploreEffect.java index 942512a5ad7..c06be791574 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ExploreEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ExploreEffect.java @@ -44,7 +44,6 @@ public class ExploreEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { // check if only the activating player counts - final Card card = sa.getHostCard(); final Player pl = sa.getActivatingPlayer(); final PlayerController pc = pl.getController(); final Game game = pl.getGame(); @@ -78,7 +77,7 @@ public class ExploreEffect extends SpellAbilityEffect { // if the card is not more in the game anymore // this might still return true but its no problem if (game.getZoneOf(gamec).is(ZoneType.Battlefield) && gamec.getTimestamp() == c.getTimestamp()) { - c.addCounter(CounterType.P1P1, 1, card, true); + c.addCounter(CounterType.P1P1, 1, pl, true); } } diff --git a/forge-game/src/main/java/forge/game/ability/effects/FightEffect.java b/forge-game/src/main/java/forge/game/ability/effects/FightEffect.java index 4bbaad2e21d..998cbf27220 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/FightEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/FightEffect.java @@ -41,10 +41,10 @@ public class FightEffect extends DamageBaseEffect { public void resolve(SpellAbility sa) { final Card host = sa.getHostCard(); List fighters = getFighters(sa); - final Game game = sa.getActivatingPlayer().getGame(); + final Game game = host.getGame(); - if (fighters.size() < 2 || !fighters.get(0).isInPlay() - || !fighters.get(1).isInPlay()) { + // check is done in getFighters + if (fighters.size() < 2) { return; } @@ -55,21 +55,7 @@ public class FightEffect extends DamageBaseEffect { } } - boolean fightToughness = sa.hasParam("FightWithToughness"); - CardDamageMap damageMap = new CardDamageMap(); - CardDamageMap preventMap = new CardDamageMap(); - - // Damage is dealt simultaneously, so we calculate the damage from source to target before it is applied - final int dmg1 = fightToughness ? fighters.get(0).getNetToughness() : fighters.get(0).getNetPower(); - final int dmg2 = fightToughness ? fighters.get(1).getNetToughness() : fighters.get(1).getNetPower(); - - dealDamage(fighters.get(0), fighters.get(1), dmg1, damageMap, preventMap, sa); - dealDamage(fighters.get(1), fighters.get(0), dmg2, damageMap, preventMap, sa); - - preventMap.triggerPreventDamage(false); - damageMap.triggerDamageDoneOnce(false, sa); - - replaceDying(sa); + dealDamage(sa, fighters.get(0), fighters.get(1)); for (Card c : fighters) { final Map runParams = Maps.newHashMap(); @@ -83,6 +69,8 @@ public class FightEffect extends DamageBaseEffect { Card fighter1 = null; Card fighter2 = null; + final Card host = sa.getHostCard(); + final Game game = host.getGame(); List tgts = null; if (sa.usesTargeting()) { @@ -92,12 +80,27 @@ public class FightEffect extends DamageBaseEffect { } } if (sa.hasParam("Defined")) { - List defined = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("Defined"), sa); + List defined = AbilityUtils.getDefinedCards(host, sa.getParam("Defined"), sa); // Allow both fighters to come from defined list if first fighter not already found if (sa.hasParam("ExtraDefined")) { - defined.addAll(AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("ExtraDefined"), sa)); + defined.addAll(AbilityUtils.getDefinedCards(host, sa.getParam("ExtraDefined"), sa)); } + List newDefined = Lists.newArrayList(); + for (final Card d : defined) { + final Card g = game.getCardState(d, null); + // 701.12b If a creature instructed to fight is no longer on the battlefield or is no longer a creature, + // no damage is dealt. If a creature is an illegal target + // for a resolving spell or ability that instructs it to fight, no damage is dealt. + if (g == null || !g.equalsWithTimestamp(d) || !d.isInPlay() || !d.isCreature()) { + // Test to see if the card we're trying to add is in the expected state + continue; + } + newDefined.add(g); + } + // replace with new List using CardState + defined = newDefined; + if (!defined.isEmpty()) { if (defined.size() > 1 && fighter1 == null) { fighter1 = defined.get(0); @@ -120,9 +123,38 @@ public class FightEffect extends DamageBaseEffect { return fighterList; } - - private void dealDamage(Card source, Card target, int damage, CardDamageMap damageMap, CardDamageMap preventMap, final SpellAbility sa) { - target.addDamage(damage, source, damageMap, preventMap, sa); - } + private void dealDamage(final SpellAbility sa, Card fighterA, Card fighterB) { + boolean fightToughness = sa.hasParam("FightWithToughness"); + + boolean usedDamageMap = true; + CardDamageMap damageMap = sa.getDamageMap(); + CardDamageMap preventMap = sa.getPreventMap(); + + if (damageMap == null) { + // make a new damage map + damageMap = new CardDamageMap(); + preventMap = new CardDamageMap(); + usedDamageMap = false; + } + + // 701.12c If a creature fights itself, it deals damage to itself equal to twice its power. + + final int dmg1 = fightToughness ? fighterA.getNetToughness() : fighterA.getNetPower(); + if (fighterA.equals(fighterB)) { + fighterA.addDamage(dmg1 * 2, fighterA, damageMap, preventMap, sa); + } else { + final int dmg2 = fightToughness ? fighterB.getNetToughness() : fighterB.getNetPower(); + + fighterB.addDamage(dmg1, fighterA, damageMap, preventMap, sa); + fighterA.addDamage(dmg2, fighterB, damageMap, preventMap, sa); + } + + if (!usedDamageMap) { + preventMap.triggerPreventDamage(false); + damageMap.triggerDamageDoneOnce(false, sa); + } + + replaceDying(sa); + } } diff --git a/forge-game/src/main/java/forge/game/ability/effects/FlipCoinEffect.java b/forge-game/src/main/java/forge/game/ability/effects/FlipCoinEffect.java index e5c609d6c24..9724391b980 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/FlipCoinEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/FlipCoinEffect.java @@ -118,9 +118,9 @@ public class FlipCoinEffect extends SpellAbilityEffect { if (sa.getParam("RememberWinner") != null) { host.addRemembered(host); } - AbilitySub sub = sa.getAdditionalAbility("WinSubAbility"); - if (sub != null) { - AbilityUtils.resolve(sub); + + if (sa.hasAdditionalAbility("WinSubAbility")) { + AbilityUtils.resolve(sa.getAdditionalAbility("WinSubAbility")); } // runParams.put("Won","True"); } else { @@ -128,9 +128,8 @@ public class FlipCoinEffect extends SpellAbilityEffect { host.addRemembered(host); } - AbilitySub sub = sa.getAdditionalAbility("LoseSubAbility"); - if (sub != null) { - AbilityUtils.resolve(sub); + if (sa.hasAdditionalAbility("LoseSubAbility")) { + AbilityUtils.resolve(sa.getAdditionalAbility("LoseSubAbility")); } // runParams.put("Won","False"); } @@ -167,7 +166,7 @@ public class FlipCoinEffect extends SpellAbilityEffect { flipper.getGame().getAction().nofityOfValue(sa, flipper, result ? "heads" : "tails", null); } while (sa.hasParam("FlipUntilYouLose") && result != false); - if (sa.hasParam("FlipUntilYouLose")) { + if (sa.hasParam("FlipUntilYouLose") && sa.hasAdditionalAbility("LoseSubAbility")) { sa.getAdditionalAbility("LoseSubAbility").setSVar(varName, "Number$" + numSuccesses); } @@ -216,7 +215,7 @@ public class FlipCoinEffect extends SpellAbilityEffect { caller.getGame().getTriggerHandler().runTrigger(TriggerType.FlippedCoin, runParams, false); } while (sa.hasParam("FlipUntilYouLose") && wonFlip); - if (sa.hasParam("FlipUntilYouLose")) { + if (sa.hasParam("FlipUntilYouLose") && sa.hasAdditionalAbility("LoseSubAbility")) { sa.getAdditionalAbility("LoseSubAbility").setSVar(varName, "Number$" + numSuccesses); } diff --git a/forge-game/src/main/java/forge/game/ability/effects/HauntEffect.java b/forge-game/src/main/java/forge/game/ability/effects/HauntEffect.java index f429db84781..230d1d12f48 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/HauntEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/HauntEffect.java @@ -1,5 +1,6 @@ package forge.game.ability.effects; +import forge.game.Game; import forge.game.ability.SpellAbilityEffect; import forge.game.card.Card; import forge.game.spellability.SpellAbility; @@ -8,10 +9,14 @@ public class HauntEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - final Card card = sa.getHostCard(); - if (sa.usesTargeting() && !card.isToken()) { + Card card = sa.getHostCard(); + final Game game = card.getGame(); + card = game.getCardState(card, null); + if (card == null) { + return; + } else if (sa.usesTargeting() && !card.isToken()) { // haunt target but only if card is no token - final Card copy = card.getGame().getAction().exile(card, sa); + final Card copy = game.getAction().exile(card, sa); sa.getTargets().getFirstTargetedCard().addHauntedBy(copy); } else if (!sa.usesTargeting() && card.getHaunting() != null) { // unhaunt diff --git a/forge-game/src/main/java/forge/game/ability/effects/ImmediateTriggerEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ImmediateTriggerEffect.java new file mode 100644 index 00000000000..fd4ed68e213 --- /dev/null +++ b/forge-game/src/main/java/forge/game/ability/effects/ImmediateTriggerEffect.java @@ -0,0 +1,80 @@ +package forge.game.ability.effects; + +import com.google.common.collect.Maps; +import forge.game.ability.AbilityUtils; +import forge.game.ability.SpellAbilityEffect; +import forge.game.spellability.SpellAbility; +import forge.game.trigger.Trigger; +import forge.game.trigger.TriggerHandler; +import forge.game.trigger.TriggerType; + +import java.util.Map; + +public class ImmediateTriggerEffect extends SpellAbilityEffect { + + /* (non-Javadoc) + * @see forge.card.abilityfactory.SpellEffect#resolve(java.util.Map, forge.card.spellability.SpellAbility) + */ + @Override + protected String getStackDescription(SpellAbility sa) { + if (sa.hasParam("TriggerDescription")) { + return sa.getParam("TriggerDescription"); + } + + return ""; + + } + + @Override + public void resolve(SpellAbility sa) { + Map mapParams = Maps.newHashMap(sa.getMapParams()); + + if (mapParams.containsKey("Cost")) { + mapParams.remove("Cost"); + } + + if (mapParams.containsKey("SpellDescription")) { + mapParams.put("TriggerDescription", mapParams.get("SpellDescription")); + mapParams.remove("SpellDescription"); + } + + String triggerRemembered = null; + + // Set Remembered + if (sa.hasParam("RememberObjects")) { + triggerRemembered = sa.getParam("RememberObjects"); + } + + mapParams.put("Mode", TriggerType.Immediate.name()); + + final Trigger immediateTrig = TriggerHandler.parseTrigger(mapParams, sa.getHostCard(), true); + + if (sa.hasParam("CopyTriggeringObjects")) { + immediateTrig.setStoredTriggeredObjects(sa.getTriggeringObjects()); + } + + // Need to copy paid costs + + if (triggerRemembered != null) { + for (final String rem : triggerRemembered.split(",")) { + for (final Object o : AbilityUtils.getDefinedObjects(sa.getHostCard(), rem, sa)) { + if (o instanceof SpellAbility) { + // "RememberObjects$ Remembered" don't remember spellability + continue; + } + immediateTrig.addRemembered(o); + } + } + } + + if (mapParams.containsKey("Execute") || sa.hasAdditionalAbility("Execute")) { + SpellAbility overridingSA = sa.getAdditionalAbility("Execute"); + overridingSA.setActivatingPlayer(sa.getActivatingPlayer()); + immediateTrig.setOverridingAbility(overridingSA); + } + final TriggerHandler trigHandler = sa.getActivatingPlayer().getGame().getTriggerHandler(); + + // Instead of registering this, add to the delayed triggers as an immediate trigger type? Which means it'll fire as soon as possible + trigHandler.registerDelayedTrigger(immediateTrig); + } +} diff --git a/forge-game/src/main/java/forge/game/ability/effects/MillEffect.java b/forge-game/src/main/java/forge/game/ability/effects/MillEffect.java index 8882dfffda6..68676c4fe77 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/MillEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/MillEffect.java @@ -104,7 +104,7 @@ public class MillEffect extends SpellAbilityEffect { sb.append("s"); } final String millPosition = sa.hasParam("FromBottom") ? "bottom" : "top"; - sb.append(" from the " + millPosition + " of his or her library."); + sb.append(" from the " + millPosition + " of their library."); return sb.toString(); diff --git a/forge-game/src/main/java/forge/game/ability/effects/MustAttackEffect.java b/forge-game/src/main/java/forge/game/ability/effects/MustAttackEffect.java index 960448b9b50..cd8b973ba6b 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/MustAttackEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/MustAttackEffect.java @@ -36,7 +36,7 @@ public class MustAttackEffect extends SpellAbilityEffect { for (final Player player : tgtPlayers) { sb.append("Creatures ").append(player).append(" controls attack "); - sb.append(defender).append(" during his or her next turn."); + sb.append(defender).append(" during their next turn."); } for (final Card c : getTargetCards(sa)) { sb.append(c).append(" must attack "); diff --git a/forge-game/src/main/java/forge/game/ability/effects/ProtectAllEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ProtectAllEffect.java index a0a29b16aea..2a09ba0eb5b 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ProtectAllEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ProtectAllEffect.java @@ -90,7 +90,7 @@ public class ProtectAllEffect extends SpellAbilityEffect { for (final Card tgtC : list) { if (tgtC.isInPlay()) { - tgtC.addChangedCardKeywords(gainsKWList, ImmutableList.of(), false, timestamp, true); + tgtC.addChangedCardKeywords(gainsKWList, null, false, false, timestamp, true); if (!sa.hasParam("Permanent")) { // If not Permanent, remove protection at EOT diff --git a/forge-game/src/main/java/forge/game/ability/effects/ProtectEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ProtectEffect.java index 9ad893fd8be..3b2b1fe6445 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ProtectEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ProtectEffect.java @@ -1,6 +1,5 @@ package forge.game.ability.effects; -import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; import forge.GameCommand; import forge.card.MagicColor; @@ -153,7 +152,7 @@ public class ProtectEffect extends SpellAbilityEffect { continue; } - tgtC.addChangedCardKeywords(gainsKWList, ImmutableList.of(), false, timestamp, true); + tgtC.addChangedCardKeywords(gainsKWList, null, false, false, timestamp, true); if (!sa.hasParam("Permanent")) { // If not Permanent, remove protection at EOT @@ -181,7 +180,7 @@ public class ProtectEffect extends SpellAbilityEffect { continue; } - unTgtC.addChangedCardKeywords(gainsKWList, ImmutableList.of(), false, timestamp, true); + unTgtC.addChangedCardKeywords(gainsKWList, null, false, false, timestamp, true); if (!sa.hasParam("Permanent")) { // If not Permanent, remove protection at EOT diff --git a/forge-game/src/main/java/forge/game/ability/effects/PumpAllEffect.java b/forge-game/src/main/java/forge/game/ability/effects/PumpAllEffect.java index 8a5d0dfebfb..c149b976412 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/PumpAllEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/PumpAllEffect.java @@ -13,10 +13,11 @@ import forge.game.spellability.SpellAbility; import forge.game.zone.ZoneType; import forge.util.TextUtil; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import com.google.common.collect.Lists; + public class PumpAllEffect extends SpellAbilityEffect { private static void applyPumpAll(final SpellAbility sa, final List list, final int a, final int d, @@ -24,23 +25,18 @@ public class PumpAllEffect extends SpellAbilityEffect { final Game game = sa.getActivatingPlayer().getGame(); final long timestamp = game.getNextTimestamp(); - final List kws = new ArrayList(); - final List hiddenkws = new ArrayList(); - boolean suspend = false; + final List kws = Lists.newArrayList(); + final List hiddenkws = Lists.newArrayList(); for (String kw : keywords) { if (kw.startsWith("HIDDEN")) { hiddenkws.add(kw); } else { kws.add(kw); - if (kw.equals("Suspend")) { - suspend = true; - } } } for (final Card tgtC : list) { - // only pump things in the affected zones. boolean found = false; for (final ZoneType z : affectedZones) { @@ -55,7 +51,7 @@ public class PumpAllEffect extends SpellAbilityEffect { tgtC.addTempPowerBoost(a); tgtC.addTempToughnessBoost(d); - tgtC.addChangedCardKeywords(kws, new ArrayList(), false, timestamp); + tgtC.addChangedCardKeywords(kws, null, false, false, timestamp); for (String kw : hiddenkws) { tgtC.addHiddenExtrinsicKeyword(kw); @@ -118,13 +114,11 @@ public class PumpAllEffect extends SpellAbilityEffect { @Override public void resolve(final SpellAbility sa) { final List tgtPlayers = getTargetPlayers(sa); - final List affectedZones = new ArrayList(); + final List affectedZones = Lists.newArrayList(); final Game game = sa.getActivatingPlayer().getGame(); if (sa.hasParam("PumpZone")) { - for (final String zone : sa.getParam("PumpZone").split(",")) { - affectedZones.add(ZoneType.valueOf(zone)); - } + affectedZones.addAll(ZoneType.listValueOf(sa.getParam("PumpZone"))); } else { affectedZones.add(ZoneType.Battlefield); } @@ -149,7 +143,10 @@ public class PumpAllEffect extends SpellAbilityEffect { list = (CardCollection)AbilityUtils.filterListByType(list, valid, sa); - List keywords = sa.hasParam("KW") ? Arrays.asList(sa.getParam("KW").split(" & ")) : new ArrayList(); + List keywords = Lists.newArrayList(); + if (sa.hasParam("KW")) { + keywords.addAll(Arrays.asList(sa.getParam("KW").split(" & "))); + } final int a = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("NumAtt"), sa, true); final int d = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("NumDef"), sa, true); @@ -161,6 +158,8 @@ public class PumpAllEffect extends SpellAbilityEffect { keywords = CardFactoryUtil.sharedKeywords(keywords, restrictions, zones, sa.getHostCard()); } applyPumpAll(sa, list, a, d, keywords, affectedZones); + + replaceDying(sa); } // pumpAllResolve() } diff --git a/forge-game/src/main/java/forge/game/ability/effects/PumpEffect.java b/forge-game/src/main/java/forge/game/ability/effects/PumpEffect.java index cbbccffafe2..c7841849b9e 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/PumpEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/PumpEffect.java @@ -12,7 +12,6 @@ import forge.game.event.GameEventCardStatsChanged; import forge.game.keyword.KeywordInterface; import forge.game.player.Player; import forge.game.spellability.SpellAbility; -import forge.game.spellability.TargetRestrictions; import forge.game.zone.ZoneType; import forge.util.Aggregates; import forge.util.Lang; @@ -31,32 +30,40 @@ public class PumpEffect extends SpellAbilityEffect { final int a, final int d, final List keywords, final long timestamp) { final Card host = sa.getHostCard(); + final Game game = host.getGame(); //if host is not on the battlefield don't apply // Suspend should does Affect the Stack if (sa.hasParam("UntilLoseControlOfHost") && !(host.isInPlay() || host.isInZone(ZoneType.Stack))) { return; } - final Game game = sa.getActivatingPlayer().getGame(); + + // do Game Check there in case of LKI + final Card gameCard = game.getCardState(applyTo, null); + if (gameCard == null || !applyTo.equalsWithTimestamp(gameCard)) { + return; + } final List kws = Lists.newArrayList(); boolean redrawPT = false; for (String kw : keywords) { if (kw.startsWith("HIDDEN")) { - applyTo.addHiddenExtrinsicKeyword(kw); + gameCard.addHiddenExtrinsicKeyword(kw); redrawPT |= kw.contains("CARDNAME's power and toughness are switched"); } else { kws.add(kw); } } - applyTo.addTempPowerBoost(a); - applyTo.addTempToughnessBoost(d); - applyTo.addChangedCardKeywords(kws, Lists.newArrayList(), false, timestamp); - if (redrawPT) { applyTo.updatePowerToughnessForView(); } + gameCard.addTempPowerBoost(a); + gameCard.addTempToughnessBoost(d); + gameCard.addChangedCardKeywords(kws, Lists.newArrayList(), false, false, timestamp); + if (redrawPT) { + gameCard.updatePowerToughnessForView(); + } if (sa.hasParam("LeaveBattlefield")) { - addLeaveBattlefieldReplacement(applyTo, sa, sa.getParam("LeaveBattlefield")); + addLeaveBattlefieldReplacement(gameCard, sa, sa.getParam("LeaveBattlefield")); } if (!sa.hasParam("Permanent")) { @@ -66,8 +73,8 @@ public class PumpEffect extends SpellAbilityEffect { @Override public void run() { - applyTo.addTempPowerBoost(-1 * a); - applyTo.addTempToughnessBoost(-1 * d); + gameCard.addTempPowerBoost(-1 * a); + gameCard.addTempToughnessBoost(-1 * d); if (keywords.size() > 0) { boolean redrawPT = false; @@ -75,16 +82,16 @@ public class PumpEffect extends SpellAbilityEffect { for (String kw : keywords) { redrawPT |= kw.contains("CARDNAME's power and toughness are switched"); if (kw.startsWith("HIDDEN")) { - applyTo.removeHiddenExtrinsicKeyword(kw); + gameCard.removeHiddenExtrinsicKeyword(kw); if (redrawPT) { - applyTo.updatePowerToughnessForView(); + gameCard.updatePowerToughnessForView(); } } } - applyTo.removeChangedCardKeywords(timestamp); + gameCard.removeChangedCardKeywords(timestamp); } - game.fireEvent(new GameEventCardStatsChanged(applyTo)); + game.fireEvent(new GameEventCardStatsChanged(gameCard)); } }; if (sa.hasParam("UntilEndOfCombat")) { @@ -107,12 +114,19 @@ public class PumpEffect extends SpellAbilityEffect { game.getEndOfTurn().addUntil(untilEOT); } } - game.fireEvent(new GameEventCardStatsChanged(applyTo)); + game.fireEvent(new GameEventCardStatsChanged(gameCard)); } private static void applyPump(final SpellAbility sa, final Player p, final List keywords, final long timestamp) { final Game game = p.getGame(); + final Card host = sa.getHostCard(); + //if host is not on the battlefield don't apply + // Suspend should does Affect the Stack + if (sa.hasParam("UntilLoseControlOfHost") + && !(host.isInPlay() || host.isInZone(ZoneType.Stack))) { + return; + } p.addChangedKeywords(keywords, ImmutableList.of(), timestamp); if (!sa.hasParam("Permanent")) { @@ -134,6 +148,9 @@ public class PumpEffect extends SpellAbilityEffect { game.getEndOfCombat().addUntil(untilEOT); } else if (sa.hasParam("UntilYourNextUpkeep")) { game.getUpkeep().addUntil(sa.getActivatingPlayer(), untilEOT); + } else if (sa.hasParam("UntilLoseControlOfHost")) { + sa.getHostCard().addLeavesPlayCommand(untilEOT); + sa.getHostCard().addChangeControllerCommand(untilEOT); } else { game.getEndOfTurn().addUntil(untilEOT); } @@ -208,7 +225,6 @@ public class PumpEffect extends SpellAbilityEffect { public void resolve(final SpellAbility sa) { final List untargetedCards = Lists.newArrayList(); - final TargetRestrictions tgt = sa.getTargetRestrictions(); final Game game = sa.getActivatingPlayer().getGame(); final Card host = sa.getHostCard(); final long timestamp = game.getNextTimestamp(); @@ -251,7 +267,7 @@ public class PumpEffect extends SpellAbilityEffect { final String landtype = sa.getParam("DefinedLandwalk"); final Card c = AbilityUtils.getDefinedCards(host, landtype, sa).get(0); for (String type : c.getType()) { - if (CardType.isALandType(type) || CardType.isABasicLandType(type)) { + if (CardType.isALandType(type)) { keywords.add(type + "walk"); } } @@ -340,7 +356,7 @@ public class PumpEffect extends SpellAbilityEffect { } // if pump is a target, make sure we can still target now - if ((tgt != null) && !tgtC.canBeTargetedBy(sa)) { + if (sa.usesTargeting() && !tgtC.canBeTargetedBy(sa)) { continue; } @@ -367,5 +383,7 @@ public class PumpEffect extends SpellAbilityEffect { applyPump(sa, p, keywords, timestamp); } + + replaceDying(sa); } // pumpResolve() } diff --git a/forge-game/src/main/java/forge/game/ability/effects/RearrangeTopOfLibraryEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RearrangeTopOfLibraryEffect.java index aa03c0e982d..2794da67bbb 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RearrangeTopOfLibraryEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RearrangeTopOfLibraryEffect.java @@ -51,7 +51,7 @@ public class RearrangeTopOfLibraryEffect extends SpellAbilityEffect { ret.append("that"); } - ret.append(" player shuffle his or her library."); + ret.append(" player shuffle their library."); } return ret.toString(); diff --git a/forge-game/src/main/java/forge/game/ability/effects/ReplaceEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ReplaceEffect.java index c70ac438935..95f58d5dff9 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ReplaceEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ReplaceEffect.java @@ -48,6 +48,10 @@ public class ReplaceEffect extends SpellAbilityEffect { params.put(varName, AbilityUtils.calculateAmount(card, varValue, sa)); } + if (params.containsKey("EffectOnly")) { + params.put("EffectOnly", true); + } + //try to call replacementHandler with new Params ReplacementResult result = game.getReplacementHandler().run(params); switch (result) { diff --git a/forge-game/src/main/java/forge/game/ability/effects/RevealEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RevealEffect.java index bedb76f5c38..f718dbf8660 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RevealEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RevealEffect.java @@ -109,7 +109,7 @@ public class RevealEffect extends SpellAbilityEffect { if (sa.hasParam("Random")) { sb.append("at random "); } - sb.append("from his or her hand."); + sb.append("from their hand."); } else { sb.append("Error - no target players for RevealHand. "); } diff --git a/forge-game/src/main/java/forge/game/ability/effects/SacrificeEffect.java b/forge-game/src/main/java/forge/game/ability/effects/SacrificeEffect.java index f3809584b62..7b371dc58c4 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/SacrificeEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/SacrificeEffect.java @@ -43,7 +43,7 @@ public class SacrificeEffect extends SpellAbilityEffect { return; } } else if (sa.hasParam("CumulativeUpkeep")) { - card.addCounter(CounterType.AGE, 1, card, true); + card.addCounter(CounterType.AGE, 1, activator, true); Cost cumCost = new Cost(sa.getParam("CumulativeUpkeep"), true); Cost payCost = new Cost(ManaCost.ZERO, true); int n = card.getCounters(CounterType.AGE); diff --git a/forge-game/src/main/java/forge/game/ability/effects/ScryEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ScryEffect.java index 423479c7782..2f5d606fbe3 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ScryEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ScryEffect.java @@ -45,7 +45,7 @@ public class ScryEffect extends SpellAbilityEffect { continue; } - p.scry(num); + p.scry(num, sa); } } } diff --git a/forge-game/src/main/java/forge/game/ability/effects/SetStateEffect.java b/forge-game/src/main/java/forge/game/ability/effects/SetStateEffect.java index 91695cd6580..c7292e45a60 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/SetStateEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/SetStateEffect.java @@ -1,9 +1,11 @@ package forge.game.ability.effects; +import forge.card.CardStateName; import forge.game.Game; import forge.game.GameLogEntryType; import forge.game.ability.SpellAbilityEffect; import forge.game.card.Card; +import forge.game.card.CardCollection; import forge.game.card.CounterType; import forge.game.event.GameEventCardStatsChanged; import forge.game.player.Player; @@ -66,6 +68,25 @@ public class SetStateEffect extends SpellAbilityEffect { continue; } + // facedown cards that are not Permanent, can't turn faceup there + if ("TurnFace".equals(mode) && tgt.isFaceDown() && tgt.isInZone(ZoneType.Battlefield) + && !tgt.getState(CardStateName.Original).getType().isPermanent()) { + // need to cache manifest status + boolean manifested = tgt.isManifested(); + // FIXME setState has to many other Consequences, use LKI? + tgt.setState(CardStateName.Original, true); + game.getAction().reveal(new CardCollection(tgt), tgt.getOwner(), true, "Face-down card can't turn face up"); + tgt.setState(CardStateName.FaceDown, true); + tgt.setManifested(manifested); + + continue; + } + + // for reasons it can't transform, skip + if ("Transform".equals(mode) && !tgt.canTransform()) { + continue; + } + if ("Transform".equals(mode) && tgt.equals(host) && sa.hasSVar("StoredTransform")) { // If want to Transform, and host is trying to transform self, skip if not in alignment boolean skip = tgt.getTransformedTimestamp() != Long.parseLong(sa.getSVar("StoredTransform")); @@ -104,7 +125,7 @@ public class SetStateEffect extends SpellAbilityEffect { } game.fireEvent(new GameEventCardStatsChanged(tgt)); if (sa.hasParam("Mega")) { - tgt.addCounter(CounterType.P1P1, 1, host, true); + tgt.addCounter(CounterType.P1P1, 1, p, true); } if (remChanged) { host.addRemembered(tgt); diff --git a/forge-game/src/main/java/forge/game/ability/effects/ShuffleEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ShuffleEffect.java index 3631fbae7fc..a7711c0356b 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ShuffleEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ShuffleEffect.java @@ -48,7 +48,7 @@ public class ShuffleEffect extends SpellAbilityEffect { if (tgtPlayers.size() > 1) { sb.append(" their libraries"); } else { - sb.append("s his or her library"); + sb.append("s their library"); } sb.append("."); diff --git a/forge-game/src/main/java/forge/game/ability/effects/SurveilEffect.java b/forge-game/src/main/java/forge/game/ability/effects/SurveilEffect.java new file mode 100644 index 00000000000..740ce564b33 --- /dev/null +++ b/forge-game/src/main/java/forge/game/ability/effects/SurveilEffect.java @@ -0,0 +1,46 @@ +package forge.game.ability.effects; + +import forge.game.ability.AbilityUtils; +import forge.game.ability.SpellAbilityEffect; +import forge.game.player.Player; +import forge.game.spellability.SpellAbility; +import forge.util.Lang; + +public class SurveilEffect extends SpellAbilityEffect { + @Override + protected String getStackDescription(SpellAbility sa) { + final StringBuilder sb = new StringBuilder(); + + sb.append(Lang.joinHomogenous(getTargetPlayers(sa))); + + int num = 1; + if (sa.hasParam("Amount")) { + num = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("Amount"), sa); + } + + sb.append(" surveil (").append(num).append(")."); + return sb.toString(); + } + + @Override + public void resolve(SpellAbility sa) { + int num = 1; + if (sa.hasParam("Amount")) { + num = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("Amount"), sa); + } + + boolean isOptional = sa.hasParam("Optional"); + + for (final Player p : getTargetPlayers(sa)) { + if (!sa.usesTargeting() || p.canBeTargetedBy(sa)) { + if (isOptional && !p.getController().confirmAction(sa, null, "Do you want to surveil?")) { + continue; + } + + p.surveil(num, sa); + } + } + } + + +} diff --git a/forge-game/src/main/java/forge/game/ability/effects/TokenEffect.java b/forge-game/src/main/java/forge/game/ability/effects/TokenEffect.java index 2181ed28ba6..6abd7bdebc1 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/TokenEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/TokenEffect.java @@ -27,14 +27,18 @@ import org.apache.commons.lang3.StringUtils; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; +import com.google.common.collect.Sets; import forge.card.CardType; import forge.game.Game; import forge.game.GameEntity; +import forge.game.GameObject; import forge.game.ability.AbilityFactory; import forge.game.ability.AbilityUtils; import forge.game.ability.SpellAbilityEffect; import forge.game.card.Card; +import forge.game.card.CardCollection; +import forge.game.card.CardUtil; import forge.game.combat.Combat; import forge.game.event.GameEventCombatChanged; import forge.game.event.GameEventTokenCreated; @@ -42,6 +46,7 @@ import forge.game.player.Player; import forge.game.spellability.SpellAbility; import forge.game.trigger.Trigger; import forge.game.trigger.TriggerHandler; +import forge.game.zone.ZoneType; import forge.item.PaperToken; import forge.util.collect.FCollectionView; import forge.util.MyRandom; @@ -194,17 +199,15 @@ public class TokenEffect extends SpellAbilityEffect { return sb.toString(); } - private Card loadTokenPrototype(SpellAbility sa) { - String script = sa.getParamOrDefault("TokenScript", null); - - PaperToken token = null; - try { - String edition = sa.getHostCard().getPaperCard().getEdition(); - token = StaticData.instance().getAllTokens().getToken(script, edition); - } catch(NullPointerException e) { - // A non-PaperCard creates a new token. We probably want to delegate to the original creator - System.out.println("Token created by: " + sa.getHostCard() + " has no PaperCard associated to it."); + public Card loadTokenPrototype(SpellAbility sa) { + if (!sa.hasParam("TokenScript")) { + return null; } + + String script = sa.getParam("TokenScript"); + String edition = sa.getHostCard().getSetCode(); + PaperToken token = StaticData.instance().getAllTokens().getToken(script, edition); + if (token != null) { tokenName = token.getName(); return Card.fromPaperCard(token, null, sa.getHostCard().getGame()); @@ -270,7 +273,10 @@ public class TokenEffect extends SpellAbilityEffect { tokenInfo = new TokenInfo(substitutedName, imageName, cost, substitutedTypes, this.tokenKeywords, finalPower, finalToughness); } else { - tokenInfo = new TokenInfo(prototype); + // TODO: Substitute type name for Chosen tokens + // TODO: If host has has it's color/type altered make sure that's appropriately applied + // TODO: Lock down final power and toughness if it's actually X values + tokenInfo = new TokenInfo(prototype, host); } for (final Player controller : AbilityUtils.getDefinedPlayers(host, this.tokenOwner, sa)) { @@ -291,6 +297,11 @@ public class TokenEffect extends SpellAbilityEffect { if (this.tokenTapped) { tok.setTapped(true); } + + if (sa.hasParam("AttachedTo") && !attachTokenTo(tok, sa)) { + continue; + } + // Should this be catching the Card that's returned? Card c = game.getAction().moveToPlay(tok, sa); @@ -299,7 +310,7 @@ public class TokenEffect extends SpellAbilityEffect { } if (inCombat) { - combatChanged = addTokenToCombat(game, c, controller, sa, host) || combatChanged; + combatChanged = addTokenToCombat(game, c, tok.getController(), sa, host) || combatChanged; } c.updateStateForView(); @@ -469,4 +480,79 @@ public class TokenEffect extends SpellAbilityEffect { } return combatChanged; } + + private boolean attachTokenTo(Card tok, SpellAbility sa) { + final Card host = sa.getHostCard(); + final Game game = host.getGame(); + + GameObject aTo = Iterables.getFirst( + AbilityUtils.getDefinedObjects(host, sa.getParam("AttachedTo"), sa), null); + + if (aTo instanceof GameEntity) { + GameEntity ge = (GameEntity)aTo; + // check what the token would be on the battlefield + Card lki = CardUtil.getLKICopy(tok); + + lki.setLastKnownZone(tok.getController().getZone(ZoneType.Battlefield)); + + CardCollection preList = new CardCollection(lki); + game.getAction().checkStaticAbilities(false, Sets.newHashSet(lki), preList); + + // TODO update when doing Attach Update + boolean canAttach = lki.isAura() || lki.isEquipment() || lki.isFortification(); + + if (lki.isAura()) { + if (!ge.canBeEnchantedBy(lki)) { + canAttach = false; + } + } + if (lki.isEquipment()) { + if (ge instanceof Card) { + Card gc = (Card) ge; + if (!gc.canBeEquippedBy(lki)) { + canAttach = false; + } + } else { + canAttach = false; + } + } + if (lki.isFortification()) { + if (ge instanceof Card) { + Card gc = (Card) ge; + if (!gc.isLand()) { + canAttach = false; + } + } else { + canAttach = false; + } + } + + // reset static abilities + game.getAction().checkStaticAbilities(false); + + if (!canAttach) { + // Token can't attach it + return false; + } + + // TODO update when doing Attach Update + if (lki.isAura()) { + tok.enchantEntity(ge); + } else if (lki.isEquipment()) { + if (ge instanceof Card) { + Card gc = (Card) ge; + tok.equipCard(gc); + } + } else if (lki.isFortification()) { + if (ge instanceof Card) { + Card gc = (Card) ge; + tok.fortifyCard(gc); + } + } + return true; + } else { + // not a GameEntity, cant be attach + return false; + } + } } diff --git a/forge-game/src/main/java/forge/game/card/Card.java b/forge-game/src/main/java/forge/game/card/Card.java index 4bf199ef40b..6fc7ffde41c 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -117,7 +117,7 @@ public class Card extends GameEntity implements Comparable { // changes by AF animate and continuous static effects - timestamp is the key of maps private final Map changedCardTypes = Maps.newTreeMap(); private final Map changedCardKeywords = Maps.newTreeMap(); - private final SortedMap changedCardColors = Maps.newTreeMap(); + private final Map changedCardColors = Maps.newTreeMap(); // changes that say "replace each instance of one [color,type] by another - timestamp is the key of maps private final CardChangedWords changedTextColors = new CardChangedWords(); @@ -132,7 +132,9 @@ public class Card extends GameEntity implements Comparable { private final MapOfLists rememberMap = new HashMapOfLists<>(CollectionSuppliers.arrayLists()); private Map flipResult; - private Map receivedDamageFromThisTurn = Maps.newTreeMap(); + private Map receivedDamageFromThisTurn = Maps.newHashMap(); + private Map receivedDamageFromPlayerThisTurn = Maps.newHashMap(); + private Map dealtDamageToThisTurn = Maps.newTreeMap(); private Map dealtDamageToPlayerThisTurn = Maps.newTreeMap(); private final Map assignedDamageMap = Maps.newTreeMap(); @@ -181,8 +183,8 @@ public class Card extends GameEntity implements Comparable { private long timestamp = -1; // permanents on the battlefield // stack of set power/toughness - private List newPT = Lists.newArrayList(); - private int baseLoyalty = 0; + private Map> newPT = Maps.newTreeMap(); + private Map> newPTCharacterDefining = Maps.newTreeMap(); private String basePowerString = null; private String baseToughnessString = null; private String oracleText = ""; @@ -230,6 +232,8 @@ public class Card extends GameEntity implements Comparable { private final List etbCommandList = Lists.newArrayList(); private final List untapCommandList = Lists.newArrayList(); private final List changeControllerCommandList = Lists.newArrayList(); + private final List unattachCommandList = Lists.newArrayList(); + private final List faceupCommandList = Lists.newArrayList(); private final List staticCommandList = Lists.newArrayList(); private final static ImmutableList storableSVars = ImmutableList.of("ChosenX"); @@ -249,7 +253,7 @@ public class Card extends GameEntity implements Comparable { private CardRules cardRules; private final CardView view; - private Table etbCounters = HashBasedTable.create(); + private Table etbCounters = HashBasedTable.create(); private SpellAbility[] basicLandAbilities = new SpellAbility[MagicColor.WUBRG.length]; @@ -492,14 +496,11 @@ public class Card extends GameEntity implements Comparable { // Illusionary Mask affects cards in hand. CardStateName oldState = getCurrentStateName(); if (mode.equals("Transform") && isDoubleFaced()) { - if (hasKeyword("CARDNAME can't transform")) { + if (!canTransform()) { return false; } - CardStateName destState = oldState == CardStateName.Transformed ? CardStateName.Original : CardStateName.Transformed; - if (this.isInPlay() && !this.getState(destState).getType().isPermanent()) { - return false; - } + CardStateName destState = oldState == CardStateName.Transformed ? CardStateName.Original : CardStateName.Transformed; return changeToState(destState); @@ -588,6 +589,12 @@ public class Card extends GameEntity implements Comparable { } boolean result = setState(preFaceDownState, true); + // need to run faceup commands, currently + // it does cleanup the modified facedown state + if (result) { + runFaceupCommands(); + } + if (result && runTriggers) { // Run replacement effects Map repParams = Maps.newHashMap(); @@ -606,6 +613,21 @@ public class Card extends GameEntity implements Comparable { return false; } + public boolean canTransform() { + if (isFaceDown() || !isDoubleFaced()) { + return false; + } + + CardStateName oldState = getCurrentStateName(); + CardStateName destState = oldState == CardStateName.Transformed ? CardStateName.Original : CardStateName.Transformed; + + if (isInPlay() && !getState(destState).getType().isPermanent()) { + return false; + } + + return !hasKeyword("CARDNAME can't transform"); + } + public int getHiddenId() { return view.getHiddenId(); } @@ -746,6 +768,18 @@ public class Card extends GameEntity implements Comparable { view.updateRemembered(this); } } + + public final void removeRemembered(final Iterable list) { + boolean changed = false; + for (T o : list) { + if (rememberedObjects.remove(o)) { + changed = true; + } + } + if (changed) { + view.updateRemembered(this); + } + } public final void clearRemembered() { if (rememberedObjects.isEmpty()) { return; } rememberedObjects.clear(); @@ -1048,18 +1082,19 @@ public class Card extends GameEntity implements Comparable { countersAdded = value; } - public final void addCounter(final CounterType counterType, final int n, final Card source, final boolean applyMultiplier) { - addCounter(counterType, n, source, applyMultiplier, true); + public final int addCounter(final CounterType counterType, final int n, final Player source, final boolean applyMultiplier) { + return addCounter(counterType, n, source, applyMultiplier, true); } - public final void addCounterFireNoEvents(final CounterType counterType, final int n, final Card source, final boolean applyMultiplier) { - addCounter(counterType, n, source, applyMultiplier, false); + public final int addCounterFireNoEvents(final CounterType counterType, final int n, final Player source, final boolean applyMultiplier) { + return addCounter(counterType, n, source, applyMultiplier, false); } @Override - public void addCounter(final CounterType counterType, final int n, final Card source, final boolean applyMultiplier, final boolean fireEvents) { + public int addCounter(final CounterType counterType, final int n, final Player source, final boolean applyMultiplier, final boolean fireEvents) { int addAmount = n; if(addAmount < 0) { addAmount = 0; // As per rule 107.1b + return 0; } final Map repParams = Maps.newHashMap(); repParams.put("Event", "AddCounter"); @@ -1077,7 +1112,7 @@ public class Card extends GameEntity implements Comparable { break; } default: - return; + return 0; } if (canReceiveCounters(counterType)) { @@ -1090,7 +1125,7 @@ public class Card extends GameEntity implements Comparable { } if (addAmount <= 0) { - return; + return 0; } setTotalCountersToAdd(addAmount); @@ -1136,6 +1171,7 @@ public class Card extends GameEntity implements Comparable { getController().addCounterToPermThisTurn(counterType, addAmount); view.updateCounters(this); } + return addAmount; } /** @@ -1429,7 +1465,10 @@ public class Card extends GameEntity implements Comparable { } } } - if (keyword.startsWith("etbCounter")) { + if (keyword.startsWith("CantBeCounteredBy")) { + final String[] p = keyword.split(":"); + sbLong.append(p[2]).append("\r\n"); + } else if (keyword.startsWith("etbCounter")) { final String[] p = keyword.split(":"); final StringBuilder s = new StringBuilder(); if (p.length > 4) { @@ -1551,20 +1590,24 @@ public class Card extends GameEntity implements Comparable { || keyword.startsWith("CantBeBlockedBy ") || keyword.equals("CARDNAME enters the battlefield tapped.") || keyword.startsWith("UpkeepCost")) { - } else if (keyword.startsWith("Provoke") || keyword.startsWith("Ingest") || keyword.equals("Unleash") - || keyword.startsWith("Soulbond") || keyword.equals("Partner") || keyword.equals("Retrace") + } else if (keyword.equals("Provoke") || keyword.equals("Ingest") || keyword.equals("Unleash") + || keyword.equals("Soulbond") || keyword.equals("Partner") || keyword.equals("Retrace") || keyword.equals("Living Weapon") || keyword.equals("Myriad") || keyword.equals("Exploit") - || keyword.equals("Changeling") || keyword.equals("Delve") || keyword.startsWith("Dredge") - || (keyword.startsWith("Split second") && !sb.toString().contains("Split second")) + || keyword.equals("Changeling") || keyword.equals("Delve") + || keyword.equals("Split second") || keyword.equals("Suspend") // for the ones without amounnt || keyword.equals("Hideaway") || keyword.equals("Ascend") || keyword.equals("Totem armor") || keyword.equals("Battle cry") || keyword.equals("Devoid")){ sbLong.append(keyword + " (" + inst.getReminderText() + ")"); - } else if (keyword.startsWith("Modular") || keyword.startsWith("Bloodthirst") - || keyword.startsWith("Fabricate") || keyword.startsWith("Soulshift") + } else if (keyword.startsWith("Partner:")) { + final String[] k = keyword.split(":"); + sbLong.append("Partner with " + k[1] + " (" + inst.getReminderText() + ")"); + } else if (keyword.startsWith("Modular") || keyword.startsWith("Bloodthirst") || keyword.startsWith("Dredge") + || keyword.startsWith("Fabricate") || keyword.startsWith("Soulshift") || keyword.startsWith("Bushido") || keyword.startsWith("Crew") || keyword.startsWith("Tribute") || keyword.startsWith("Absorb") || keyword.startsWith("Graft") || keyword.startsWith("Fading") || keyword.startsWith("Vanishing") + || keyword.startsWith ("Afflict") || keyword.startsWith ("Poisonous") || keyword.startsWith("Rampage") || keyword.startsWith("Renown") || keyword.startsWith("Annihilator") || keyword.startsWith("Devour")) { final String[] k = keyword.split(":"); sbLong.append(k[0] + " " + k[1] + " (" + inst.getReminderText() + ")"); @@ -1583,9 +1626,8 @@ public class Card extends GameEntity implements Comparable { || keyword.equals("Exalted") || keyword.equals("Extort")|| keyword.equals("Flanking") || keyword.equals("Horsemanship") || keyword.equals("Infect")|| keyword.equals("Persist") || keyword.equals("Phasing") || keyword.equals("Shadow")|| keyword.equals("Skulk") - || keyword.equals("Undying") || keyword.equals("Wither") - || keyword.startsWith ("Afflict") || keyword.startsWith("Bushido") || keyword.startsWith ("Poisonous") - || keyword.startsWith ("Rampage") || keyword.startsWith("Cascade")) { + || keyword.equals("Undying") || keyword.equals("Wither") || keyword.equals("Cascade") + || keyword.equals("Mentor")) { if (sb.length() != 0) { sb.append("\r\n"); } @@ -1603,7 +1645,7 @@ public class Card extends GameEntity implements Comparable { || keyword.startsWith("Surge") || keyword.startsWith("Transmute") || keyword.startsWith("Suspend") || keyword.equals("Undaunted") || keyword.startsWith("Monstrosity") || keyword.startsWith("Embalm") || keyword.startsWith("Level up") || keyword.equals("Prowess") || keyword.startsWith("Eternalize") - || keyword.startsWith("Reinforce") || keyword.startsWith("Champion") + || keyword.startsWith("Reinforce") || keyword.startsWith("Champion") || keyword.startsWith("Prowl") || keyword.startsWith("Amplify") || keyword.startsWith("Ninjutsu") || keyword.startsWith("Cycling") || keyword.startsWith("TypeCycling")) { // keyword parsing takes care of adding a proper description @@ -1918,13 +1960,17 @@ public class Card extends GameEntity implements Comparable { sbBefore.append(keyword + " (" + inst.getReminderText() + ")"); sbBefore.append("\r\n"); } else if(keyword.equals("Conspire") || keyword.equals("Epic") - || keyword.equals("Suspend")) { + || keyword.equals("Suspend") || keyword.equals("Jump-start")) { sbAfter.append(keyword + " (" + inst.getReminderText() + ")"); sbAfter.append("\r\n"); } else if (keyword.startsWith("Ripple")) { sbBefore.append(TextUtil.fastReplace(keyword, ":", " ") + " (" + inst.getReminderText() + ")"); sbBefore.append("\r\n"); - } else if (keyword.startsWith("Escalate") || keyword.startsWith("Buyback")) { + } else if (keyword.startsWith("Dredge")) { + sbAfter.append(TextUtil.fastReplace(keyword, ":", " ") + " (" + inst.getReminderText() + ")"); + sbAfter.append("\r\n"); + } else if (keyword.startsWith("Escalate") || keyword.startsWith("Buyback") + || keyword.startsWith("Prowl")) { final String[] k = keyword.split(":"); final String manacost = k[1]; final Cost cost = new Cost(manacost, false); @@ -2014,9 +2060,7 @@ public class Card extends GameEntity implements Comparable { sbAfter.append(")"); sbAfter.append("\r\n"); } else if (keyword.startsWith("Replicate")) { - // currently Replicate ignores the cost there - - final String[] n = keyword.split(" "); + final String[] n = keyword.split(":"); final Cost cost = new Cost(n[1], false); sbBefore.append("Replicate ").append(cost.toSimpleString()); sbBefore.append(" (When you cast this spell, copy it for each time you paid its replicate cost."); @@ -2119,7 +2163,7 @@ public class Card extends GameEntity implements Comparable { */ public final SpellAbility getFirstAttachSpell() { for (final SpellAbility sa : getSpells()) { - if (sa.getApi() == ApiType.Attach) { + if (sa.getApi() == ApiType.Attach && !sa.isSuppressed()) { return sa; } } @@ -2351,6 +2395,26 @@ public class Card extends GameEntity implements Comparable { public final void addUntapCommand(final GameCommand c) { untapCommandList.add(c); } + + public final void addUnattachCommand(final GameCommand c) { + unattachCommandList.add(c); + } + + public final void addFaceupCommand(final GameCommand c) { + faceupCommandList.add(c); + } + + public final void runUnattachCommands() { + for (final GameCommand c : unattachCommandList) { + c.run(); + } + } + + public final void runFaceupCommands() { + for (final GameCommand c : faceupCommandList) { + c.run(); + } + } public final void addChangeControllerCommand(final GameCommand c) { changeControllerCommandList.add(c); @@ -2643,6 +2707,7 @@ public class Card extends GameEntity implements Comparable { runParams.put("Equipment", this); runParams.put("Card", c); getGame().getTriggerHandler().runTrigger(TriggerType.Unequip, runParams, false); + runUnattachCommands(); } public final void unFortifyCard(final Card c) { // fortification.unEquipCard(fortifiedCard); @@ -2652,6 +2717,7 @@ public class Card extends GameEntity implements Comparable { c.fortifiedBy = c.view.removeCard(c.fortifiedBy, this, TrackableProperty.FortifiedBy); getGame().fireEvent(new GameEventCardAttachment(this, c, null, AttachMethod.Fortify)); + runUnattachCommands(); } public final void unEquipAllCards() { @@ -2729,6 +2795,7 @@ public class Card extends GameEntity implements Comparable { unanimateBestow(); } getGame().fireEvent(new GameEventCardAttachment(this, entity, null, AttachMethod.Enchant)); + runUnattachCommands(); } public final void setType(final CardType type0) { @@ -2776,17 +2843,22 @@ public class Card extends GameEntity implements Comparable { public final void addChangedCardTypes(final CardType addType, final CardType removeType, final boolean removeSuperTypes, final boolean removeCardTypes, final boolean removeSubTypes, - final boolean removeCreatureTypes, final boolean removeArtifactTypes, final long timestamp) { - addChangedCardTypes(addType, removeType, removeSuperTypes, removeCardTypes, removeSubTypes, removeCreatureTypes, removeArtifactTypes, timestamp, true); + final boolean removeLandTypes, final boolean removeCreatureTypes, final boolean removeArtifactTypes, + final boolean removeEnchantmentTypes, + final long timestamp) { + addChangedCardTypes(addType, removeType, removeSuperTypes, removeCardTypes, removeSubTypes, removeLandTypes, + removeCreatureTypes, removeArtifactTypes, removeEnchantmentTypes, timestamp, true); } public final void addChangedCardTypes(final CardType addType, final CardType removeType, final boolean removeSuperTypes, final boolean removeCardTypes, final boolean removeSubTypes, - final boolean removeCreatureTypes, final boolean removeArtifactTypes, final long timestamp, final boolean updateView) { + final boolean removeLandTypes, final boolean removeCreatureTypes, final boolean removeArtifactTypes, + final boolean removeEnchantmentTypes, + final long timestamp, final boolean updateView) { changedCardTypes.put(timestamp, new CardChangedType( addType, removeType, removeSuperTypes, removeCardTypes, removeSubTypes, - removeCreatureTypes, removeArtifactTypes)); + removeLandTypes, removeCreatureTypes, removeArtifactTypes, removeEnchantmentTypes)); if (updateView) { currentState.getView().updateType(currentState); } @@ -2794,13 +2866,19 @@ public class Card extends GameEntity implements Comparable { public final void addChangedCardTypes(final String[] types, final String[] removeTypes, final boolean removeSuperTypes, final boolean removeCardTypes, final boolean removeSubTypes, - final boolean removeCreatureTypes, final boolean removeArtifactTypes, final long timestamp) { - addChangedCardTypes(types, removeTypes, removeSuperTypes, removeCardTypes, removeSubTypes, removeCreatureTypes, removeArtifactTypes, timestamp, true); + final boolean removeLandTypes, final boolean removeCreatureTypes, final boolean removeArtifactTypes, + final boolean removeEnchantmentTypes, + final long timestamp) { + addChangedCardTypes(types, removeTypes, removeSuperTypes, removeCardTypes, removeSubTypes, + removeLandTypes, removeCreatureTypes, removeArtifactTypes, removeEnchantmentTypes, + timestamp, true); } public final void addChangedCardTypes(final String[] types, final String[] removeTypes, final boolean removeSuperTypes, final boolean removeCardTypes, final boolean removeSubTypes, - final boolean removeCreatureTypes, final boolean removeArtifactTypes, final long timestamp, final boolean updateView) { + final boolean removeLandTypes, final boolean removeCreatureTypes, final boolean removeArtifactTypes, + final boolean removeEnchantmentTypes, + final long timestamp, final boolean updateView) { CardType addType = null; CardType removeType = null; if (types != null) { @@ -2812,7 +2890,8 @@ public class Card extends GameEntity implements Comparable { } addChangedCardTypes(addType, removeType, removeSuperTypes, removeCardTypes, removeSubTypes, - removeCreatureTypes, removeArtifactTypes, timestamp, updateView); + removeLandTypes, removeCreatureTypes, removeArtifactTypes, removeEnchantmentTypes, + timestamp, updateView); } public final void removeChangedCardTypes(final long timestamp) { @@ -2863,24 +2942,8 @@ public class Card extends GameEntity implements Comparable { return ColorSet.fromMask(colors); } - // values that are printed on card - public final int getBaseLoyalty() { - return baseLoyalty; - } - public final int getCurrentLoyalty() { - int loyalty = getCounters(CounterType.LOYALTY); - if (loyalty == 0) { - loyalty = baseLoyalty; - } - return loyalty; - } - - // values that are printed on card - public final void setBaseLoyalty(final int n) { - if (baseLoyalty == n) { return; } - baseLoyalty = n; - currentState.getView().updateLoyalty(this); + return getCounters(CounterType.LOYALTY); } // values that are printed on card @@ -2920,14 +2983,14 @@ public class Card extends GameEntity implements Comparable { } public final int getSetPower() { - if (newPT.isEmpty()) { + if (newPTCharacterDefining.isEmpty() && newPT.isEmpty()) { return Integer.MAX_VALUE; } return getLatestPT().getLeft(); } public final int getSetToughness() { - if (newPT.isEmpty()) { + if (newPTCharacterDefining.isEmpty() && newPT.isEmpty()) { return Integer.MAX_VALUE; } return getLatestPT().getRight(); @@ -2943,24 +3006,21 @@ public class Card extends GameEntity implements Comparable { */ private synchronized Pair getLatestPT() { // Find latest set power - // TODO Java 1.8 use comparingLong - Collections.sort(newPT, new Comparator() { - @Override - public int compare(CardPowerToughness o1, CardPowerToughness o2) { - return Long.compare(o1.getTimestamp(),o2.getTimestamp()); - } - }); + Integer power = null, toughness = null; - Integer power = null, - toughness = null; - - int size = newPT.size(); - for(int i = size - 1; i >= 0; i--) { - CardPowerToughness pt = newPT.get(i); - if (power == null && pt.getPower() != null) - power = pt.getPower(); - if (toughness == null && pt.getToughness() != null) - toughness = pt.getToughness(); + // apply CDA first + for (Pair pt : newPTCharacterDefining.values()) { + if (pt.getLeft() != null) + power = pt.getLeft(); + if (pt.getRight() != null) + toughness = pt.getRight(); + } + // now real PT + for (Pair pt : newPT.values()) { + if (pt.getLeft() != null) + power = pt.getLeft(); + if (pt.getRight() != null) + toughness = pt.getRight(); } if (power == null) @@ -2973,20 +3033,28 @@ public class Card extends GameEntity implements Comparable { } public final void addNewPT(final Integer power, final Integer toughness, final long timestamp) { - newPT.add(new CardPowerToughness(power, toughness, timestamp)); + addNewPT(power, toughness, timestamp, false); + } + + public final void addNewPT(final Integer power, final Integer toughness, final long timestamp, final boolean cda) { + if (cda) { + newPTCharacterDefining.put(timestamp, Pair.of(power, toughness)); + } else { + newPT.put(timestamp, Pair.of(power, toughness)); + } currentState.getView().updatePower(this); currentState.getView().updateToughness(this); } public final void removeNewPT(final long timestamp) { - for (int i = 0; i < newPT.size(); i++) { - final CardPowerToughness cardPT = newPT.get(i); - if (cardPT.getTimestamp() == timestamp) { - if (newPT.remove(cardPT)) { - currentState.getView().updatePower(this); - currentState.getView().updateToughness(this); - } - } + boolean removed = false; + + removed |= newPT.remove(timestamp) != null; + removed |= newPTCharacterDefining.remove(timestamp) != null; + + if (removed) { + currentState.getView().updatePower(this); + currentState.getView().updateToughness(this); } } @@ -3272,23 +3340,25 @@ public class Card extends GameEntity implements Comparable { } public final void addChangedCardKeywords(final List keywords, final List removeKeywords, - final boolean removeAllKeywords, final long timestamp) { - addChangedCardKeywords(keywords, removeKeywords, removeAllKeywords, timestamp, true); + final boolean removeAllKeywords, final boolean removeIntrinsicKeywords, final long timestamp) { + addChangedCardKeywords(keywords, removeKeywords, removeAllKeywords, removeIntrinsicKeywords, timestamp, true); } public final void addChangedCardKeywords(final List keywords, final List removeKeywords, - final boolean removeAllKeywords, final long timestamp, final boolean updateView) { + final boolean removeAllKeywords, final boolean removeIntrinsicKeywords, final long timestamp, final boolean updateView) { keywords.removeAll(getCantHaveOrGainKeyword()); // if the key already exists - merge entries final KeywordsChange cks = changedCardKeywords.get(timestamp); if (cks != null) { - final KeywordsChange newCks = cks.merge(keywords, removeKeywords, removeAllKeywords); + final KeywordsChange newCks = cks.merge(keywords, removeKeywords, + removeAllKeywords, removeIntrinsicKeywords); newCks.addKeywordsToCard(this); changedCardKeywords.put(timestamp, newCks); } else { - final KeywordsChange newCks = new KeywordsChange(keywords, removeKeywords, removeAllKeywords); + final KeywordsChange newCks = new KeywordsChange(keywords, removeKeywords, + removeAllKeywords, removeIntrinsicKeywords); newCks.addKeywordsToCard(this); changedCardKeywords.put(timestamp, newCks); } @@ -3298,20 +3368,24 @@ public class Card extends GameEntity implements Comparable { } } - public final void addChangedCardKeywordsInternal(final List keywords, final List removeKeywords, - final boolean removeAllKeywords, final long timestamp, final boolean updateView) { + public final void addChangedCardKeywordsInternal( + final List keywords, final List removeKeywords, + final boolean removeAllKeywords, final boolean removeIntrinsicKeywords, + final long timestamp, final boolean updateView) { KeywordCollection list = new KeywordCollection(); list.insertAll(keywords); list.removeAll(getCantHaveOrGainKeyword()); // if the key already exists - merge entries final KeywordsChange cks = changedCardKeywords.get(timestamp); if (cks != null) { - final KeywordsChange newCks = cks.merge(keywords, removeKeywords, removeAllKeywords); + final KeywordsChange newCks = cks.merge(keywords, removeKeywords, + removeAllKeywords, removeIntrinsicKeywords); newCks.addKeywordsToCard(this); changedCardKeywords.put(timestamp, newCks); } else { - final KeywordsChange newCks = new KeywordsChange(keywords, removeKeywords, removeAllKeywords); + final KeywordsChange newCks = new KeywordsChange(keywords, removeKeywords, + removeAllKeywords, removeIntrinsicKeywords); newCks.addKeywordsToCard(this); changedCardKeywords.put(timestamp, newCks); } @@ -3322,7 +3396,7 @@ public class Card extends GameEntity implements Comparable { } public final void addChangedCardKeywords(final String[] keywords, final String[] removeKeywords, - final boolean removeAllKeywords, final long timestamp) { + final boolean removeAllKeywords, final boolean removeIntrinsicKeywords, final long timestamp) { List keywordsList = Lists.newArrayList(); List removeKeywordsList = Lists.newArrayList(); if (keywords != null) { @@ -3333,7 +3407,8 @@ public class Card extends GameEntity implements Comparable { removeKeywordsList = Lists.newArrayList(Arrays.asList(removeKeywords)); } - addChangedCardKeywords(keywordsList, removeKeywordsList, removeAllKeywords, timestamp); + addChangedCardKeywords(keywordsList, removeKeywordsList, + removeAllKeywords, removeIntrinsicKeywords, timestamp); } public final KeywordsChange removeChangedCardKeywords(final long timestamp) { @@ -3360,8 +3435,17 @@ public class Card extends GameEntity implements Comparable { KeywordCollection keywords = new KeywordCollection(); //final List keywords = Lists.newArrayList(); - - keywords.insertAll(state.getIntrinsicKeywords()); + boolean removeIntrinsic = false; + for (final KeywordsChange ck : changedCardKeywords.values()) { + if (ck.isRemoveIntrinsicKeywords()) { + removeIntrinsic = true; + break; + } + } + + if (!removeIntrinsic) { + keywords.insertAll(state.getIntrinsicKeywords()); + } keywords.insertAll(extrinsicKeyword.getValues()); // see if keyword changes are in effect @@ -3435,7 +3519,8 @@ public class Card extends GameEntity implements Comparable { public final void addChangedTextTypeWord(final String originalWord, final String newWord, final Long timestamp) { changedTextTypes.add(timestamp, originalWord, newWord); if (getType().hasSubtype(originalWord)) { - addChangedCardTypes(CardType.parse(newWord), CardType.parse(originalWord), false, false, false, false, false, timestamp); + addChangedCardTypes(CardType.parse(newWord), CardType.parse(originalWord), + false, false, false, false, false, false, false, timestamp); } updateKeywordsChangedText(timestamp); updateChangedText(); @@ -3474,7 +3559,7 @@ public class Card extends GameEntity implements Comparable { keywordsGrantedByTextChanges.add(newKw); } } - addChangedCardKeywordsInternal(addKeywords, removeKeywords, false, timestamp, true); + addChangedCardKeywordsInternal(addKeywords, removeKeywords, false, false, timestamp, true); } private void updateKeywordsOnRemoveChangedText(final KeywordsChange k) { @@ -3935,7 +4020,7 @@ public class Card extends GameEntity implements Comparable { // Takes one argument like Permanent.Blue+withFlying @Override public final boolean isValid(final String restriction, final Player sourceController, final Card source, SpellAbility spellAbility) { - if (isImmutable() && !source.isRemembered(this) && + if (isImmutable() && source != null && !source.isRemembered(this) && !(restriction.startsWith("Emblem") || restriction.startsWith("Effect"))) { // special case exclusion return false; } @@ -4193,17 +4278,43 @@ public class Card extends GameEntity implements Comparable { return receivedDamageFromThisTurn; } public final void setReceivedDamageFromThisTurn(final Map receivedDamageList) { - receivedDamageFromThisTurn = receivedDamageList; + receivedDamageFromThisTurn = Maps.newHashMap(receivedDamageList); } + + public final Map getReceivedDamageFromPlayerThisTurn() { + return receivedDamageFromPlayerThisTurn; + } + + public final void setReceivedDamageFromPlayerThisTurn(final Map receivedDamageList) { + receivedDamageFromPlayerThisTurn = Maps.newHashMap(receivedDamageList); + } + + public int getReceivedDamageByPlayerThisTurn(final Player p) { + if (receivedDamageFromPlayerThisTurn.containsKey(p)) { + return receivedDamageFromPlayerThisTurn.get(p); + } + return 0; + } + public final void addReceivedDamageFromThisTurn(final Card c, final int damage) { int currentDamage = 0; if (receivedDamageFromThisTurn.containsKey(c)) { currentDamage = receivedDamageFromThisTurn.get(c); } receivedDamageFromThisTurn.put(c, damage+currentDamage); + + Player p = c.getController(); + if (p != null) { + currentDamage = 0; + if (receivedDamageFromPlayerThisTurn.containsKey(p)) { + currentDamage = receivedDamageFromPlayerThisTurn.get(p); + } + receivedDamageFromPlayerThisTurn.put(p, damage+currentDamage); + } } public final void resetReceivedDamageFromThisTurn() { receivedDamageFromThisTurn.clear(); + receivedDamageFromPlayerThisTurn.clear(); } public final int getTotalDamageRecievedThisTurn() { @@ -4593,7 +4704,7 @@ public class Card extends GameEntity implements Comparable { if (isInPlay()) { if (wither) { - addCounter(CounterType.M1M1, damageIn, source, true); + addCounter(CounterType.M1M1, damageIn, source.getController(), true); damageType = DamageType.M1M1Counters; } else { @@ -4738,8 +4849,10 @@ public class Card extends GameEntity implements Comparable { public final void animateBestow(final boolean updateView) { bestowTimestamp = getGame().getNextTimestamp(); addChangedCardTypes(new CardType(Collections.singletonList("Aura")), - new CardType(Collections.singletonList("Creature")), false, false, false, false, true, bestowTimestamp, updateView); - addChangedCardKeywords(Collections.singletonList("Enchant creature"), Lists.newArrayList(), false, bestowTimestamp, updateView); + new CardType(Collections.singletonList("Creature")), + false, false, false, false, false, false, true, bestowTimestamp, updateView); + addChangedCardKeywords(Collections.singletonList("Enchant creature"), Lists.newArrayList(), + false, false, bestowTimestamp, updateView); } public final void unanimateBestow() { @@ -4763,7 +4876,7 @@ public class Card extends GameEntity implements Comparable { timestamp = t; } public boolean equalsWithTimestamp(Card c) { - return c == this && c.getTimestamp() == timestamp; + return equals(c) && c.getTimestamp() == timestamp; } /** @@ -4982,7 +5095,7 @@ public class Card extends GameEntity implements Comparable { } public boolean isInZone(final ZoneType zone) { - Zone z = getZone(); + Zone z = this.getLastKnownZone(); return z != null && z.is(zone); } @@ -5040,16 +5153,6 @@ public class Card extends GameEntity implements Comparable { result.setFalse(); } break; - case "CARDNAME can't be enchanted.": - if (source.isAura()) { - result.setFalse(); - } - break; - case "CARDNAME can't be equipped.": - if (source.isEquipment()) { - result.setFalse(); - } - break; case "CARDNAME can't be the target of spells.": if (sa.isSpell()) { result.setFalse(); @@ -5673,11 +5776,7 @@ public class Card extends GameEntity implements Comparable { * and when the Card really enters the Battlefield with the counters * @return map of counters */ - public final void addEtbCounter(CounterType type, Integer val) { - addEtbCounter(type, val, this); - } - - public final void addEtbCounter(CounterType type, Integer val, final Card source) { + public final void addEtbCounter(CounterType type, Integer val, final Player source) { int old = etbCounters.contains(source, type) ? etbCounters.get(source, type) : 0; etbCounters.put(source, type, old + val); } @@ -5686,10 +5785,24 @@ public class Card extends GameEntity implements Comparable { etbCounters.clear(); } - public final void putEtbCounters() { - for (Table.Cell e : etbCounters.cellSet()) { - this.addCounter(e.getColumnKey(), e.getValue(), e.getRowKey(), true); + public final Set> getEtbCounters() { + return etbCounters.cellSet(); + } + + public final boolean putEtbCounters() { + boolean changed = false; + for (Table.Cell e : etbCounters.cellSet()) { + CounterType ct = e.getColumnKey(); + if (this.isLKI()) { + if (canReceiveCounters(ct)) { + setCounters(ct, getCounters(ct) + e.getValue()); + changed = true; + } + } else { + changed |= addCounter(ct, e.getValue(), e.getRowKey(), true) > 0; + } } + return changed; } public final void clearTemporaryVars() { diff --git a/forge-game/src/main/java/forge/game/card/CardFaceView.java b/forge-game/src/main/java/forge/game/card/CardFaceView.java new file mode 100644 index 00000000000..89bc857b003 --- /dev/null +++ b/forge-game/src/main/java/forge/game/card/CardFaceView.java @@ -0,0 +1,26 @@ +package forge.game.card; + +import java.io.Serializable; + +public class CardFaceView implements Serializable, Comparable { + private String name; + + public CardFaceView(String faceName) { + this.name = faceName; + } + + public String getName() { return name;} + + public void setName(String name) { + this.name = name; + } + + public String toString() { + return name; + } + + @Override + public int compareTo(CardFaceView o) { + return this.getName().compareTo(o.getName()); + } +} \ No newline at end of file diff --git a/forge-game/src/main/java/forge/game/card/CardFactory.java b/forge-game/src/main/java/forge/game/card/CardFactory.java index b5fd7eea20c..42df8d6e1f7 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactory.java +++ b/forge-game/src/main/java/forge/game/card/CardFactory.java @@ -147,20 +147,14 @@ public class CardFactory { /** *

- * copySpellontoStack. + * copySpellHost. + * Helper function for copySpellAbilityAndPossiblyHost. + * creates a copy of the card hosting the ability we want to copy. + * Updates various attributes of the card that the copy needs, + * which wouldn't ordinarily get set during a simple Card.copy() call. *

- * - * @param source - * a {@link forge.game.card.Card} object. - * @param original - * a {@link forge.game.card.Card} object. - * @param sa - * a {@link forge.game.spellability.SpellAbility} object. - * @param bCopyDetails - * a boolean. - */ - public final static SpellAbility copySpellAbilityAndSrcCard(final Card source, final Card original, final SpellAbility sa, final boolean bCopyDetails) { - //Player originalController = original.getController(); + * */ + private final static Card copySpellHost(final Card source, final Card original, final SpellAbility sa, final boolean bCopyDetails){ Player controller = sa.getActivatingPlayer(); final Card c = copyCard(original, true); @@ -178,12 +172,59 @@ public class CardFactory { c.addColor(finalColors, !sourceSA.hasParam("OverwriteColors"), c.getTimestamp()); } - + c.clearControllers(); c.setOwner(controller); c.setCopiedSpell(true); - // set counters (e.g. Yisan, the Wanderer Bard) - c.setCounters(original.getCounters()); + + if (bCopyDetails) { + c.setXManaCostPaid(original.getXManaCostPaid()); + c.setXManaCostPaidByColor(original.getXManaCostPaidByColor()); + c.setKickerMagnitude(original.getKickerMagnitude()); + + // Rule 706.10 : Madness is copied + if (original.isInZone(ZoneType.Stack)) { + c.setMadness(original.isMadness()); + + final SpellAbilityStackInstance si = controller.getGame().getStack().getInstanceFromSpellAbility(sa); + if (si != null) { + c.setXManaCostPaid(si.getXManaPaid()); + } + } + + for (OptionalCost cost : original.getOptionalCostsPaid()) { + c.addOptionalCostPaid(cost); + } + } + return c; + } + /** + *

+ * copySpellAbilityAndPossiblyHost. + * creates a copy of the Spell/ability `sa`, and puts it on the stack. + * if sa is a spell, that spell's host is also copied. + *

+ * + * @param source + * a {@link forge.game.card.Card} object. The card doing the copying. + * @param original + * a {@link forge.game.card.Card} object. The host of the spell or ability being copied. + * @param sa + * a {@link forge.game.spellability.SpellAbility} object. The spell or ability being copied. + * @param bCopyDetails + * a boolean. + */ + public final static SpellAbility copySpellAbilityAndPossiblyHost(final Card source, final Card original, final SpellAbility sa, final boolean bCopyDetails) { + Player controller = sa.getActivatingPlayer(); + + //it is only necessary to copy the host card if the SpellAbility is a spell, not an ability + final Card c; + if (sa.isSpell()){ + c = copySpellHost(source, original, sa, bCopyDetails); + } + else { + c = original; + } final SpellAbility copySA; if (sa.isTrigger()) { @@ -191,7 +232,16 @@ public class CardFactory { } else { copySA = sa.copy(c, false); } - c.getCurrentState().setNonManaAbilities(copySA); + + if (sa.isSpell()){ + //only update c's abilities if c is a copy. + //(it would be nice to move this into `copySpellHost`, + // so all the c-mutating code is together in one place. + // but copySA doesn't exist until after `copySpellHost` finishes executing, + // so it's hard to resolve that dependency.) + c.getCurrentState().setNonManaAbilities(copySA); + } + copySA.setCopied(true); //remove all costs if (!copySA.isTrigger()) { @@ -204,23 +254,6 @@ public class CardFactory { copySA.setActivatingPlayer(controller); if (bCopyDetails) { - c.setXManaCostPaid(original.getXManaCostPaid()); - c.setXManaCostPaidByColor(original.getXManaCostPaidByColor()); - c.setKickerMagnitude(original.getKickerMagnitude()); - - // Rule 706.10 : Madness is copied - if (original.isInZone(ZoneType.Stack)) { - c.setMadness(original.isMadness()); - - final SpellAbilityStackInstance si = controller.getGame().getStack().getInstanceFromSpellAbility(sa); - if (si != null) { - c.setXManaCostPaid(si.getXManaPaid()); - } - } - - for (OptionalCost cost : original.getOptionalCostsPaid()) { - c.addOptionalCostPaid(cost); - } copySA.setPaidHash(sa.getPaidHash()); } return copySA; @@ -346,24 +379,13 @@ public class CardFactory { private static void buildPlaneswalkerAbilities(Card card) { CardState state = card.getCurrentState(); // etbCounter only for Original Card - if (card.getBaseLoyalty() > 0 && card.getCurrentStateName() == CardStateName.Original) { - final String loyalty = Integer.toString(card.getBaseLoyalty()); + if (state.getBaseLoyalty() > 0) { + final String loyalty = Integer.toString(state.getBaseLoyalty()); // keyword need to be added to state directly, so init can be disabled if (state.addIntrinsicKeyword("etbCounter:LOYALTY:" + loyalty + ":no Condition:no desc", false) != null) { card.updateKeywords(); } } - - //Planeswalker damage redirection - String replacement = "Event$ DamageDone | ActiveZones$ Battlefield | IsCombat$ False | ValidSource$ Card.OppCtrl,Emblem.OppCtrl" - + " | ValidTarget$ You | Optional$ True | OptionalDecider$ Opponent | ReplaceWith$ ChooseDmgPW | Secondary$ True" - + " | AICheckSVar$ DamagePWAI | AISVarCompare$ GT4 | Description$ Redirect damage to " + card.toString(); - state.addReplacementEffect(ReplacementHandler.parseReplacement(replacement, card, true)); - state.setSVar("ChooseDmgPW", "AB$ ChooseCard | Cost$ 0 | Defined$ ReplacedSourceController | References$ DamagePWAI | Choices$ Planeswalker.YouCtrl" + - " | ChoiceZone$ Battlefield | Mandatory$ True | SubAbility$ DamagePW | ChoiceTitle$ Choose a planeswalker to redirect damage"); - state.setSVar("DamagePW", "DB$ ReplaceEffect | VarName$ Affected | VarValue$ ChosenCard | VarType$ Card"); - state.setSVar("DamagePWAI", "ReplaceCount$DamageAmount/NMinus.DamagePWY"); - state.setSVar("DamagePWY", "Count$YourLifeTotal"); } private static Card readCard(final CardRules rules, final IPaperCard paperCard, int cardId, Game game) { @@ -425,7 +447,8 @@ public class CardFactory { c.setName(face.getName()); c.setManaCost(face.getManaCost()); c.setText(face.getNonAbilityText()); - if (face.getInitialLoyalty() > 0) c.setBaseLoyalty(face.getInitialLoyalty()); + + c.getCurrentState().setBaseLoyalty(face.getInitialLoyalty()); c.setOracleText(face.getOracleText()); @@ -563,7 +586,6 @@ public class CardFactory { public static void copyState(final Card from, final CardStateName fromState, final Card to, final CardStateName toState, boolean updateView) { // copy characteristics not associated with a state - to.setBaseLoyalty(from.getBaseLoyalty()); to.setBasePowerString(from.getBasePowerString()); to.setBaseToughnessString(from.getBaseToughnessString()); to.setText(from.getSpellText()); diff --git a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java index 72f6c28a315..452f49d69ea 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -79,6 +79,7 @@ public class CardFactoryUtil { " | SpellDescription$ Add {" + strcolor + "}."; SpellAbility sa = AbilityFactory.getAbility(abString, state); sa.setIntrinsic(true); // always intristic + sa.setBasicLandAbility(true); // to exclude it from other suspress effects return sa; } @@ -299,10 +300,15 @@ public class CardFactoryUtil { if (!isCounterable(c)) { return false; } - // Autumn's Veil - if (c.hasKeyword("CARDNAME can't be countered by blue or black spells.") && sa.isSpell() - && (sa.getHostCard().isBlack() || sa.getHostCard().isBlue())) { - return false; + + for (KeywordInterface k : c.getKeywords()) { + final String o = k.getOriginal(); + if (o.startsWith("CantBeCounteredBy")) { + final String m[] = o.split(":"); + if (sa.isValid(m[1].split(","), c.getController(), c, null)) { + return false; + } + } } return true; } @@ -580,7 +586,9 @@ public class CardFactoryUtil { if (value.contains("LifeGainedThisTurn")) { return doXMath(player.getLifeGainedThisTurn(), m, source); } - + if (value.contains("LifeGainedByTeamThisTurn")) { + return doXMath(player.getLifeGainedByTeamThisTurn(), m, source); + } if (value.contains("PoisonCounters")) { return doXMath(player.getPoisonCounters(), m, source); } @@ -880,7 +888,11 @@ public class CardFactoryUtil { if (sq[0].equals("YouDrewThisTurn")) { - return doXMath(c.getController().getNumDrawnThisTurn(), m, c); + return doXMath(cc.getNumDrawnThisTurn(), m, c); + } + + if (sq[0].equals("YouSurveilThisTurn")) { + return doXMath(cc.getSurveilThisTurn(), m, c); } if (sq[0].equals("FirstSpellTotalManaSpent")) { @@ -895,11 +907,18 @@ public class CardFactoryUtil { if (sq[0].equals("StormCount")) { return doXMath(game.getStack().getSpellsCastThisTurn().size() - 1, m, c); } + if (sq[0].startsWith("DamageDoneByPlayerThisTurn")) { + int sum = 0; + for (Player p : AbilityUtils.getDefinedPlayers(c, sq[1], null)) { + sum += c.getReceivedDamageByPlayerThisTurn(p); + } + return doXMath(sum, m, c); + } if (sq[0].equals("DamageDoneThisTurn")) { return doXMath(c.getDamageDoneThisTurn(), m, c); } if (sq[0].equals("BloodthirstAmount")) { - return doXMath(c.getController().getBloodthirstAmount(), m, c); + return doXMath(cc.getBloodthirstAmount(), m, c); } if (sq[0].equals("RegeneratedThisTurn")) { return doXMath(c.getRegeneratedThisTurn(), m, c); @@ -950,6 +969,9 @@ public class CardFactoryUtil { if (sq[0].contains("LifeYouGainedThisTurn")) { return doXMath(cc.getLifeGainedThisTurn(), m, c); } + if (sq[0].contains("LifeYourTeamGainedThisTurn")) { + return doXMath(cc.getLifeGainedByTeamThisTurn(), m, c); + } if (sq[0].contains("LifeOppsLostThisTurn")) { int lost = 0; for (Player opp : cc.getOpponents()) { @@ -957,7 +979,6 @@ public class CardFactoryUtil { } return doXMath(lost, m, c); } - if (sq[0].equals("TotalDamageDoneByThisTurn")) { return doXMath(c.getTotalDamageDoneBy(), m, c); } @@ -1487,6 +1508,18 @@ public class CardFactoryUtil { } } + // Count$InTargetedHand (targeted player's cards in hand) + if (sq[0].contains("InTargetedLibrary")) { + for (final SpellAbility sa : c.getCurrentState().getNonManaAbilities()) { + final SpellAbility saTargeting = sa.getSATargetingPlayer(); + if (saTargeting != null) { + for (final Player tgtP : saTargeting.getTargets().getTargetPlayers()) { + someCards.addAll(tgtP.getCardsIn(ZoneType.Library)); + } + } + } + } + // Count$InTargetedHand (targeted player's cards in hand) if (sq[0].contains("InEnchantedHand")) { GameEntity o = c.getEnchanting(); @@ -2080,7 +2113,7 @@ public class CardFactoryUtil { String keyword = inst.getOriginal(); if (keyword.startsWith("Afflict")) { - final String[] k = keyword.split(" "); + final String[] k = keyword.split(":"); final String n = k[1]; final String trigStr = "Mode$ AttackerBlocked | ValidCard$ Card.Self | TriggerZones$ Battlefield " + @@ -2140,27 +2173,28 @@ public class CardFactoryUtil { inst.addTrigger(trigger); } else if (keyword.startsWith("Bushido")) { - final String[] k = keyword.split(" ", 2); + final String[] k = keyword.split(":"); final String n = k[1]; - final String name = "Bushido" + n; + final String trigBlock = "Mode$ Blocks | ValidCard$ Card.Self | Secondary$ True" + + " | TriggerDescription$ Bushido "+ n + " (" + inst.getReminderText() + ")"; - final String trigBlock = "Mode$ Blocks | ValidCard$ Card.Self | Execute$ Trig" + name + "Pump | Secondary$ True" - + " | TriggerDescription$ "+ keyword + " (" + inst.getReminderText() + ")"; - - final String trigBlocked = "Mode$ AttackerBlocked | ValidCard$ Card.Self | Execute$ Trig" + name + "Pump | Secondary$ True " - + " | TriggerDescription$ "+ keyword + " (" + inst.getReminderText() + ")"; + final String trigBlocked = "Mode$ AttackerBlocked | ValidCard$ Card.Self | Secondary$ True " + + " | TriggerDescription$ Bushido "+ n + " (" + inst.getReminderText() + ")"; String pumpStr = "DB$ Pump | Defined$ Self | NumAtt$ " + n + " | NumDef$ " + n; + + SpellAbility pump = AbilityFactory.getAbility(pumpStr, card); if ("X".equals(n)) { - pumpStr = "DB$ Pump | Defined$ Self | NumAtt$ " + name + " | NumDef$ " + name + " | References$ "+ name; - card.setSVar(name, "Count$Valid Creature.attacking"); + pump.setSVar("X", "Count$Valid Creature.attacking"); } - card.setSVar("Trig" + name + "Pump", pumpStr); final Trigger bushidoTrigger1 = TriggerHandler.parseTrigger(trigBlock, card, intrinsic); final Trigger bushidoTrigger2 = TriggerHandler.parseTrigger(trigBlocked, card, intrinsic); + bushidoTrigger1.setOverridingAbility(pump); + bushidoTrigger2.setOverridingAbility(pump); + inst.addTrigger(bushidoTrigger1); inst.addTrigger(bushidoTrigger2); } else if (keyword.equals("Cascade")) { @@ -2332,7 +2366,7 @@ public class CardFactoryUtil { + "TriggerZones$ Battlefield | Secondary$ True | TriggerDescription$ " + "Exalted (" + inst.getReminderText() + ")"; - final String effect = "DB$ Pump | Defined$ TriggeredAttacker | NumAtt$ +1 | NumDef$ +1"; + final String effect = "DB$ Pump | Defined$ TriggeredAttackerLKICopy | NumAtt$ +1 | NumDef$ +1"; final Trigger trigger = TriggerHandler.parseTrigger(trig, card, intrinsic); trigger.setOverridingAbility(AbilityFactory.getAbility(effect, card)); @@ -2411,7 +2445,7 @@ public class CardFactoryUtil { " | TriggerZones$ Battlefield | Secondary$ True " + " | TriggerDescription$ Flanking (" + inst.getReminderText() + ")"); - final String effect = "DB$ Pump | Defined$ TriggeredBlocker | NumAtt$ -1 | NumDef$ -1"; + final String effect = "DB$ Pump | Defined$ TriggeredBlockerLKICopy | NumAtt$ -1 | NumDef$ -1"; final Trigger trigger = TriggerHandler.parseTrigger(trigFlanking.toString(), card, intrinsic); trigger.setOverridingAbility(AbilityFactory.getAbility(effect, card)); @@ -2615,7 +2649,7 @@ public class CardFactoryUtil { final String trigStr = "Mode$ Attacks | ValidCard$ Card.Self | Secondary$ True " + " | TriggerDescription$ Melee (" + inst.getReminderText() + ")"; - final String effect = "DB$ Pump | Defined$ TriggeredAttacker | NumAtt$ MeleeX | NumDef$ MeleeX"; + final String effect = "DB$ Pump | Defined$ TriggeredAttackerLKICopy | NumAtt$ MeleeX | NumDef$ MeleeX"; final Trigger trigger = TriggerHandler.parseTrigger(trigStr.toString(), card, intrinsic); SpellAbility sa = AbilityFactory.getAbility(effect, card); @@ -2623,6 +2657,21 @@ public class CardFactoryUtil { sa.setIntrinsic(intrinsic); trigger.setOverridingAbility(sa); + inst.addTrigger(trigger); + } else if (keyword.equals("Mentor")) { + final String trigStr = "Mode$ Attacks | ValidCard$ Card.Self | Secondary$ True " + + " | TriggerDescription$ Mentor (" + inst.getReminderText() + ")"; + + final String effect = "DB$ PutCounter | CounterType$ P1P1 | CounterNum$ 1" + + " | ValidTgts$ Creature.attacking+powerLTX" + + " | TgtPrompt$ Select target attacking creature with less power"; + final Trigger trigger = TriggerHandler.parseTrigger(trigStr.toString(), card, intrinsic); + + SpellAbility sa = AbilityFactory.getAbility(effect, card); + sa.setSVar("X", "Count$CardPower"); + sa.setIntrinsic(intrinsic); + trigger.setOverridingAbility(sa); + inst.addTrigger(trigger); } else if (keyword.startsWith("Miracle")) { final String[] k = keyword.split(":"); @@ -2710,6 +2759,23 @@ public class CardFactoryUtil { card.setSVar("MyriadCleanup", dbString4); inst.addTrigger(parsedTrigger); + } else if (keyword.startsWith("Partner:")) { + // Partner With + final String[] k = keyword.split(":"); + final String trigStr = "Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield " + + "| ValidCard$ Card.Self | Secondary$ True " + + "| TriggerDescription$ Partner with " + k[1] + " (" + inst.getReminderText() + ")"; + // replace , for ; in the ChangeZone + k[1] = k[1].replace(",", ";"); + + final String effect = "DB$ ChangeZone | ValidTgts$ Player | TgtPrompt$ Select target player" + + " | Origin$ Library | Destination$ Hand | ChangeType$ Card.named" + k[1] + + " | ChangeNum$ 1 | Hidden$ True | Chooser$ Targeted | Optional$ Targeted | AILogic$ Always"; + + final Trigger trigger = TriggerHandler.parseTrigger(trigStr, card, intrinsic); + trigger.setOverridingAbility(AbilityFactory.getAbility(effect, card)); + + inst.addTrigger(trigger); } else if (keyword.equals("Persist")) { final String trigStr = "Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | OncePerEffect$ True " + " | ValidCard$ Card.Self+counters_EQ0_M1M1 | Secondary$ True" + @@ -2721,10 +2787,10 @@ public class CardFactoryUtil { trigger.setOverridingAbility(AbilityFactory.getAbility(effect, card)); inst.addTrigger(trigger); } else if (keyword.startsWith("Poisonous")) { - final String[] k = keyword.split(" "); + final String[] k = keyword.split(":"); final String n = k[1]; final String trigStr = "Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Secondary$ True" - + " | TriggerZones$ Battlefield | TriggerDescription$ " + keyword + " (" + inst.getReminderText() + ")"; + + " | TriggerZones$ Battlefield | TriggerDescription$ Poisonous " + n + " (" + inst.getReminderText() + ")"; final Trigger parsedTrigger = TriggerHandler.parseTrigger(trigStr.toString(), card, intrinsic); @@ -2764,14 +2830,14 @@ public class CardFactoryUtil { card.setSVar("BuffedBy", "Card.nonCreature+nonLand"); // for the AI } } else if (keyword.startsWith("Rampage")) { - final String[] k = keyword.split(" "); + final String[] k = keyword.split(":"); final String n = k[1]; final String trigStr = "Mode$ AttackerBlocked | ValidCard$ Card.Self | TriggerZones$ Battlefield " + " | ValidBlocker$ Creature | MinBlockers$ 1 | Secondary$ True " + " | TriggerDescription$ Rampage " + n + " (" + inst.getReminderText() + ")"; - final String effect = "DB$ Pump | Defined$ TriggeredAttacker" + + final String effect = "DB$ Pump | Defined$ TriggeredAttackerLKICopy" + " | NumAtt$ Rampage" + n + " | NumDef$ Rampage" + n; final Trigger trigger = TriggerHandler.parseTrigger(trigStr.toString(), card, intrinsic); @@ -3194,7 +3260,7 @@ public class CardFactoryUtil { inst.addReplacement(re); } else if (keyword.startsWith("Dredge")) { - final String dredgeAmount = keyword.split(" ")[1]; + final String dredgeAmount = keyword.split(":")[1]; final String actualRep = "Event$ Draw | ActiveZones$ Graveyard | ValidPlayer$ You | " + "Secondary$ True | Optional$ True | CheckSVar$ " @@ -3264,8 +3330,9 @@ public class CardFactoryUtil { sb.append("Event$ Moved | ValidCard$ Card.Self | Origin$ Stack | ExcludeDestination$ Exile "); sb.append("| ValidStackSa$ Spell.Flashback | Description$ Flashback"); - if (keyword.contains(" ")) { - final Cost cost = new Cost(keyword.substring(10), false); + if (keyword.contains(":")) { + final String k[] = keyword.split(":"); + final Cost cost = new Cost(k[1], false); sb.append( cost.isOnlyManaCost() ? " " : "—"); sb.append(cost.toSimpleString()); @@ -3307,6 +3374,29 @@ public class CardFactoryUtil { final ReplacementEffect re = makeEtbCounter(sb.toString(), card, intrinsic); + inst.addReplacement(re); + } else if (keyword.equals("Jump-start")) { + StringBuilder sb = new StringBuilder(); + sb.append("Event$ Moved | ValidCard$ Card.Self | Origin$ Stack | ExcludeDestination$ Exile "); + sb.append("| Secondary$ True | ValidStackSa$ Spell.Jumpstart | Description$ Jump-start ("); + sb.append(inst.getReminderText()); + sb.append(")"); + + String repeffstr = sb.toString(); + + String abExile = "DB$ ChangeZone | Defined$ Self | Origin$ Stack | Destination$ Exile"; + + SpellAbility saExile = AbilityFactory.getAbility(abExile, card); + + if (!intrinsic) { + saExile.setIntrinsic(false); + } + + ReplacementEffect re = ReplacementHandler.parseReplacement(repeffstr, card, intrinsic); + re.setLayer(ReplacementLayer.Other); + + re.setOverridingAbility(saExile); + inst.addReplacement(re); } else if (keyword.startsWith("Madness")) { // Set Madness Replacement effects @@ -3677,8 +3767,12 @@ public class CardFactoryUtil { final SpellAbility origSA = card.getFirstSpellAbility(); // append to original SA - origSA.appendSubAbility(newSA); + origSA.appendSubAbility(newSA); } else if (keyword.startsWith("Equip")) { + if (!keyword.contains(":")) { + System.err.println("Malformed Equip entry! - Card: " + card.toString()); + return; + } String[] k = keyword.split(":"); // Get cost string String equipCost = k[1]; @@ -3743,13 +3837,12 @@ public class CardFactoryUtil { sa.setTemporary(!intrinsic); inst.addSpellAbility(sa); - } else if (keyword.startsWith("Evoke")) { final String[] k = keyword.split(":"); + final Cost evokedCost = new Cost(k[1], false); final SpellAbility sa = card.getFirstSpellAbility(); - final SpellAbility newSA = sa.copy(); - final Cost evokedCost = new Cost(k[1], false); + final SpellAbility newSA = sa.copyWithDefinedCost(evokedCost); final StringBuilder desc = new StringBuilder(); desc.append("Evoke ").append(evokedCost.toSimpleString()).append(" ("); @@ -3762,33 +3855,21 @@ public class CardFactoryUtil { sb.append(card.getName()).append(" (Evoked)"); newSA.setStackDescription(sb.toString()); newSA.setBasicSpell(false); - newSA.setPayCosts(evokedCost); newSA.setEvoke(true); newSA.setIntrinsic(intrinsic); newSA.setTemporary(!intrinsic); inst.addSpellAbility(newSA); - - } else if (keyword.startsWith("Fortify")) { - final String equipString = keyword.substring(7); - final String[] equipExtras = equipString.contains("|") ? equipString.split("\\|", 2) : null; + String[] k = keyword.split(":"); // Get cost string - String equipCost = ""; - if (equipExtras != null) { - equipCost = equipExtras[0].trim(); - } else { - equipCost = equipString.trim(); - } + String equipCost = k[1]; // Create attach ability string final StringBuilder abilityStr = new StringBuilder(); abilityStr.append("AB$ Attach | Cost$ "); abilityStr.append(equipCost); abilityStr.append(" | ValidTgts$ Land.YouCtrl | TgtPrompt$ Select target land you control "); abilityStr.append("| SorcerySpeed$ True | AILogic$ Pump | IsPresent$ Fortification.Self+nonCreature "); - if (equipExtras != null) { - abilityStr.append("| ").append(equipExtras[1]).append(" "); - } abilityStr.append("| PrecostDesc$ Fortify"); Cost cost = new Cost(equipCost, true); abilityStr.append(cost.isOnlyManaCost() ? " " : "—"); @@ -3801,8 +3882,6 @@ public class CardFactoryUtil { sa.setTemporary(!intrinsic); inst.addSpellAbility(sa); - - } else if (keyword.startsWith("Fuse") && card.getCurrentStateName().equals(CardStateName.Original)) { final SpellAbility sa = AbilityFactory.buildFusedAbility(card); card.addSpellAbility(sa); @@ -3843,8 +3922,6 @@ public class CardFactoryUtil { sa.setTemporary(!intrinsic); inst.addSpellAbility(sa); - - } else if (keyword.startsWith("Monstrosity")) { final String[] k = keyword.split(":"); final String magnitude = k[1]; @@ -3915,19 +3992,41 @@ public class CardFactoryUtil { final String[] k = keyword.split(":"); final String manacost = k[1]; + String desc = "Ninjutsu"; + boolean commander = false; + if (k.length > 2 && k[2].equals("Commander")) { + desc = "Commander " + desc; + commander = true; + } + String effect = "AB$ ChangeZone | Cost$ " + manacost + " Return<1/Creature.attacking+unblocked/unblocked attacker> " + - "| PrecostDesc$ Ninjutsu | CostDesc$ " + ManaCostParser.parse(manacost) + + "| PrecostDesc$ " + desc + " | CostDesc$ " + ManaCostParser.parse(manacost) + "| ActivationZone$ Hand | Origin$ Hand | Ninjutsu$ True " + - "| Destination$ Battlefield | Defined$ Self |" + - " SpellDescription$ (" + inst.getReminderText() + ")"; + "| Destination$ Battlefield | Defined$ Self " + + "| SpellDescription$ (" + inst.getReminderText() + ")"; - final SpellAbility sa = AbilityFactory.getAbility(effect, card); + SpellAbility sa = AbilityFactory.getAbility(effect, card); sa.setIntrinsic(intrinsic); sa.setTemporary(!intrinsic); inst.addSpellAbility(sa); - + + // extra secondary effect for Commander Ninjutsu + if (commander) { + effect = "AB$ ChangeZone | Cost$ " + manacost + + " Return<1/Creature.attacking+unblocked/unblocked attacker> " + + "| PrecostDesc$ " + desc + " | CostDesc$ " + ManaCostParser.parse(manacost) + + "| ActivationZone$ Command | Origin$ Command | Ninjutsu$ True " + + "| Destination$ Battlefield | Defined$ Self | Secondary$ True " + + "| SpellDescription$ (" + inst.getReminderText() + ")"; + + sa = AbilityFactory.getAbility(effect, card); + sa.setIntrinsic(intrinsic); + + sa.setTemporary(!intrinsic); + inst.addSpellAbility(sa); + } } else if (keyword.startsWith("Outlast")) { final String[] k = keyword.split(":"); final String manacost = k[1]; @@ -3953,7 +4052,30 @@ public class CardFactoryUtil { sa.setTemporary(!intrinsic); inst.addSpellAbility(sa); + + } else if (keyword.startsWith("Prowl")) { + final String[] k = keyword.split(":"); + final Cost prowlCost = new Cost(k[1], false); + final SpellAbility newSA = card.getFirstSpellAbility().copyWithDefinedCost(prowlCost); + + if (card.isInstant() || card.isSorcery()) { + newSA.getMapParams().put("Secondary", "True"); + } + newSA.getMapParams().put("PrecostDesc", "Prowl"); + newSA.getMapParams().put("CostDesc", ManaCostParser.parse(k[1])); + + // makes new SpellDescription + final StringBuilder sb = new StringBuilder(); + sb.append(newSA.getCostDescription()); + sb.append("(" + inst.getReminderText() + ")"); + newSA.setDescription(sb.toString()); + newSA.setBasicSpell(false); + newSA.setProwl(true); + + newSA.setIntrinsic(intrinsic); + newSA.setTemporary(!intrinsic); + inst.addSpellAbility(newSA); } else if (keyword.startsWith("Reinforce")) { final String[] k = keyword.split(":"); final String n = k[1]; @@ -4004,12 +4126,8 @@ public class CardFactoryUtil { @Override public void run() { - if (card.isCreature()) { - card.addCounter(CounterType.P1P1, card.getSunburstValue(), card, true); - } else { - card.addCounter(CounterType.CHARGE, card.getSunburstValue(), card, true); - } - + CounterType t = card.isCreature() ? CounterType.P1P1 : CounterType.CHARGE; + card.addCounter(t, card.getSunburstValue(), card.getController(), true); } }; @@ -4027,11 +4145,10 @@ public class CardFactoryUtil { } else if (keyword.startsWith("Surge")) { final String[] k = keyword.split(":"); final Cost surgeCost = new Cost(k[1], false); - final SpellAbility newSA = card.getFirstSpellAbility().copy(); + final SpellAbility newSA = card.getFirstSpellAbility().copyWithDefinedCost(surgeCost); - newSA.setPayCosts(surgeCost); newSA.setBasicSpell(false); - newSA.addOptionalCost(OptionalCost.Surge); + newSA.setSurged(true); String desc = "Surge " + surgeCost.toSimpleString() + " (" + inst.getReminderText() + ")"; @@ -4068,9 +4185,9 @@ public class CardFactoryUtil { final Card c = game.getAction().exile(this.getHostCard(), this); int counters = AbilityUtils.calculateAmount(c, k[1], this); - c.addCounter(CounterType.TIME, counters, c, true); + c.addCounter(CounterType.TIME, counters, getActivatingPlayer(), true); - String sb = TextUtil.concatWithSpace(this.getActivatingPlayer().toString(),"has suspended", c.getName(), "with", String.valueOf(counters),"time counters on it."); + String sb = TextUtil.concatWithSpace(getActivatingPlayer().toString(),"has suspended", c.getName(), "with", String.valueOf(counters),"time counters on it."); game.getGameLog().add(GameLogEntryType.STACK_RESOLVE, sb); } }; @@ -4106,8 +4223,6 @@ public class CardFactoryUtil { sa.setTemporary(!intrinsic); inst.addSpellAbility(sa); - - } else if (keyword.startsWith("Unearth")) { final String[] k = keyword.split(":"); final String manacost = k[1]; @@ -4153,8 +4268,8 @@ public class CardFactoryUtil { // So adding redundant YouCtrl to simplify matters even though its unnecessary String effect = "AB$ Animate | Cost$ tapXType | CostDesc$ Crew " + power + " (Tap any number of creatures you control with total power " + power + - " or more: | Crew$ True | Secondary$ True | Defined$ Self | Types$ Creature,Artifact | OverwriteTypes$ True | " + - "KeepSubtypes$ True | KeepSupertypes$ True | SpellDescription$ CARDNAME becomes an artifact creature until end of turn.)"; + " or more: | Crew$ True | Secondary$ True | Defined$ Self | Types$ Creature,Artifact | RemoveCardTypes$ True" + + " | SpellDescription$ CARDNAME becomes an artifact creature until end of turn.)"; final SpellAbility sa = AbilityFactory.getAbility(effect, card); sa.setIntrinsic(intrinsic); diff --git a/forge-game/src/main/java/forge/game/card/CardPowerToughness.java b/forge-game/src/main/java/forge/game/card/CardPowerToughness.java deleted file mode 100644 index ad0ed6d5d75..00000000000 --- a/forge-game/src/main/java/forge/game/card/CardPowerToughness.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Forge: Play Magic: the Gathering. - * Copyright (C) 2011 Forge Team - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package forge.game.card; - -/** - *

- * CardPowerToughness class. - *

- * - * @author Forge - * @version $Id$ - */ -public class CardPowerToughness { - - private final Integer power; - private final Integer toughness; - private long timeStamp = 0; - - /** - *

- * getTimestamp. - *

- * - * @return a long. - */ - public final long getTimestamp() { - return this.timeStamp; - } - - /** - *

- * Constructor for Card_PT. - *

- * - * @param newPower - * a int. - * @param newToughness - * a int. - * @param stamp - * a long. - */ - CardPowerToughness(final Integer newPower, final Integer newToughness, final long stamp) { - this.power = newPower; - this.toughness = newToughness; - this.timeStamp = stamp; - } - - /** - * - * Get Power. - * - * @return int - */ - public final Integer getPower() { - return this.power; - } - - /** - * - * Get Toughness. - * - * @return int - */ - public final Integer getToughness() { - return this.toughness; - } - - /** - *

- * equals. - *

- * - * @param newPower - * a int. - * @param newToughness - * a int. - * @param stamp - * a long. - * @return a boolean. - */ - public final boolean equals(final Integer newPower, final Integer newToughness, final long stamp) { - return (this.timeStamp == stamp) && (this.power == newPower) && (this.toughness == newToughness); - } -} diff --git a/forge-game/src/main/java/forge/game/card/CardProperty.java b/forge-game/src/main/java/forge/game/card/CardProperty.java index d1d83fe6c1a..dcd3c6d0658 100644 --- a/forge-game/src/main/java/forge/game/card/CardProperty.java +++ b/forge-game/src/main/java/forge/game/card/CardProperty.java @@ -10,6 +10,7 @@ import forge.game.ability.AbilityUtils; import forge.game.card.CardPredicates.Presets; import forge.game.combat.AttackingBand; import forge.game.combat.Combat; +import forge.game.keyword.Keyword; import forge.game.player.Player; import forge.game.spellability.OptionalCost; import forge.game.spellability.SpellAbility; @@ -132,6 +133,10 @@ public class CardProperty { if (!controller.equals(sourceController)) { return false; } + } else if (property.startsWith("YourTeamCtrl")) { + if (controller.getTeam() != sourceController.getTeam()) { + return false; + } } else if (property.startsWith("YouDontCtrl")) { if (controller.equals(sourceController)) { return false; @@ -318,12 +323,18 @@ public class CardProperty { } else if (property.startsWith("OwnedBy")) { final String valid = property.substring(8); if (!card.getOwner().isValid(valid, sourceController, source, spellAbility)) { - return false; + final List lp = AbilityUtils.getDefinedPlayers(source, valid, spellAbility); + if (!lp.contains(card.getOwner())) { + return false; + } } } else if (property.startsWith("ControlledBy")) { final String valid = property.substring(13); if (!controller.isValid(valid, sourceController, source, spellAbility)) { - return false; + final List lp = AbilityUtils.getDefinedPlayers(source, valid, spellAbility); + if (!lp.contains(controller)) { + return false; + } } } else if (property.startsWith("OwnerDoesntControl")) { if (card.getOwner().equals(controller)) { @@ -1058,6 +1069,12 @@ public class CardProperty { return false; } checkCard = (Card) triggeringObject; + } else if (restriction.startsWith("Remembered")) { + final Object rememberedObject = source.getFirstRemembered(); + if (!(rememberedObject instanceof Card)) { + return false; + } + checkCard = (Card) rememberedObject; } else { return false; } @@ -1072,15 +1089,7 @@ public class CardProperty { return false; } } else if (property.startsWith("withFlashback")) { - boolean fb = false; - if (card.hasStartOfUnHiddenKeyword("Flashback")) { - fb = true; - } - for (final SpellAbility sa : card.getSpellAbilities()) { - if (sa.isFlashBackAbility()) { - fb = true; - } - } + boolean fb = card.hasKeyword(Keyword.FLASHBACK); if (!fb) { return false; } @@ -1600,19 +1609,21 @@ public class CardProperty { if (property.equals("pseudokicked")) { if (!card.isOptionalCostPaid(OptionalCost.Generic)) return false; } - } else if (property.startsWith("notpseudokicked")) { - if (property.equals("pseudokicked")) { - if (card.isOptionalCostPaid(OptionalCost.Generic)) return false; - } } else if (property.startsWith("surged")) { - if (!card.isOptionalCostPaid(OptionalCost.Surge)) { + if (card.getCastSA() == null) { return false; } + return card.getCastSA().isSurged(); } else if (property.startsWith("evoked")) { if (card.getCastSA() == null) { return false; } return card.getCastSA().isEvoke(); + } else if (property.startsWith("prowled")) { + if (card.getCastSA() == null) { + return false; + } + return card.getCastSA().isProwl(); } else if (property.equals("HasDevoured")) { if (card.getDevouredCards().isEmpty()) { return false; diff --git a/forge-game/src/main/java/forge/game/card/CardState.java b/forge-game/src/main/java/forge/game/card/CardState.java index 2703dd056d7..483077cae84 100644 --- a/forge-game/src/main/java/forge/game/card/CardState.java +++ b/forge-game/src/main/java/forge/game/card/CardState.java @@ -50,6 +50,7 @@ public class CardState extends GameObject { private byte color = MagicColor.COLORLESS; private int basePower = 0; private int baseToughness = 0; + private int baseLoyalty = 0; private KeywordCollection intrinsicKeywords = new KeywordCollection(); private final FCollection nonManaAbilities = new FCollection(); @@ -166,6 +167,14 @@ public class CardState extends GameObject { view.updateToughness(this); } + public int getBaseLoyalty() { + return baseLoyalty; + } + public final void setBaseLoyalty(final int loyalty) { + baseLoyalty = loyalty; + view.updateLoyalty(this); + } + public final Collection getCachedKeywords() { return cachedKeywords.getValues(); } @@ -451,6 +460,7 @@ public class CardState extends GameObject { setColor(source.getColor()); setBasePower(source.getBasePower()); setBaseToughness(source.getBaseToughness()); + setBaseLoyalty(source.getBaseLoyalty()); setSVars(source.getSVars()); manaAbilities.clear(); diff --git a/forge-game/src/main/java/forge/game/card/CardUtil.java b/forge-game/src/main/java/forge/game/card/CardUtil.java index 38dedebf364..0f959f598d5 100644 --- a/forge-game/src/main/java/forge/game/card/CardUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardUtil.java @@ -24,6 +24,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; +import com.google.common.collect.Table; import forge.ImageKeys; import forge.card.CardStateName; @@ -249,6 +250,7 @@ public final class CardUtil { newCopy.setColor(in.determineColor().getColor()); newCopy.setReceivedDamageFromThisTurn(in.getReceivedDamageFromThisTurn()); + newCopy.setReceivedDamageFromPlayerThisTurn(in.getReceivedDamageFromPlayerThisTurn()); newCopy.getDamageHistory().setCreatureGotBlockedThisTurn(in.getDamageHistory().getCreatureGotBlockedThisTurn()); newCopy.setEnchanting(in.getEnchanting()); newCopy.setEnchantedBy(in.getEnchantedBy(false)); @@ -269,6 +271,10 @@ public final class CardUtil { newCopy.addImprintedCard(o); } + for(Table.Cell cl : in.getEtbCounters()) { + newCopy.addEtbCounter(cl.getColumnKey(), cl.getValue(), cl.getRowKey()); + } + newCopy.setUnearthed(in.isUnearthed()); newCopy.setChangedCardColors(in.getChangedCardColors()); @@ -277,6 +283,8 @@ public final class CardUtil { newCopy.setMeldedWith(in.getMeldedWith()); + newCopy.setTimestamp(in.getTimestamp()); + // update keyword cache on all states for (CardStateName s : newCopy.getStates()) { newCopy.updateKeywordsCache(newCopy.getState(s)); diff --git a/forge-game/src/main/java/forge/game/card/CounterType.java b/forge-game/src/main/java/forge/game/card/CounterType.java index fcf5e5fee84..a1a902c0b2a 100644 --- a/forge-game/src/main/java/forge/game/card/CounterType.java +++ b/forge-game/src/main/java/forge/game/card/CounterType.java @@ -245,6 +245,8 @@ public enum CounterType { SLEEP("SLEEP", 178, 192, 255), + SLUMBER("SLUMBER", 178, 205, 255), + SLEIGHT("SLGHT", 185, 174, 255), SLIME("SLIME", 101, 220, 163 ), diff --git a/forge-game/src/main/java/forge/game/card/token/TokenInfo.java b/forge-game/src/main/java/forge/game/card/token/TokenInfo.java index 744e2088e21..b4219bcc592 100644 --- a/forge-game/src/main/java/forge/game/card/token/TokenInfo.java +++ b/forge-game/src/main/java/forge/game/card/token/TokenInfo.java @@ -17,6 +17,8 @@ import forge.game.player.Player; import java.util.List; import java.util.Map; +import org.apache.commons.lang3.tuple.Pair; + public class TokenInfo { final String name; final String imageName; @@ -40,6 +42,7 @@ public class TokenInfo { } public TokenInfo(Card c) { + // TODO: Figure out how to handle legacy images? this.name = c.getName(); this.imageName = ImageKeys.getTokenImageName(c.getImageKey()); this.manaCost = c.getManaCost().toString(); @@ -56,6 +59,12 @@ public class TokenInfo { this.baseToughness = c.getBaseToughness(); } + public TokenInfo(Card c, Card source) { + // TODO If Source has type/color changes on it, apply them now. + // Permanently apply them for casccading tokens? Reef Worm? + this(c); + } + public TokenInfo(String str) { final String[] tokenInfo = str.split(","); int power = 0; @@ -143,8 +152,9 @@ public class TokenInfo { return sb.toString(); } - static private int calculateMultiplier(final Game game, final Player controller, final boolean applyMultiplier) { - int multiplier = 1; + public static Pair calculateMultiplier(final Game game, final Player controller, + final boolean applyMultiplier, final int num) { + int multiplier = num; Player player = controller; final Map repParams = Maps.newHashMap(); @@ -162,19 +172,20 @@ public class TokenInfo { break; } default: - return 0; + multiplier = 0; + break; } - return multiplier; + return Pair.of(player, multiplier); } public List makeTokenWithMultiplier(final Player controller, int amount, final boolean applyMultiplier) { final List list = Lists.newArrayList(); final Game game = controller.getGame(); - int multiplier = calculateMultiplier(game, controller, applyMultiplier); + Pair result = calculateMultiplier(game, controller, applyMultiplier, amount); - for (int i = 0; i < multiplier * amount; i++) { - list.add(makeOneToken(controller)); + for (int i = 0; i < result.getRight(); i++) { + list.add(makeOneToken(result.getLeft())); } return list; } @@ -183,13 +194,13 @@ public class TokenInfo { final List list = Lists.newArrayList(); final Game game = controller.getGame(); - int multiplier = calculateMultiplier(game, controller, applyMultiplier); + Pair result = calculateMultiplier(game, controller, applyMultiplier, amount); long timestamp = game.getNextTimestamp(); - prototype.setController(controller, timestamp); - for (int i = 0; i < multiplier * amount; i++) { + prototype.setController(result.getLeft(), timestamp); + for (int i = 0; i < result.getRight(); i++) { Card copy = CardFactory.copyCard(prototype, true); copy.setTimestamp(timestamp); - copy.setOwner(controller); + copy.setOwner(result.getLeft()); copy.setToken(true); list.add(copy); } diff --git a/forge-game/src/main/java/forge/game/cost/CostAdjustment.java b/forge-game/src/main/java/forge/game/cost/CostAdjustment.java index 82bfc0608db..70d6c91083d 100644 --- a/forge-game/src/main/java/forge/game/cost/CostAdjustment.java +++ b/forge-game/src/main/java/forge/game/cost/CostAdjustment.java @@ -440,6 +440,10 @@ public class CostAdjustment { || !activator.isValid(params.get("Activator"), controller, hostCard, sa))) { return false; } + if (params.containsKey("NonActivatorTurn") && ((activator == null) + || hostCard.getGame().getPhaseHandler().isPlayerTurn(activator))) { + return false; + } if (params.containsKey("Type")) { final String type = params.get("Type"); diff --git a/forge-game/src/main/java/forge/game/cost/CostPutCounter.java b/forge-game/src/main/java/forge/game/cost/CostPutCounter.java index be83e5d0490..c33bbea5441 100644 --- a/forge-game/src/main/java/forge/game/cost/CostPutCounter.java +++ b/forge-game/src/main/java/forge/game/cost/CostPutCounter.java @@ -188,7 +188,7 @@ public class CostPutCounter extends CostPartWithList { */ @Override protected Card doPayment(SpellAbility ability, Card targetCard){ - targetCard.addCounter(this.getCounter(), 1, ability.getHostCard(), false); + targetCard.addCounter(this.getCounter(), 1, ability.getActivatingPlayer(), false); return targetCard; } diff --git a/forge-game/src/main/java/forge/game/cost/CostRemoveCounter.java b/forge-game/src/main/java/forge/game/cost/CostRemoveCounter.java index 9d30526dad1..d4b2d6b9c5c 100644 --- a/forge-game/src/main/java/forge/game/cost/CostRemoveCounter.java +++ b/forge-game/src/main/java/forge/game/cost/CostRemoveCounter.java @@ -114,7 +114,7 @@ public class CostRemoveCounter extends CostPartWithList { public final void refund(final Card source) { int refund = this.getCardList().size() == 1 ? this.cntRemoved : 1; // is wrong for Ooze Flux and Novijen Sages for (final Card c : this.getCardList()) { - c.addCounter(this.counter, refund, source, false); + c.addCounter(this.counter, refund, source.getController(), false); } } diff --git a/forge-game/src/main/java/forge/game/event/GameEventSurveil.java b/forge-game/src/main/java/forge/game/event/GameEventSurveil.java new file mode 100644 index 00000000000..db003097bb1 --- /dev/null +++ b/forge-game/src/main/java/forge/game/event/GameEventSurveil.java @@ -0,0 +1,21 @@ +package forge.game.event; + +import forge.game.player.Player; + +public class GameEventSurveil extends GameEvent { + + public final Player player; + public final int toLibrary, toGraveyard; + + public GameEventSurveil(Player player, int toLibrary, int toGraveyard) { + this.player = player; + this.toLibrary = toLibrary; + this.toGraveyard = toGraveyard; + } + + @Override + public T visit(IGameEventVisitor visitor) { + return visitor.visit(this); + } +} + diff --git a/forge-game/src/main/java/forge/game/event/IGameEventVisitor.java b/forge-game/src/main/java/forge/game/event/IGameEventVisitor.java index 918f3fa0d0f..7e038506226 100644 --- a/forge-game/src/main/java/forge/game/event/IGameEventVisitor.java +++ b/forge-game/src/main/java/forge/game/event/IGameEventVisitor.java @@ -42,6 +42,7 @@ public interface IGameEventVisitor { T visit(GameEventSpellAbilityCast gameEventSpellAbilityCast); T visit(GameEventSpellResolved event); T visit(GameEventSpellRemovedFromStack event); + T visit(GameEventSurveil event); T visit(GameEventTokenCreated event); T visit(GameEventTurnBegan gameEventTurnBegan); T visit(GameEventTurnEnded event); @@ -87,6 +88,7 @@ public interface IGameEventVisitor { public T visit(GameEventSpellResolved event) { return null; } public T visit(GameEventSpellAbilityCast event) { return null; } public T visit(GameEventSpellRemovedFromStack event) { return null; } + public T visit(GameEventSurveil event) { return null; } public T visit(GameEventTokenCreated event) { return null; } public T visit(GameEventTurnBegan event) { return null; } public T visit(GameEventTurnEnded event) { return null; } diff --git a/forge-game/src/main/java/forge/game/keyword/Keyword.java b/forge-game/src/main/java/forge/game/keyword/Keyword.java index f9a90428baf..72c45bc8589 100644 --- a/forge-game/src/main/java/forge/game/keyword/Keyword.java +++ b/forge-game/src/main/java/forge/game/keyword/Keyword.java @@ -2,6 +2,8 @@ package forge.game.keyword; import java.util.*; +import org.apache.commons.lang3.StringUtils; + import forge.StaticData; import forge.game.card.Card; import forge.item.PaperCard; @@ -17,6 +19,7 @@ public enum Keyword { AMPLIFY(KeywordWithAmountAndType.class, false, "As this creature enters the battlefield, put {%d:+1/+1 counter} on it for each %s card you reveal in your hand."), ANNIHILATOR(KeywordWithAmount.class, false, "Whenever this creature attacks, defending player sacrifices {%d:permanent}."), ASCEND(SimpleKeyword.class, true, "If you control ten or more permanents, you get the city's blessing for the rest of the game."), + ASSIST(SimpleKeyword.class, true, "Another player can pay up to %s of this spell's cost."), AURA_SWAP(KeywordWithCost.class, false, "%s: You may exchange this Aura with an Aura card in your hand."), AWAKEN(KeywordWithCostAndAmount.class, false, "If you cast this spell for %s, also put {%d:+1/+1 counter} on target land you control and it becomes a 0/0 Elemental creature with haste. It's still a land."), BANDING(SimpleKeyword.class, true, "Any creatures with banding, and up to one without, can attack in a band. Bands are blocked as a group. If any creatures with banding you control are blocking or being blocked by a creature, you divide that creature's combat damage, not its controller, among any of the creatures it's being blocked by or is blocking."), @@ -80,15 +83,17 @@ public enum Keyword { IMPROVISE(SimpleKeyword.class, true, "Your artifacts can help cast this spell. Each artifact you tap after you're done activating mana abilities pays for {1}."), INDESTRUCTIBLE(SimpleKeyword.class, true, "Effects that say \"destroy\" don’t destroy this."), INFECT(SimpleKeyword.class, true, "This creature deals damage to creatures in the form of -1/-1 counters and to players in the form of poison counters."), - INGEST(SimpleKeyword.class, false, "Whenever this creature deals combat damage to a player, that player exiles the top card of his or her library."), + INGEST(SimpleKeyword.class, false, "Whenever this creature deals combat damage to a player, that player exiles the top card of their library."), INTIMIDATE(SimpleKeyword.class, true, "This creature can't be blocked except by artifact creatures and/or creatures that share a color with it."), KICKER(Kicker.class, false, "You may pay an additional %s as you cast this spell."), + JUMP_START(SimpleKeyword.class, false, "You may cast this card from your graveyard by discarding a card in addition to paying its other costs. Then exile this card."), LANDWALK(KeywordWithType.class, false, "This creature is unblockable as long as defending player controls a %s."), LEVEL_UP(KeywordWithCost.class, false, "%s: Put a level counter on this. Level up only as a sorcery."), LIFELINK(SimpleKeyword.class, true, "Damage dealt by this creature also causes its controller to gain that much life."), - LIVING_WEAPON(SimpleKeyword.class, true, "When this Equipment enters the battlefield, create a 0/0 black Germ creature token, then attach this Equipment to it."), + LIVING_WEAPON(SimpleKeyword.class, true, "When this Equipment enters the battlefield, create a 0/0 black Germ creature token, then attach this to it."), MADNESS(KeywordWithCost.class, true, "If you discard this card, discard it into exile. When you do, cast it for %s or put it into your graveyard."), MELEE(SimpleKeyword.class, false, "Whenever this creature attacks, it gets +1/+1 until end of turn for each opponent you attacked with a creature this combat."), + MENTOR(SimpleKeyword.class, false, "Whenever this creature attacks, put a +1/+1 counter on target attacking creature with lesser power."), MENACE(SimpleKeyword.class, true, "This creature can't be blocked except by two or more creatures."), MEGAMORPH(KeywordWithCost.class, false, "You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its megamorph cost and put a +1/+1 counter on it."), MIRACLE(KeywordWithCost.class, false, "You may cast this card for its miracle cost when you draw it if it's the first card you drew this turn."), @@ -96,11 +101,11 @@ public enum Keyword { MODULAR(Modular.class, false, "This creature enters the battlefield with {%d:+1/+1 counter} on it. When it dies, you may put its +1/+1 counters on target artifact creature."), MORPH(KeywordWithCost.class, false, "You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost."), MULTIKICKER(KeywordWithCost.class, false, "You may pay an additional %s any number of times as you cast this spell."), - MYRIAD(SimpleKeyword.class, false, "Whenever this creature attacks, for each opponent other than defending player, you may create a token that's a copy of this creature that's tapped and attacking that player or a planeswalker he or she controls. If one or more tokens are created this way, exile the tokens at end of combat."), - NINJUTSU(KeywordWithCost.class, false, "%s, Return an unblocked attacker you control to hand: Put this card onto the battlefield from your hand tapped and attacking."), + MYRIAD(SimpleKeyword.class, false, "Whenever this creature attacks, for each opponent other than defending player, you may create a token that's a copy of this creature that's tapped and attacking that player or a planeswalker they control. Exile the tokens at end of combat."), + NINJUTSU(Ninjutsu.class, false, "%s, Return an unblocked attacker you control to hand: Put this card onto the battlefield from your %s tapped and attacking."), OUTLAST(KeywordWithCost.class, false, "%s, {T}: Put a +1/+1 counter on this creature. Outlast only as a sorcery."), OFFERING(KeywordWithType.class, false, "You may cast this card any time you could cast an instant by sacrificing a %1$s and paying the difference in mana costs between this and the sacrificed %1$s. Mana cost includes color."), - PARTNER(SimpleKeyword.class, true, "You can have two commanders if both have partner."), + PARTNER(Partner.class, true, "You can have two commanders if both have partner."), PERSIST(SimpleKeyword.class, true, "When this creature dies, if it had no -1/-1 counters on it, return it to the battlefield under its owner's control with a -1/-1 counter on it."), PHASING(SimpleKeyword.class, true, "This phases in or out before you untap during each of your untap steps. While it's phased out, it's treated as though it doesn't exist."), POISONOUS(KeywordWithAmount.class, false, "Whenever this creature deals combat damage to a player, that player gets {%d:poison counter}."), @@ -108,7 +113,7 @@ public enum Keyword { PROTECTION(Protection.class, false, "This creature can't be blocked, targeted, dealt damage, or equipped/enchanted by %s."), PROVOKE(SimpleKeyword.class, false, "Whenever this creature attacks, you may have target creature defending player controls untap and block it if able."), PROWESS(SimpleKeyword.class, false, "Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn."), - PROWL(KeywordWithCost.class, false, "You may cast this card by paying %s rather than paying its mana cost if you dealt combat damage to a player this turn with a creature that shares any of this spell's creature types."), + PROWL(KeywordWithCost.class, false, "You may pay %s rather than pay this spell’s mana cost if a player was dealt combat damage this turn by a source that, at the time it dealt that damage, was under your control and had any of this spell’s creature types."), RAMPAGE(KeywordWithAmount.class, false, "Whenever this creature becomes blocked, it gets +%1$d/+%1$d until end of turn for each creature blocking it beyond the first."), REACH(SimpleKeyword.class, true, "This creature can block creatures with flying."), REBOUND(SimpleKeyword.class, true, "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."), @@ -132,11 +137,11 @@ public enum Keyword { SURGE(KeywordWithCost.class, true, "You may cast this spell for its surge cost if you or a teammate has cast another spell this turn."), SUSPEND(Suspend.class, false, "Rather than cast this card from your hand, you may pay %s and exile it with {%d:time counter} on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost."), TOTEM_ARMOR(SimpleKeyword.class, true, "If enchanted permanent would be destroyed, instead remove all damage marked on it and destroy this Aura."), - TRAMPLE(SimpleKeyword.class, true, "If this creature would assign enough damage to its blockers to destroy them, you may have it assign the rest of its damage to defending player or planeswalker."), + TRAMPLE(SimpleKeyword.class, true, "This creature can deal excess combat damage to the player or planeswalker it's attacking."), TRANSFIGURE(KeywordWithCost.class, false, "%s, Sacrifice this creature: Search your library for a creature card with the same converted mana cost as this creature and put that card onto the battlefield. Then shuffle your library. Transfigure only as a sorcery."), TRANSMUTE(KeywordWithCost.class, false, "%s, Discard this card: Search your library for a card with the same converted mana cost as this card, reveal it, and put it into your hand. Then shuffle your library. Transmute only as a sorcery."), TRIBUTE(KeywordWithAmount.class, false, "As this creature enters the battlefield, an opponent of your choice may put {%d:+1/+1 counter} on it."), - TYPECYCLING(KeywordWithCostAndType.class, false, "%s, Discard this card: Search your library for a %s card, reveal it, and put it into your hand. Then shuffle your library."), + TYPECYCLING(KeywordWithCostAndType.class, false, "%s, Discard this card: Search your library for a %s card, reveal it, put it into your hand, then shuffle your library."), UNDAUNTED(SimpleKeyword.class, false, "This spell costs {1} less to cast for each opponent."), UNDYING(SimpleKeyword.class, true, "When this creature dies, if it had no +1/+1 counters on it, return it to the battlefield under its owner's control with a +1/+1 counter on it."), UNEARTH(KeywordWithCost.class, false, "%s: Return this card from your graveyard to the battlefield. It gains haste. Exile it at the beginning of the next end step or if it would leave the battlefield. Unearth only as a sorcery."), @@ -165,23 +170,37 @@ public enum Keyword { public static KeywordInterface getInstance(String k) { Keyword keyword = Keyword.UNDEFINED; String details = k; - String enumName = k.replace(' ', '_').toUpperCase(); - for (Keyword kw : Keyword.values()) { - if (enumName.startsWith(kw.name())) { - keyword = kw; - int idx = kw.name().length() + 1; - if (idx < k.length()) { - details = k.substring(idx); + // try to get real part + if (k.contains(":")) { + final String x[] = k.split(":", 2); + keyword = smartValueOf(x[0]); + details = x[1]; + } else if (k.contains(" ")) { + // First strike + keyword = smartValueOf(k); + details = ""; + + // other keywords that contains other stuff like Enchant + if (keyword == Keyword.UNDEFINED) { + final String x[] = k.split(" ", 2); + + final Keyword k2 = smartValueOf(x[0]); + // Keywords that needs to be undefined + if (k2 != Keyword.UNDEFINED) { + keyword = k2; + details = x[1]; } - else { - details = ""; - } - break; } + } else { + // Simple Keyword + keyword = smartValueOf(k); + details = ""; } + if (keyword == Keyword.UNDEFINED) { //check for special keywords that have a prefix before the keyword enum name int idx = k.indexOf(' '); + String enumName = k.replace(" ", "_").toUpperCase(); String firstWord = idx == -1 ? enumName : enumName.substring(0, idx); if (firstWord.endsWith("WALK")) { keyword = Keyword.LANDWALK; @@ -202,7 +221,7 @@ public enum Keyword { } KeywordInstance inst; try { - inst = keyword.type.newInstance(); + inst = keyword.type.getConstructor().newInstance(); } catch (Exception e) { inst = new UndefinedKeyword(); @@ -261,4 +280,15 @@ public enum Keyword { } return null; } + + public static Keyword smartValueOf(String value) { + final String valToCompate = StringUtils.replaceChars(value, " -", "__").toUpperCase(); + for (final Keyword v : Keyword.values()) { + if (valToCompate.equals(v.name())) { + return v; + } + } + + return UNDEFINED; + } } diff --git a/forge-game/src/main/java/forge/game/keyword/KeywordInstance.java b/forge-game/src/main/java/forge/game/keyword/KeywordInstance.java index 0e9525ca7e7..5d335d39bc7 100644 --- a/forge-game/src/main/java/forge/game/keyword/KeywordInstance.java +++ b/forge-game/src/main/java/forge/game/keyword/KeywordInstance.java @@ -14,6 +14,8 @@ import forge.game.spellability.SpellAbility; import forge.game.staticability.StaticAbility; import forge.game.trigger.Trigger; import forge.util.Lang; +import io.sentry.Sentry; +import io.sentry.event.BreadcrumbBuilder; public abstract class KeywordInstance> implements KeywordInterface { private Keyword keyword; @@ -92,10 +94,24 @@ public abstract class KeywordInstance> implements K abilities.clear(); staticAbilities.clear(); } + + String msg = "KeywordInstance:createTraits: make Traits for Keyword"; + Sentry.getContext().recordBreadcrumb( + new BreadcrumbBuilder().setMessage(msg) + .withData("Card", host.getName()).withData("Keyword", this.original).build() + ); + // add Extra for debugging + Sentry.getContext().addExtra("Card", host); + Sentry.getContext().addExtra("Keyword", this.original); + CardFactoryUtil.addTriggerAbility(this, host, intrinsic); CardFactoryUtil.addReplacementEffect(this, host, intrinsic); CardFactoryUtil.addSpellAbility(this, host, intrinsic); CardFactoryUtil.addStaticAbility(this, host, intrinsic); + + // remove added extra + Sentry.getContext().removeExtra("Card"); + Sentry.getContext().removeExtra("Keyword"); } /* diff --git a/forge-game/src/main/java/forge/game/keyword/KeywordsChange.java b/forge-game/src/main/java/forge/game/keyword/KeywordsChange.java index ff51ca12e27..292741c323c 100644 --- a/forge-game/src/main/java/forge/game/keyword/KeywordsChange.java +++ b/forge-game/src/main/java/forge/game/keyword/KeywordsChange.java @@ -37,6 +37,7 @@ public class KeywordsChange { private final List removeKeywordInterfaces = Lists.newArrayList(); private final List removeKeywords = Lists.newArrayList(); private boolean removeAllKeywords; + private boolean removeIntrinsicKeywords; /** * @@ -49,7 +50,8 @@ public class KeywordsChange { public KeywordsChange( final Iterable keywordList, final Collection removeKeywordList, - final boolean removeAll) { + final boolean removeAll, + final boolean removeIntrinsic) { if (keywordList != null) { this.keywords.addAll(keywordList); } @@ -59,12 +61,14 @@ public class KeywordsChange { } this.removeAllKeywords = removeAll; + this.removeIntrinsicKeywords = removeIntrinsic; } public KeywordsChange( final Collection keywordList, final Collection removeKeywordInterfaces, - final boolean removeAll) { + final boolean removeAll, + final boolean removeIntrinsic) { if (keywordList != null) { this.keywords.insertAll(keywordList); } @@ -74,6 +78,7 @@ public class KeywordsChange { } this.removeAllKeywords = removeAll; + this.removeIntrinsicKeywords = removeIntrinsic; } /** @@ -109,6 +114,10 @@ public class KeywordsChange { return this.removeAllKeywords; } + public final boolean isRemoveIntrinsicKeywords() { + return this.removeIntrinsicKeywords; + } + /** * @return whether this KeywordsChange doesn't have any effect. */ @@ -135,8 +144,9 @@ public class KeywordsChange { public final KeywordsChange merge( final Collection keywordList, final Collection removeKeywordList, - final boolean removeAll) { - KeywordsChange result = new KeywordsChange(keywordList, removeKeywordList, removeAll); + final boolean removeAll, + final boolean removeIntrinsic) { + KeywordsChange result = new KeywordsChange(keywordList, removeKeywordList, removeAll, removeIntrinsic); result.__merge(this); return result; } @@ -144,8 +154,9 @@ public class KeywordsChange { public final KeywordsChange merge( final Iterable keywordList, final Collection removeKeywordList, - final boolean removeAll) { - KeywordsChange result = new KeywordsChange(keywordList, removeKeywordList, removeAll); + final boolean removeAll, + final boolean removeIntrinsic) { + KeywordsChange result = new KeywordsChange(keywordList, removeKeywordList, removeAll, removeIntrinsic); result.__merge(this); return result; } @@ -157,5 +168,8 @@ public class KeywordsChange { if (other.removeAllKeywords) { removeAllKeywords = true; } + if (other.removeIntrinsicKeywords) { + removeIntrinsicKeywords = true; + } } } diff --git a/forge-game/src/main/java/forge/game/keyword/Ninjutsu.java b/forge-game/src/main/java/forge/game/keyword/Ninjutsu.java new file mode 100644 index 00000000000..2159f8ea430 --- /dev/null +++ b/forge-game/src/main/java/forge/game/keyword/Ninjutsu.java @@ -0,0 +1,31 @@ +package forge.game.keyword; + +public class Ninjutsu extends KeywordWithCost { + + protected boolean commander = false; + + /* (non-Javadoc) + * @see forge.game.keyword.KeywordWithCost#parse(java.lang.String) + */ + @Override + protected void parse(String details) { + if (details.contains(":")) { + String k[] = details.split(":"); + details = k[0]; + if (k[1].equals("Commander")) { + commander = true; + } + } + super.parse(details); + } + + /* (non-Javadoc) + * @see forge.game.keyword.KeywordWithCost#formatReminderText(java.lang.String) + */ + @Override + protected String formatReminderText(String reminderText) { + String zone = commander ? "hand or the command zone" : "hand"; + return String.format(reminderText, cost.toSimpleString(), zone); + } + +} diff --git a/forge-game/src/main/java/forge/game/keyword/Partner.java b/forge-game/src/main/java/forge/game/keyword/Partner.java new file mode 100644 index 00000000000..c11b5e5c0cd --- /dev/null +++ b/forge-game/src/main/java/forge/game/keyword/Partner.java @@ -0,0 +1,35 @@ +package forge.game.keyword; + +public class Partner extends SimpleKeyword { + + private String with = null; + + public Partner() { + } + + @Override + protected void parse(String details) { + if (!details.isEmpty()) { + if (details.contains(":")) { + with = details.split(":")[1]; + } else { + with = details; + } + } + } + + @Override + protected String formatReminderText(String reminderText) { + if (with == null) { + return reminderText; + } else { + final StringBuilder sb = new StringBuilder(); + + sb.append("When this creature enters the battlefield, target player may put "); + sb.append(with); + sb.append(" into their hand from their library, then shuffle."); + + return sb.toString(); + } + } +} diff --git a/forge-game/src/main/java/forge/game/mana/ManaPool.java b/forge-game/src/main/java/forge/game/mana/ManaPool.java index a5c1930239a..2d2de63d968 100644 --- a/forge-game/src/main/java/forge/game/mana/ManaPool.java +++ b/forge-game/src/main/java/forge/game/mana/ManaPool.java @@ -246,7 +246,7 @@ public class ManaPool implements Iterable { && host.getType().hasStringType(mana.getManaAbility().getAddsKeywordsType())) { final long timestamp = sa.getHostCard().getGame().getNextTimestamp(); final List kws = Arrays.asList(mana.getAddedKeywords().split(" & ")); - host.addChangedCardKeywords(kws, new ArrayList(), false, timestamp); + host.addChangedCardKeywords(kws, null, false, false, timestamp); if (mana.addsKeywordsUntil()) { final GameCommand untilEOT = new GameCommand() { private static final long serialVersionUID = -8285169579025607693L; diff --git a/forge-game/src/main/java/forge/game/phase/PhaseHandler.java b/forge-game/src/main/java/forge/game/phase/PhaseHandler.java index a10ca915a34..3fbde336028 100644 --- a/forge-game/src/main/java/forge/game/phase/PhaseHandler.java +++ b/forge-game/src/main/java/forge/game/phase/PhaseHandler.java @@ -771,17 +771,7 @@ public class PhaseHandler implements java.io.Serializable { } } for (Player p : game.getPlayers()) { - p.resetProwl(); - p.setSpellsCastLastTurn(p.getSpellsCastThisTurn()); - p.resetSpellsCastThisTurn(); - p.setLifeLostLastTurn(p.getLifeLostThisTurn()); - p.setLifeLostThisTurn(0); - p.setLifeGainedThisTurn(0); - p.setLibrarySearched(0); - p.setNumManaConversion(0); - - p.removeKeyword("Skip the untap step of this turn."); - p.removeKeyword("Schemes can't be set in motion this turn."); + p.clearNextTurn(); } game.getTriggerHandler().clearThisTurnDelayedTrigger(); 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 685eb2f827b..f3e15e1d872 100644 --- a/forge-game/src/main/java/forge/game/player/Player.java +++ b/forge-game/src/main/java/forge/game/player/Player.java @@ -32,7 +32,6 @@ import forge.game.card.CardPredicates.Presets; import forge.game.event.*; import forge.game.keyword.Keyword; import forge.game.keyword.KeywordCollection; -import forge.game.keyword.KeywordInterface; import forge.game.keyword.KeywordCollection.KeywordCollectionView; import forge.game.keyword.KeywordsChange; import forge.game.mana.ManaPool; @@ -88,9 +87,11 @@ public class Player extends GameEntity implements Comparable { private int landsPlayedThisTurn = 0; private int landsPlayedLastTurn = 0; private int investigatedThisTurn = 0; + private int surveilThisTurn = 0; private int lifeLostThisTurn = 0; private int lifeLostLastTurn = 0; private int lifeGainedThisTurn = 0; + private int lifeGainedByTeamThisTurn = 0; private int numPowerSurgeLands; private int numLibrarySearchedOwn = 0; //The number of times this player has searched his library private int maxHandSize = 7; @@ -130,7 +131,7 @@ public class Player extends GameEntity implements Comparable { private final Map zones = Maps.newEnumMap(ZoneType.class); private CardCollection currentPlanes = new CardCollection(); - private List prowl = Lists.newArrayList(); + private Set prowl = Sets.newHashSet(); private PlayerStatistics stats = new PlayerStatistics(); private PlayerController controller; @@ -309,6 +310,23 @@ public class Player extends GameEntity implements Comparable { return getAllOtherPlayers().filter(Predicates.not(PlayerPredicates.isOpponentOf(this))); } + public final PlayerCollection getTeamMates(final boolean inclThis) { + PlayerCollection col = new PlayerCollection(); + if (inclThis) { + col.add(this); + } + col.addAll(getAllOtherPlayers().filter(PlayerPredicates.sameTeam(this))); + return col; + } + + /** + * returns allied players. + * Should keep player relations somewhere in the match structure + */ + public final PlayerCollection getYourTeam() { + return getTeamMates(true); + } + /** * returns all other players. * Should keep player relations somewhere in the match structure @@ -406,6 +424,11 @@ public class Player extends GameEntity implements Comparable { newLifeSet = true; lifeGainedThisTurn += lifeGain; + // team mates need to be notified about life gained + for (final Player p : getTeamMates(true)) { + p.addLifeGainedByTeamThisTurn(lifeGain); + } + // Run triggers final Map runParams = Maps.newHashMap(); runParams.put("Player", this); @@ -565,7 +588,7 @@ public class Player extends GameEntity implements Comparable { if (isCombat) { old = assignedCombatDamage.containsKey(source) ? assignedCombatDamage.get(source) : 0; assignedCombatDamage.put(source, old + amount); - for (final String type : source.getType()) { + for (final String type : source.getType().getCreatureTypes()) { source.getController().addProwlType(type); } } @@ -853,20 +876,20 @@ public class Player extends GameEntity implements Comparable { return true; } - public final void addCounter(final CounterType counterType, final int n, final Card source, final boolean applyMultiplier) { - addCounter(counterType, n, source, applyMultiplier, true); + public final int addCounter(final CounterType counterType, final int n, final Player source, final boolean applyMultiplier) { + return addCounter(counterType, n, source, applyMultiplier, true); } @Override - public void addCounter(CounterType counterType, int n, final Card source, boolean applyMultiplier, boolean fireEvents) { + public int addCounter(CounterType counterType, int n, final Player source, boolean applyMultiplier, boolean fireEvents) { if (!canReceiveCounters(counterType)) { - return; + return 0; } int addAmount = n; if(addAmount <= 0) { // Can't add negative or 0 counters, bail out now - return; + return 0; } final Map repParams = Maps.newHashMap(); @@ -885,7 +908,7 @@ public class Player extends GameEntity implements Comparable { break; } default: - return; + return 0; } final int oldValue = getCounters(counterType); @@ -902,6 +925,7 @@ public class Player extends GameEntity implements Comparable { if (addAmount > 0) { getGame().getTriggerHandler().runTrigger(TriggerType.CounterAddedOnce, runParams, false); } + return addAmount; } @Override @@ -960,7 +984,7 @@ public class Player extends GameEntity implements Comparable { } public final void addPoisonCounters(final int num, final Card source) { int oldPoison = getCounters(CounterType.POISON); - addCounter(CounterType.POISON, num, source, false, true); + addCounter(CounterType.POISON, num, source.getController(), false, true); if (oldPoison != getCounters(CounterType.POISON)) { game.fireEvent(new GameEventPlayerPoisoned(this, source, oldPoison, num)); @@ -986,12 +1010,13 @@ public class Player extends GameEntity implements Comparable { final KeywordsChange cks = changedKeywords.get(timestamp); ; - changedKeywords.put(timestamp, cks.merge(addKeywords, removeKeywords, cks.isRemoveAllKeywords())); + changedKeywords.put(timestamp, cks.merge(addKeywords, removeKeywords, + cks.isRemoveAllKeywords(), cks.isRemoveIntrinsicKeywords())); updateKeywords(); return; } - changedKeywords.put(timestamp, new KeywordsChange(addKeywords, removeKeywords, false)); + changedKeywords.put(timestamp, new KeywordsChange(addKeywords, removeKeywords, false, false)); updateKeywords(); game.fireEvent(new GameEventPlayerStatsChanged(this)); } @@ -1135,9 +1160,33 @@ public class Player extends GameEntity implements Comparable { @Override public final boolean canBeTargetedBy(final SpellAbility sa) { - if (hasKeyword("Shroud") || (!equals(sa.getActivatingPlayer()) && hasKeyword("Hexproof")) - || hasProtectionFrom(sa.getHostCard()) - || (hasKeyword("You can't be the targets of spells or activated abilities") && (sa.isSpell() || (sa instanceof AbilityActivated)))) { + if (hasKeyword("Shroud")) { + return false; + } + if (hasKeyword("Hexproof")) { + final Player a = sa.getActivatingPlayer(); + if (isOpponentOf(a)) { + boolean cancelHexproof = false; + for (String k : a.getKeywords()) { + if (k.startsWith("IgnoreHexproof")) { + String m[] = k.split(":"); + if (isValid(m[1].split(","), a, sa.getHostCard(), sa)) { + cancelHexproof = true; + break; + } + } + } + if (!cancelHexproof) { + return false; + } + } + } + + if (hasProtectionFrom(sa.getHostCard())) { + return false; + } + + if ((hasKeyword("You can't be the targets of spells or activated abilities") && (sa.isSpell() || (sa instanceof AbilityActivated)))) { return false; } return true; @@ -1157,6 +1206,8 @@ public class Player extends GameEntity implements Comparable { if (source.isValid(characteristics, this, null, null)) { return true; } + } else if (kw.equals("Protection from everything")) { + return true; } else { final boolean colorlessDamage = damageSource && source.hasKeyword("Colorless Damage Source"); @@ -1198,15 +1249,11 @@ public class Player extends GameEntity implements Comparable { return drawCards(1); } - public void scry(final int numScry) { - final CardCollection topN = new CardCollection(); - final PlayerZone library = getZone(ZoneType.Library); - final int actualNumScry = Math.min(numScry, library.size()); + public void scry(final int numScry, SpellAbility cause) { + final CardCollection topN = new CardCollection(this.getCardsIn(ZoneType.Library, numScry)); - if (actualNumScry == 0) { return; } - - for (int i = 0; i < actualNumScry; i++) { - topN.add(library.get(i)); + if (topN.isEmpty()) { + return; } final ImmutablePair lists = getController().arrangeForScry(topN); @@ -1218,7 +1265,7 @@ public class Player extends GameEntity implements Comparable { if (toBottom != null) { for(Card c : toBottom) { - getGame().getAction().moveToBottomOfLibrary(c, null, null); + getGame().getAction().moveToBottomOfLibrary(c, cause, null); numToBottom++; } } @@ -1226,7 +1273,7 @@ public class Player extends GameEntity implements Comparable { if (toTop != null) { Collections.reverse(toTop); // the last card in list will become topmost in library, have to revert thus. for(Card c : toTop) { - getGame().getAction().moveToLibrary(c, null, null); + getGame().getAction().moveToLibrary(c, cause, null); numToTop++; } } @@ -1238,6 +1285,70 @@ public class Player extends GameEntity implements Comparable { getGame().getTriggerHandler().runTrigger(TriggerType.Scry, runParams, false); } + public void surveil(int num, SpellAbility cause) { + + final Map repParams = Maps.newHashMap(); + repParams.put("Event", "Surveil"); + repParams.put("Affected", this); + repParams.put("Source", cause); + repParams.put("SurveilNum", num); + + switch (getGame().getReplacementHandler().run(repParams)) { + case NotReplaced: + break; + case Updated: { + num = (int) repParams.get("SurveilNum"); + break; + } + default: + return; + } + + final CardCollection topN = new CardCollection(this.getCardsIn(ZoneType.Library, num)); + + if (topN.isEmpty()) { + return; + } + + final ImmutablePair lists = getController().arrangeForSurveil(topN); + final CardCollection toTop = lists.getLeft(); + final CardCollection toGrave = lists.getRight(); + + int numToGrave = 0; + int numToTop = 0; + + if (toGrave != null) { + for(Card c : toGrave) { + getGame().getAction().moveToGraveyard(c, cause, null); + numToGrave++; + } + } + + if (toTop != null) { + Collections.reverse(toTop); // the last card in list will become topmost in library, have to revert thus. + for(Card c : toTop) { + getGame().getAction().moveToLibrary(c, cause, null); + numToTop++; + } + } + + getGame().fireEvent(new GameEventSurveil(this, numToTop, numToGrave)); + + surveilThisTurn++; + final Map runParams = Maps.newHashMap(); + runParams.put("Player", this); + runParams.put("NumThisTurn", surveilThisTurn); + getGame().getTriggerHandler().runTrigger(TriggerType.Surveil, runParams, false); + } + + public int getSurveilThisTurn() { + return surveilThisTurn; + } + + public void resetSurveilThisTurn() { + surveilThisTurn = 0; + } + public boolean canMulligan() { return !getZone(ZoneType.Hand).isEmpty(); } @@ -1444,28 +1555,6 @@ public class Player extends GameEntity implements Comparable { return CardCollection.combine(getCardsIn(Player.ALL_ZONES), getCardsIn(ZoneType.Stack), inboundTokens); } - protected final CardCollectionView getDredge() { - final CardCollection dredge = new CardCollection(); - int cntLibrary = getCardsIn(ZoneType.Library).size(); - for (final Card c : getCardsIn(ZoneType.Graveyard)) { - int nDr = getDredgeNumber(c); - if (nDr > 0 && cntLibrary >= nDr) { - dredge.add(c); - } - } - return dredge; - } - - private static int getDredgeNumber(final Card c) { - for (final KeywordInterface k : c.getKeywords()) { - final String s = k.getOriginal(); - if (s.startsWith("Dredge")) { - return Integer.parseInt("" + s.charAt(s.length() - 1)); - } - } - return 0; - } - public final void resetNumDrawnThisTurn() { numDrawnThisTurn = 0; numDrawnThisDrawStep = 0; @@ -2062,6 +2151,10 @@ public class Player extends GameEntity implements Comparable { public final void resetLandsPlayedThisTurn() { landsPlayedThisTurn = 0; } + public final void setLandsPlayedThisTurn(int num) { + // This method should only be used directly when setting up the game state. + landsPlayedThisTurn = num; + } public final void setLandsPlayedLastTurn(int num) { landsPlayedLastTurn = num; } @@ -2140,6 +2233,13 @@ public class Player extends GameEntity implements Comparable { spellsCastLastTurn = num; } + public final int getLifeGainedByTeamThisTurn() { + return lifeGainedByTeamThisTurn; + } + public final void addLifeGainedByTeamThisTurn(int val) { + lifeGainedByTeamThisTurn += val; + } + public final int getLifeGainedThisTurn() { return lifeGainedThisTurn; } @@ -2310,6 +2410,7 @@ public class Player extends GameEntity implements Comparable { setLandsPlayedLastTurn(getLandsPlayedThisTurn()); resetLandsPlayedThisTurn(); resetInvestigatedThisTurn(); + resetSurveilThisTurn(); resetSacrificedThisTurn(); resetCounterToPermThisTurn(); clearAssignedDamage(); @@ -2780,7 +2881,32 @@ public class Player extends GameEntity implements Comparable { this.updateZoneForView(com); } + public final boolean sameTeam(final Player other) { + if (this.equals(other)) { + return true; + } + if (this.teamNumber < 0 || other.getTeam() < 0) { + return false; + } + return this.teamNumber == other.getTeam(); + } + public final int countExaltedBonus() { return CardLists.getAmountOfKeyword(this.getCardsIn(ZoneType.Battlefield), Keyword.EXALTED); } + + public final void clearNextTurn() { + resetProwl(); + setSpellsCastLastTurn(getSpellsCastThisTurn()); + resetSpellsCastThisTurn(); + setLifeLostLastTurn(getLifeLostThisTurn()); + setLifeLostThisTurn(0); + lifeGainedThisTurn = 0; + lifeGainedByTeamThisTurn = 0; + setLibrarySearched(0); + setNumManaConversion(0); + + removeKeyword("Skip the untap step of this turn."); + removeKeyword("Schemes can't be set in motion this turn."); + } } diff --git a/forge-game/src/main/java/forge/game/player/PlayerController.java b/forge-game/src/main/java/forge/game/player/PlayerController.java index 40849fccd4f..adc6bd77754 100644 --- a/forge-game/src/main/java/forge/game/player/PlayerController.java +++ b/forge-game/src/main/java/forge/game/player/PlayerController.java @@ -107,7 +107,8 @@ public abstract class PlayerController { public final T chooseSingleEntityForEffect(FCollectionView optionList, SpellAbility sa, String title) { return chooseSingleEntityForEffect(optionList, null, sa, title, false, null); } public final T chooseSingleEntityForEffect(FCollectionView optionList, SpellAbility sa, String title, boolean isOptional) { return chooseSingleEntityForEffect(optionList, null, sa, title, isOptional, null); } public abstract T chooseSingleEntityForEffect(FCollectionView optionList, DelayedReveal delayedReveal, SpellAbility sa, String title, boolean isOptional, Player relatedPlayer); - public abstract SpellAbility chooseSingleSpellForEffect(List spells, SpellAbility sa, String title); + public abstract SpellAbility chooseSingleSpellForEffect(List spells, SpellAbility sa, String title, + Map params); public abstract List chooseEntitiesForEffect(FCollectionView optionList, DelayedReveal delayedReveal, SpellAbility sa, String title, Player relatedPlayer); @@ -139,6 +140,8 @@ public abstract class PlayerController { /** Shows message to player to reveal chosen cardName, creatureType, number etc. AI must analyze API to understand what that is */ public abstract void notifyOfValue(SpellAbility saSource, GameObject realtedTarget, String value); public abstract ImmutablePair arrangeForScry(CardCollection topN); + public abstract ImmutablePair arrangeForSurveil(CardCollection topN); + public abstract boolean willPutCardOnTop(Card c); public final CardCollectionView orderMoveToZoneList(CardCollectionView cards, ZoneType destinationZone) { return orderMoveToZoneList(cards, destinationZone, null); diff --git a/forge-game/src/main/java/forge/game/player/PlayerPredicates.java b/forge-game/src/main/java/forge/game/player/PlayerPredicates.java index a78d6caa380..004099f3d01 100644 --- a/forge-game/src/main/java/forge/game/player/PlayerPredicates.java +++ b/forge-game/src/main/java/forge/game/player/PlayerPredicates.java @@ -31,6 +31,15 @@ public final class PlayerPredicates { }; } + public static final Predicate sameTeam(final Player player) { + return new Predicate() { + @Override + public boolean apply(final Player p) { + return player.sameTeam(p); + } + }; + } + public static final Predicate isCardInPlay(final String cardName) { return new Predicate() { @Override diff --git a/forge-game/src/main/java/forge/game/player/PlayerProperty.java b/forge-game/src/main/java/forge/game/player/PlayerProperty.java index 1fe534d07db..02ffcfb4ea2 100644 --- a/forge-game/src/main/java/forge/game/player/PlayerProperty.java +++ b/forge-game/src/main/java/forge/game/player/PlayerProperty.java @@ -38,6 +38,10 @@ public class PlayerProperty { return false; } } + } else if (property.equals("YourTeam")) { + if (!player.sameTeam(sourceController)) { + return false; + } } else if (property.equals("Allies")) { if (player.equals(sourceController) || player.isOpponentOf(sourceController)) { return false; diff --git a/forge-game/src/main/java/forge/game/player/PlayerView.java b/forge-game/src/main/java/forge/game/player/PlayerView.java index 7e1ba3b9bf8..33751b10e7d 100644 --- a/forge-game/src/main/java/forge/game/player/PlayerView.java +++ b/forge-game/src/main/java/forge/game/player/PlayerView.java @@ -11,7 +11,6 @@ import forge.util.TextUtil; import org.apache.commons.lang3.StringUtils; import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; import com.google.common.collect.ImmutableMultiset; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; diff --git a/forge-game/src/main/java/forge/game/replacement/ReplaceSurveil.java b/forge-game/src/main/java/forge/game/replacement/ReplaceSurveil.java new file mode 100644 index 00000000000..c2121b2e0d7 --- /dev/null +++ b/forge-game/src/main/java/forge/game/replacement/ReplaceSurveil.java @@ -0,0 +1,51 @@ +package forge.game.replacement; + +import forge.game.card.Card; +import forge.game.spellability.SpellAbility; + +import java.util.Map; + +/** + * TODO: Write javadoc for this type. + * + */ +public class ReplaceSurveil extends ReplacementEffect { + + /** + * + * ReplaceProduceMana. + * @param mapParams   HashMap + * @param host   Card + */ + public ReplaceSurveil(final Map mapParams, final Card host, final boolean intrinsic) { + super(mapParams, host, intrinsic); + } + + /* (non-Javadoc) + * @see forge.card.replacement.ReplacementEffect#canReplace(java.util.Map) + */ + @Override + public boolean canReplace(Map runParams) { + if (!runParams.get("Event").equals("Surveil") || ((int) runParams.get("SurveilNum")) <= 0) { + return false; + } + + if (hasParam("ValidPlayer")) { + if (!matchesValid(runParams.get("Affected"), getParam("ValidPlayer").split(","), getHostCard())) { + return false; + } + } + + return true; + } + + /* (non-Javadoc) + * @see forge.card.replacement.ReplacementEffect#setReplacingObjects(java.util.Map, forge.card.spellability.SpellAbility) + */ + @Override + public void setReplacingObjects(Map runParams, SpellAbility sa) { + sa.setReplacingObject("Player", runParams.get("Affected")); + sa.setReplacingObject("SurveilNum", runParams.get("SurveilNum")); + } + +} diff --git a/forge-game/src/main/java/forge/game/replacement/ReplacementType.java b/forge-game/src/main/java/forge/game/replacement/ReplacementType.java index 35fed6dbc52..9d420ef7199 100644 --- a/forge-game/src/main/java/forge/game/replacement/ReplacementType.java +++ b/forge-game/src/main/java/forge/game/replacement/ReplacementType.java @@ -24,6 +24,7 @@ public enum ReplacementType { Moved(ReplaceMoved.class), ProduceMana(ReplaceProduceMana.class), SetInMotion(ReplaceSetInMotion.class), + Surveil(ReplaceSurveil.class), TurnFaceUp(ReplaceTurnFaceUp.class), Untap(ReplaceUntap.class); diff --git a/forge-game/src/main/java/forge/game/spellability/OptionalCost.java b/forge-game/src/main/java/forge/game/spellability/OptionalCost.java index c3dd92babf9..64976a1670b 100644 --- a/forge-game/src/main/java/forge/game/spellability/OptionalCost.java +++ b/forge-game/src/main/java/forge/game/spellability/OptionalCost.java @@ -11,9 +11,9 @@ public enum OptionalCost { Kicker1("Kicker"), Kicker2("Kicker"), Retrace("Retrace"), - Surge("Surge"), // no real OptionalCost but used there - AltCost(""), // used by prowl - Flash("Flash"), + Jumpstart("Jump-start"), + AltCost(""), + Flash("Flash"), // used for Pay Extra for Flash Generic("Generic"); // used by "Dragon Presence" and pseudo-kicker cards private String name; diff --git a/forge-game/src/main/java/forge/game/spellability/Spell.java b/forge-game/src/main/java/forge/game/spellability/Spell.java index 593a672331b..92879d67545 100644 --- a/forge-game/src/main/java/forge/game/spellability/Spell.java +++ b/forge-game/src/main/java/forge/game/spellability/Spell.java @@ -20,6 +20,7 @@ package forge.game.spellability; import com.google.common.collect.Sets; import forge.card.CardStateName; +import forge.card.mana.ManaCost; import forge.game.Game; import forge.game.card.Card; import forge.game.card.CardCollection; @@ -74,6 +75,13 @@ public abstract class Spell extends SpellAbility implements java.io.Serializable @Override public boolean canPlay() { Card card = this.getHostCard(); + + // Save the original cost and the face down info for a later check since the LKI copy will overwrite them + ManaCost origCost = card.getState(card.isFaceDown() ? CardStateName.Original : card.getCurrentStateName()).getManaCost(); + boolean wasFaceDownInstant = card.isFaceDown() + && !card.getLastKnownZone().is(ZoneType.Battlefield) + && card.getState(CardStateName.Original).getType().isInstant(); + Player activator = this.getActivatingPlayer(); if (activator == null) { activator = card.getController(); @@ -98,7 +106,8 @@ public abstract class Spell extends SpellAbility implements java.io.Serializable boolean flash = false; // do performanceMode only for cases where the activator is different than controller - if (!Spell.performanceMode && activator != null && !card.getController().equals(activator)) { + if (!Spell.performanceMode && activator != null && !card.getController().equals(activator) + && !card.isInZone(ZoneType.Battlefield)) { // always make a lki copy in this case? card = CardUtil.getLKICopy(card); card.setController(activator, 0); @@ -139,7 +148,7 @@ public abstract class Spell extends SpellAbility implements java.io.Serializable if (!(isInstant || activator.canCastSorcery() || flash || getRestrictions().isInstantSpeed() || hasSVar("IsCastFromPlayEffect") - || (card.isFaceDown() && !card.getLastKnownZone().is(ZoneType.Battlefield) && card.getState(CardStateName.Original).getType().isInstant()))) { + || wasFaceDownInstant)) { return false; } @@ -152,7 +161,7 @@ public abstract class Spell extends SpellAbility implements java.io.Serializable if (!isCastFaceDown() && !hasSVar("IsCastFromPlayEffect") && isBasicSpell() - && card.getState(card.isFaceDown() ? CardStateName.Original : card.getCurrentStateName()).getManaCost().isNoCost()) { + && origCost.isNoCost()) { return false; } 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 2118184f9cb..afa679d269d 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbility.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbility.java @@ -97,6 +97,8 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit private boolean cycling = false; private boolean dash = false; private boolean evoke = false; + private boolean prowl = false; + private boolean surge = false; private boolean offering = false; private boolean emerge = false; private boolean morphup = false; @@ -106,6 +108,8 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit private boolean blessing = false; private Integer chapter = null; + private boolean basicLandAbility = false; + private SplitSide splitSide = null; enum SplitSide { LEFT, RIGHT }; private int totalManaSpent = 0; @@ -469,11 +473,11 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit } // Combined PaidLists - public HashMap getPaidHash() { + public Map getPaidHash() { return paidLists; } - public void setPaidHash(final HashMap hash) { - paidLists = hash; + public void setPaidHash(final Map hash) { + paidLists = Maps.newHashMap(hash); } public CardCollection getPaidList(final String str) { @@ -508,14 +512,14 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit getMultiKickerManaCost() != null; } - public boolean isSurged() { - return isOptionalCostPaid(OptionalCost.Surge); - } - public boolean isEntwine() { return isOptionalCostPaid(OptionalCost.Entwine); } + public boolean isJumpstart() { + return isOptionalCostPaid(OptionalCost.Jumpstart); + } + public boolean isOptionalCostPaid(OptionalCost cost) { SpellAbility saRoot = getRootAbility(); return saRoot.optionalCosts.contains(cost); @@ -665,8 +669,13 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit if (node != this) { sb.append(" "); } + String desc = node.getDescription(); if (node.getHostCard() != null) { - sb.append(TextUtil.fastReplace(node.getDescription(), "CARDNAME", node.getHostCard().getName())); + desc = TextUtil.fastReplace(desc, "CARDNAME", node.getHostCard().getName()); + if (node.getOriginalHost() != null) { + desc = TextUtil.fastReplace(desc, "ORIGINALHOST", node.getOriginalHost().getName()); + } + sb.append(desc); } node = node.getSubAbility(); } @@ -754,6 +763,13 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit return flashBackAbility; } + public void setBasicLandAbility(final boolean basicLandAbility0) { + basicLandAbility = basicLandAbility0; + } + public boolean isBasicLandAbility() { + return basicLandAbility && isIntrinsic(); + } + /** * @return the aftermath */ @@ -886,6 +902,10 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit return newSA; } + public SpellAbility copyWithDefinedCost(String abCost) { + return copyWithDefinedCost(new Cost(abCost, isAbility())); + } + public boolean isTrigger() { return trigger; } @@ -1054,6 +1074,22 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit evoke = isEvoke; } + public final boolean isProwl() { + return prowl; + } + + public final void setProwl(final boolean isProwl) { + prowl = isProwl; + } + + public final boolean isSurged() { + return surge; + } + + public final void setSurged(final boolean isSurge) { + surge = isSurge; + } + public CardCollection getTappedForConvoke() { return tappedForConvoke; } diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbilityRestriction.java b/forge-game/src/main/java/forge/game/spellability/SpellAbilityRestriction.java index cf5178b491c..111659b7e03 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbilityRestriction.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbilityRestriction.java @@ -20,8 +20,6 @@ package forge.game.spellability; import java.util.List; import java.util.Map; -import com.google.common.collect.Lists; - import forge.game.Game; import forge.game.ability.AbilityUtils; import forge.game.card.Card; @@ -93,14 +91,6 @@ public class SpellAbilityRestriction extends SpellAbilityVariables { if (value.equals("Blessing")) { this.setBlessing(true); } - if (value.startsWith("Prowl")) { - final List prowlTypes = Lists.newArrayList(); - prowlTypes.add("Rogue"); - if (value.split("Prowl").length > 1) { - prowlTypes.add(value.split("Prowl")[1]); - } - this.setProwlTypes(prowlTypes); - } } if (params.containsKey("ActivationZone")) { @@ -382,38 +372,44 @@ public class SpellAbilityRestriction extends SpellAbilityVariables { final Game game = activator.getGame(); // legendary sorcery - if (c.isSorcery() && c.getType().isLegendary() && - CardLists.getValidCards(activator.getCardsIn(ZoneType.Battlefield), "Creature.Legendary,Planeswalker.Legendary", c.getController(), c).isEmpty()) { + if (c.isSorcery() && c.getType().isLegendary() && CardLists.getValidCardCount( + activator.getCardsIn(ZoneType.Battlefield), + "Creature.Legendary,Planeswalker.Legendary", c.getController(), c) <= 0) { return false; } - if (this.getCardsInHand() != -1) { - if (activator.getCardsIn(ZoneType.Hand).size() != this.getCardsInHand()) { + // Explicit Aftermath check there + if (sa.isAftermath() && !c.isInZone(ZoneType.Graveyard)) { + return false; + } + + if (getCardsInHand() != -1) { + if (activator.getCardsIn(ZoneType.Hand).size() != getCardsInHand()) { return false; } } - if (this.getColorToCheck() != null) { - if (!sa.getHostCard().hasChosenColor(this.getColorToCheck())) { + if (getColorToCheck() != null) { + if (!sa.getHostCard().hasChosenColor(getColorToCheck())) { return false; } } - if (this.isHellbent()) { + if (isHellbent()) { if (!activator.hasHellbent()) { return false; } } - if (this.isThreshold()) { + if (isThreshold()) { if (!activator.hasThreshold()) { return false; } } - if (this.isMetalcraft()) { + if (isMetalcraft()) { if (!activator.hasMetalcraft()) { return false; } } - if (this.isDelirium()) { + if (isDelirium()) { if (!activator.hasDelirium()) { return false; } @@ -423,21 +419,19 @@ public class SpellAbilityRestriction extends SpellAbilityVariables { return false; } } - if (this.isDesert()) { + if (isDesert()) { if (!activator.hasDesert()) { return false; } } - if (this.isBlessing()) { + if (isBlessing()) { if (!activator.hasBlessing()) { return false; } } - if (this.getProwlTypes() != null && !this.getProwlTypes().isEmpty()) { - // only true if the activating player has damaged the opponent with - // one of the specified types + if (sa.isProwl()) { boolean prowlFlag = false; - for (final String type : this.getProwlTypes()) { + for (final String type : c.getType().getCreatureTypes()) { if (activator.hasProwl(type)) { prowlFlag = true; } diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbilityStackInstance.java b/forge-game/src/main/java/forge/game/spellability/SpellAbilityStackInstance.java index 386c128c648..3b56e3903fa 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbilityStackInstance.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbilityStackInstance.java @@ -198,8 +198,7 @@ public class SpellAbilityStackInstance implements IIdentifiable, IHasCardView { } // Set Cost specific things here - ability.resetPaidHash(); - ability.setPaidHash(new HashMap(paidHash)); + ability.setPaidHash(paidHash); ability.setSplicedCards(splicedCards); ability.getHostCard().setXManaCostPaid(xManaPaid); diff --git a/forge-game/src/main/java/forge/game/spellability/SpellAbilityVariables.java b/forge-game/src/main/java/forge/game/spellability/SpellAbilityVariables.java index ed92cec5f28..ed4cc49e41f 100644 --- a/forge-game/src/main/java/forge/game/spellability/SpellAbilityVariables.java +++ b/forge-game/src/main/java/forge/game/spellability/SpellAbilityVariables.java @@ -76,7 +76,6 @@ public class SpellAbilityVariables implements Cloneable { this.hellbent = sav.isHellbent(); this.allTargetsLegal = sav.isAllTargetsLegal(); this.shareAllColors = sav.getShareAllColors(); - this.prowlTypes = Lists.newArrayList(sav.getProwlTypes()); this.isPresent = sav.getIsPresent(); this.presentCompare = sav.getPresentCompare(); this.presentDefined = sav.getPresentDefined(); @@ -158,9 +157,6 @@ public class SpellAbilityVariables implements Cloneable { private boolean allTargetsLegal = false; - /** The prowl. */ - private List prowlTypes = Lists.newArrayList(); - /** The s is present. */ private String isPresent = null; @@ -497,19 +493,6 @@ public class SpellAbilityVariables implements Cloneable { this.allTargetsLegal = allTargets; } - - /** - *

- * Setter for the field prowl. - *

- * - * @param types - * the new prowl - */ - public final void setProwlTypes(final List types) { - this.prowlTypes = types; - } - // IsPresent for Valid battlefield stuff /** @@ -719,15 +702,6 @@ public class SpellAbilityVariables implements Cloneable { return this.playerTurn; } - /** - * Gets the prowl. - * - * @return the prowl - */ - public final List getProwlTypes() { - return this.prowlTypes; - } - /** * Gets the present compare. * diff --git a/forge-game/src/main/java/forge/game/staticability/StaticAbility.java b/forge-game/src/main/java/forge/game/staticability/StaticAbility.java index a1af6d78c2b..ca173f8171b 100644 --- a/forge-game/src/main/java/forge/game/staticability/StaticAbility.java +++ b/forge-game/src/main/java/forge/game/staticability/StaticAbility.java @@ -126,7 +126,9 @@ public class StaticAbility extends CardTraitBase implements Comparable addFullAbs = null; boolean removeAllAbilities = false; + boolean removeIntrinsicAbilities = false; boolean removeNonMana = false; boolean removeSuperTypes = false; boolean removeCardTypes = false; boolean removeSubTypes = false; + boolean removeLandTypes = false; boolean removeCreatureTypes = false; boolean removeArtifactTypes = false; + boolean removeEnchantmentTypes = false; List mayLookAt = null; List withFlash = null; @@ -253,6 +256,11 @@ public final class StaticAbilityContinuous { removeNonMana = true; } } + // do this in type layer too in case of blood moon + if ((layer == StaticAbilityLayer.ABILITIES1 || layer == StaticAbilityLayer.TYPE) + && params.containsKey("RemoveIntrinsicAbilities")) { + removeIntrinsicAbilities = true; + } if (layer == StaticAbilityLayer.ABILITIES2 && params.containsKey("AddAbility")) { final String[] sVars = params.get("AddAbility").split(" & "); @@ -310,12 +318,18 @@ public final class StaticAbilityContinuous { removeSubTypes = true; } + if (params.containsKey("RemoveLandTypes")) { + removeLandTypes = true; + } if (params.containsKey("RemoveCreatureTypes")) { removeCreatureTypes = true; } if (params.containsKey("RemoveArtifactTypes")) { removeArtifactTypes = true; } + if (params.containsKey("RemoveEnchantmentTypes")) { + removeEnchantmentTypes = true; + } } if (layer == StaticAbilityLayer.COLOR) { @@ -568,14 +582,7 @@ public final class StaticAbilityContinuous { // set P/T if (layer == StaticAbilityLayer.SETPT) { - if (params.containsKey("CharacteristicDefining")) { - if (setPower != Integer.MAX_VALUE) { - affectedCard.setBasePower(setPower); - } - if (setToughness != Integer.MAX_VALUE) { - affectedCard.setBaseToughness(setToughness); - } - } else if ((setPower != Integer.MAX_VALUE) || (setToughness != Integer.MAX_VALUE)) { + if ((setPower != Integer.MAX_VALUE) || (setToughness != Integer.MAX_VALUE)) { // non CharacteristicDefining if (setP.startsWith("AffectedX")) { setPower = CardFactoryUtil.xCount(affectedCard, AbilityUtils.getSVar(stAb, setP)); @@ -583,7 +590,8 @@ public final class StaticAbilityContinuous { if (setT.startsWith("AffectedX")) { setToughness = CardFactoryUtil.xCount(affectedCard, AbilityUtils.getSVar(stAb, setT)); } - affectedCard.addNewPT(setPower, setToughness, hostCard.getTimestamp()); + affectedCard.addNewPT(setPower, setToughness, + hostCard.getTimestamp(), stAb.hasParam("CharacteristicDefining")); } } @@ -604,7 +612,7 @@ public final class StaticAbilityContinuous { // add keywords // TODO regular keywords currently don't try to use keyword multiplier // (Although nothing uses it at this time) - if ((addKeywords != null) || (removeKeywords != null) || removeAllAbilities) { + if ((addKeywords != null) || (removeKeywords != null) || removeAllAbilities || removeIntrinsicAbilities) { String[] newKeywords = null; if (addKeywords != null) { newKeywords = Arrays.copyOf(addKeywords, addKeywords.length); @@ -622,7 +630,8 @@ public final class StaticAbilityContinuous { } } - affectedCard.addChangedCardKeywords(newKeywords, removeKeywords, removeAllAbilities, + affectedCard.addChangedCardKeywords(newKeywords, removeKeywords, + removeAllAbilities, removeIntrinsicAbilities, hostCard.getTimestamp()); } @@ -686,7 +695,8 @@ public final class StaticAbilityContinuous { // add Types if ((addTypes != null) || (removeTypes != null)) { affectedCard.addChangedCardTypes(addTypes, removeTypes, removeSuperTypes, removeCardTypes, - removeSubTypes, removeCreatureTypes, removeArtifactTypes, hostCard.getTimestamp()); + removeSubTypes, removeLandTypes, removeCreatureTypes, removeArtifactTypes, + removeEnchantmentTypes, hostCard.getTimestamp()); } // add colors @@ -731,28 +741,41 @@ public final class StaticAbilityContinuous { } // remove triggers - if ((layer == StaticAbilityLayer.ABILITIES2 && (params.containsKey("RemoveTriggers")) || removeAllAbilities)) { + if ((layer == StaticAbilityLayer.ABILITIES2 && (params.containsKey("RemoveTriggers")) + || removeAllAbilities || removeIntrinsicAbilities)) { for (final Trigger trigger : affectedCard.getTriggers()) { - trigger.setTemporarilySuppressed(true); + if (removeAllAbilities || (removeIntrinsicAbilities && trigger.isIntrinsic())) { + trigger.setTemporarilySuppressed(true); + } } } // remove activated and static abilities - if (removeAllAbilities) { + if (removeAllAbilities || removeIntrinsicAbilities) { if (removeNonMana) { // Blood Sun - for (final SpellAbility mana : affectedCard.getNonManaAbilities()) { - mana.setTemporarilySuppressed(true); + for (final SpellAbility mana : affectedCard.getNonManaAbilities()) { + if (removeAllAbilities + || (removeIntrinsicAbilities && mana.isIntrinsic() && !mana.isBasicLandAbility())) { + mana.setTemporarilySuppressed(true); + } } } else { for (final SpellAbility ab : affectedCard.getSpellAbilities()) { - ab.setTemporarilySuppressed(true); + if (removeAllAbilities + || (removeIntrinsicAbilities && ab.isIntrinsic() && !ab.isBasicLandAbility())) { + ab.setTemporarilySuppressed(true); + } } } for (final StaticAbility stA : affectedCard.getStaticAbilities()) { - stA.setTemporarilySuppressed(true); + if (removeAllAbilities || (removeIntrinsicAbilities && stA.isIntrinsic())) { + stA.setTemporarilySuppressed(true); + } } for (final ReplacementEffect rE : affectedCard.getReplacementEffects()) { - rE.setTemporarilySuppressed(true); + if (removeAllAbilities || (removeIntrinsicAbilities && rE.isIntrinsic())) { + rE.setTemporarilySuppressed(true); + } } } diff --git a/forge-game/src/main/java/forge/game/trigger/Trigger.java b/forge-game/src/main/java/forge/game/trigger/Trigger.java index 4787878805d..8b39080b26f 100644 --- a/forge-game/src/main/java/forge/game/trigger/Trigger.java +++ b/forge-game/src/main/java/forge/game/trigger/Trigger.java @@ -213,6 +213,9 @@ public abstract class Trigger extends TriggerReplacementBase { // string might have leading whitespace saDesc = saDesc.trim(); saDesc = saDesc.substring(0, 1).toLowerCase() + saDesc.substring(1); + if (saDesc.contains("ORIGINALHOST") && sa.getOriginalHost() != null) { + saDesc = TextUtil.fastReplace(saDesc, "ORIGINALHOST", sa.getOriginalHost().getName()); + } result = TextUtil.fastReplace(result, "ABILITY", saDesc); } } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerChangesZone.java b/forge-game/src/main/java/forge/game/trigger/TriggerChangesZone.java index c24949f9e5a..fb0f1497997 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerChangesZone.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerChangesZone.java @@ -65,57 +65,71 @@ public class TriggerChangesZone extends Trigger { /** {@inheritDoc} */ @Override - public final boolean performTest(final java.util.Map runParams2) { - if (this.mapParams.containsKey("Origin")) { - if (!this.mapParams.get("Origin").equals("Any")) { - if (this.mapParams.get("Origin") == null) { + public final boolean performTest(final Map runParams2) { + if (hasParam("Origin")) { + if (!getParam("Origin").equals("Any")) { + if (getParam("Origin") == null) { return false; } if (!ArrayUtils.contains( - this.mapParams.get("Origin").split(","), runParams2.get("Origin") + getParam("Origin").split(","), runParams2.get("Origin") )) { return false; } } } - if (this.mapParams.containsKey("Destination")) { - if (!this.mapParams.get("Destination").equals("Any")) { + if (hasParam("Destination")) { + if (!getParam("Destination").equals("Any")) { if (!ArrayUtils.contains( - this.mapParams.get("Destination").split(","), runParams2.get("Destination") + getParam("Destination").split(","), runParams2.get("Destination") )) { return false; } } } - if (this.mapParams.containsKey("ExcludedDestinations")) { + if (hasParam("ExcludedDestinations")) { if (!ArrayUtils.contains( - this.mapParams.get("ExcludedDestinations").split(","), runParams2.get("Destination") + getParam("ExcludedDestinations").split(","), runParams2.get("Destination") )) { return false; } } - if (this.mapParams.containsKey("ValidCard")) { + if (hasParam("ValidCard")) { Card moved = (Card) runParams2.get("Card"); - final Game game = this.getHostCard().getGame(); - boolean isDiesTrig = "Battlefield".equals(this.mapParams.get("Origin")) - && "Graveyard".equals(this.mapParams.get("Destination")); + final Game game = getHostCard().getGame(); + boolean isDiesTrig = "Battlefield".equals(getParam("Origin")) + && "Graveyard".equals(getParam("Destination")); if (isDiesTrig) { moved = game.getChangeZoneLKIInfo(moved); } - if (!moved.isValid(this.mapParams.get("ValidCard").split(","), this.getHostCard().getController(), - this.getHostCard(), null)) { + if (!moved.isValid(getParam("ValidCard").split(","), getHostCard().getController(), + getHostCard(), null)) { + return false; + } + } + + if (hasParam("ValidCause")) { + if (!runParams2.containsKey("Cause") ) { + return false; + } + SpellAbility cause = (SpellAbility) runParams2.get("Cause"); + if (cause == null) { + return false; + } + if (!cause.getHostCard().isValid(getParam("ValidCause").split(","), getHostCard().getController(), + getHostCard(), null)) { return false; } } // Check number of lands ETB this turn on triggered card's controller - if (mapParams.containsKey("CheckOnTriggeredCard")) { - final String[] condition = mapParams.get("CheckOnTriggeredCard").split(" ", 2); + if (hasParam("CheckOnTriggeredCard")) { + final String[] condition = getParam("CheckOnTriggeredCard").split(" ", 2); final Card host = hostCard.getGame().getCardState(hostCard); final String comparator = condition.length < 2 ? "GE1" : condition[1]; @@ -128,8 +142,8 @@ public class TriggerChangesZone extends Trigger { } // Check amount of damage dealt to the triggered card - if (this.mapParams.containsKey("DamageReceivedCondition")) { - final String cond = this.mapParams.get("DamageReceivedCondition"); + if (hasParam("DamageReceivedCondition")) { + final String cond = getParam("DamageReceivedCondition"); if (cond.length() < 3) { return false; } @@ -152,7 +166,7 @@ public class TriggerChangesZone extends Trigger { } } - if (this.mapParams.containsKey("OncePerEffect")) { + if (hasParam("OncePerEffect")) { // A "once per effect" trigger will only trigger once regardless of how many things the effect caused // to change zones. @@ -184,8 +198,8 @@ public class TriggerChangesZone extends Trigger { } /* this trigger can only be activated once per turn, verify it hasn't already run */ - if (this.mapParams.containsKey("ActivationLimit")) { - return this.getActivationsThisTurn() < Integer.parseInt(this.mapParams.get("ActivationLimit")); + if (hasParam("ActivationLimit")) { + return this.getActivationsThisTurn() < Integer.parseInt(getParam("ActivationLimit")); } return true; diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerChangesZoneAll.java b/forge-game/src/main/java/forge/game/trigger/TriggerChangesZoneAll.java index 4753b2a6d25..528b6172210 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerChangesZoneAll.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerChangesZoneAll.java @@ -18,9 +18,9 @@ public class TriggerChangesZoneAll extends Trigger { @SuppressWarnings("unchecked") final Map moved = (Map) runParams2.get("Cards"); - if (this.mapParams.containsKey("Destination")) { - if (!this.mapParams.get("Destination").equals("Any")) { - if (!runParams2.get("Destination").equals(ZoneType.valueOf(this.mapParams.get("Destination")))) { + if (hasParam("Destination")) { + if (!getParam("Destination").equals("Any")) { + if (!runParams2.get("Destination").equals(ZoneType.valueOf(getParam("Destination")))) { return false; } } @@ -28,12 +28,12 @@ public class TriggerChangesZoneAll extends Trigger { final CardCollection allCards = new CardCollection(); - if (this.mapParams.containsKey("Origin")) { - if (!this.mapParams.get("Origin").equals("Any")) { - if (this.mapParams.get("Origin") == null) { + if (hasParam("Origin")) { + if (!getParam("Origin").equals("Any")) { + if (getParam("Origin") == null) { return false; } - final List origin = ZoneType.listValueOf((String)this.mapParams.get("Origin")); + final List origin = ZoneType.listValueOf((String)getParam("Origin")); for (ZoneType z : origin) { if (moved.containsKey(z)) { allCards.addAll(moved.get(z)); @@ -46,9 +46,9 @@ public class TriggerChangesZoneAll extends Trigger { } } - if (this.mapParams.containsKey("ValidCards")) { + if (hasParam("ValidCards")) { - int count = CardLists.getValidCardCount(allCards, this.mapParams.get("ValidCards").split(","),this.getHostCard().getController(), + int count = CardLists.getValidCardCount(allCards, getParam("ValidCards").split(","),this.getHostCard().getController(), this.getHostCard()); if (count == 0) { return false; @@ -65,9 +65,9 @@ public class TriggerChangesZoneAll extends Trigger { CardCollection allCards = new CardCollection(); - if (this.mapParams.containsKey("Origin")) { - if (!this.mapParams.get("Origin").equals("Any") && this.mapParams.get("Origin") != null) { - final List origin = ZoneType.listValueOf((String)this.mapParams.get("Origin")); + if (hasParam("Origin")) { + if (!getParam("Origin").equals("Any") && getParam("Origin") != null) { + final List origin = ZoneType.listValueOf((String)getParam("Origin")); for (ZoneType z : origin) { if (moved.containsKey(z)) { allCards.addAll(moved.get(z)); @@ -80,8 +80,8 @@ public class TriggerChangesZoneAll extends Trigger { } } - if (this.mapParams.containsKey("ValidCards")) { - allCards = CardLists.getValidCards(allCards, this.mapParams.get("ValidCards").split(","),this.getHostCard().getController(), + if (hasParam("ValidCards")) { + allCards = CardLists.getValidCards(allCards, getParam("ValidCards").split(","),this.getHostCard().getController(), this.getHostCard(), sa); } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerCounterAddedOnce.java b/forge-game/src/main/java/forge/game/trigger/TriggerCounterAddedOnce.java index 74b5f898122..549a3d81670 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerCounterAddedOnce.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerCounterAddedOnce.java @@ -53,15 +53,21 @@ public class TriggerCounterAddedOnce extends Trigger { /** {@inheritDoc} */ @Override public final boolean performTest(final Map runParams2) { - final CounterType addedType = (CounterType) runParams2.get("CounterType"); + if (hasParam("CounterType")) { + final CounterType addedType = (CounterType) runParams2.get("CounterType"); + final String type = getParam("CounterType"); + if (!type.equals(addedType.toString())) { + return false; + } + } if (hasParam("ValidCard")) { if (!runParams2.containsKey("Card")) return false; final Card addedTo = (Card) runParams2.get("Card"); - if (!addedTo.isValid(getParam("ValidCard").split(","), this.getHostCard().getController(), - this.getHostCard(), null)) { + if (!addedTo.isValid(getParam("ValidCard").split(","), getHostCard().getController(), + getHostCard(), null)) { return false; } } @@ -71,8 +77,8 @@ public class TriggerCounterAddedOnce extends Trigger { return false; final Player addedTo = (Player) runParams2.get("Player"); - if (!addedTo.isValid(getParam("ValidPlayer").split(","), this.getHostCard().getController(), - this.getHostCard(), null)) { + if (!addedTo.isValid(getParam("ValidPlayer").split(","), getHostCard().getController(), + getHostCard(), null)) { return false; } } @@ -81,21 +87,14 @@ public class TriggerCounterAddedOnce extends Trigger { if (!runParams2.containsKey("Source")) return false; - final Card source = (Card) runParams2.get("Source"); + final Player source = (Player) runParams2.get("Source"); if (source == null) { return false; } - if (!source.isValid(getParam("ValidSource").split(","), this.getHostCard().getController(), - this.getHostCard(), null)) { - return false; - } - } - - if (hasParam("CounterType")) { - final String type = getParam("CounterType"); - if (!type.equals(addedType.toString())) { + if (!source.isValid(getParam("ValidSource").split(","), getHostCard().getController(), + getHostCard(), null)) { return false; } } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java b/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java index cd25888a542..44dfb9fead2 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java @@ -63,14 +63,16 @@ public class TriggerHandler { @Override public boolean visit(Card c) { boolean changed = false; - for (int i = 0; i < c.getTriggers().size(); i++) { - Trigger trigger = c.getTriggers().get(i); - if (trigger.isTemporary()) { - c.removeTrigger(trigger); - changed = true; - i--; + List toRemove = Lists.newArrayList(); + for (Trigger t : c.getTriggers()) { + if (t.isTemporary()) { + toRemove.add(t); } } + for (Trigger t : toRemove) { + changed = true; + c.removeTrigger(t); + } if (changed) { c.updateStateForView(); } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerImmediate.java b/forge-game/src/main/java/forge/game/trigger/TriggerImmediate.java new file mode 100644 index 00000000000..3f97e5ba309 --- /dev/null +++ b/forge-game/src/main/java/forge/game/trigger/TriggerImmediate.java @@ -0,0 +1,47 @@ +/* + * Forge: Play Magic: the Gathering. + * Copyright (C) 2011 Forge Team + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package forge.game.trigger; + +import forge.game.card.Card; +import forge.game.spellability.SpellAbility; + +import java.util.Map; + + +public class TriggerImmediate extends Trigger { + + public TriggerImmediate(final java.util.Map params, final Card host, final boolean intrinsic) { + super(params, host, intrinsic); + } + + /** {@inheritDoc} */ + @Override + public final boolean performTest(final Map runParams2) { + return true; + } + + /** {@inheritDoc} */ + @Override + public void setTriggeringObjects(final SpellAbility sa) { + } + + @Override + public String getImportantStackObjects(SpellAbility sa) { + return ""; + } +} diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerSpellAbilityCast.java b/forge-game/src/main/java/forge/game/trigger/TriggerSpellAbilityCast.java index 48e1bb9b6da..cb098f9db61 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerSpellAbilityCast.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerSpellAbilityCast.java @@ -34,7 +34,6 @@ import forge.game.spellability.OptionalCost; import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbilityStackInstance; import forge.game.spellability.TargetChoices; -import forge.game.staticability.StaticAbility; import forge.game.zone.ZoneType; import forge.util.Expressions; diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerSurveil.java b/forge-game/src/main/java/forge/game/trigger/TriggerSurveil.java new file mode 100644 index 00000000000..2d3ee1dbb19 --- /dev/null +++ b/forge-game/src/main/java/forge/game/trigger/TriggerSurveil.java @@ -0,0 +1,79 @@ +/* + * Forge: Play Magic: the Gathering. + * Copyright (C) 2011 Forge Team + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package forge.game.trigger; + +import forge.game.card.Card; +import forge.game.player.Player; +import forge.game.spellability.SpellAbility; + +import java.util.Map; + +/** + * + * @author Forge + */ +public class TriggerSurveil extends Trigger { + + /** + *

+ * Constructor for TriggerSurveil + *

+ * + * @param params + * a {@link java.util.Map} object. + * @param host + * a {@link forge.game.card.Card} object. + * @param intrinsic + * the intrinsic + */ + public TriggerSurveil(final Map params, final Card host, final boolean intrinsic) { + super(params, host, intrinsic); + } + + @Override + public String getImportantStackObjects(SpellAbility sa) { + StringBuilder sb = new StringBuilder(); + sb.append("Player: ").append(sa.getTriggeringObject("Player")); + return sb.toString(); + } + + /** {@inheritDoc} */ + @Override + public final void setTriggeringObjects(final SpellAbility sa) { + sa.setTriggeringObject("Player", this.getRunParams().get("Player")); + } + + /** {@inheritDoc} */ + @Override + public final boolean performTest(final Map runParams2) { + Player p = (Player) runParams2.get("Player"); + if (hasParam("ValidPlayer")) { + if (!matchesValid(p, getParam("ValidPlayer").split(","), getHostCard())) { + return false; + } + } + + if (hasParam("OnlyFirst")) { + if ((int) runParams2.get("NumThisTurn") != 1) { + return false; + } + } + return true; + } + +} diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerType.java b/forge-game/src/main/java/forge/game/trigger/TriggerType.java index c0447b620e3..ca2bb440d1e 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerType.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerType.java @@ -53,6 +53,7 @@ public enum TriggerType { Explores(TriggerExplores.class), Fight(TriggerFight.class), FlippedCoin(TriggerFlippedCoin.class), + Immediate(TriggerImmediate.class), Investigated(TriggerInvestigated.class), LandPlayed(TriggerLandPlayed.class), LifeGained(TriggerLifeGained.class), @@ -76,6 +77,7 @@ public enum TriggerType { Shuffled(TriggerShuffled.class), SpellAbilityCast(TriggerSpellAbilityCast.class), SpellCast(TriggerSpellAbilityCast.class), + Surveil(TriggerSurveil.class), Tapped(TriggerTaps.class), Taps(TriggerTaps.class), TapsForMana(TriggerTapsForMana.class), diff --git a/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java b/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java index ab992ad528d..927895756f3 100644 --- a/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java +++ b/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java @@ -81,12 +81,12 @@ public class WrappedAbility extends Ability { } @Override - public void setPaidHash(final HashMap hash) { + public void setPaidHash(final Map hash) { sa.setPaidHash(hash); } @Override - public HashMap getPaidHash() { + public Map getPaidHash() { return sa.getPaidHash(); } @@ -209,10 +209,10 @@ public class WrappedAbility extends Ability { // a real solution would include only the triggering information that actually is used, but that's a major change @Override public String toUnsuppressedString() { - String desc = this.getStackDescription(); /* use augmented stack description as string for wrapped things */ - String card = getTrigger().getHostCard().toString(); + String desc = this.getStackDescription(); /* use augmented stack description as string for wrapped things */ + String card = getTrigger().getHostCard().toString(); if ( !desc.contains(card) && desc.contains(" this ")) { /* a hack for Evolve and similar that don't have CARDNAME */ - return card + ": " + desc; + return card + ": " + desc; } else return desc; } @@ -476,34 +476,9 @@ public class WrappedAbility extends Ability { return; } - // Check timestamps of triggered objects - final List original = Lists.newArrayList(sa.getTriggerRemembered()); - for (Object o : original) { - if (o instanceof Card) { - Card card = (Card) o; - Card current = game.getCardState(card); - if (current.getTimestamp() != card.getTimestamp()) { - // TODO: figure out if NoTimestampCheck should be the default for ChangesZone triggers - if (!triggerParams.containsKey("NoTimestampCheck")) { - sa.getTriggerRemembered().remove(o); - } - } - } + if (!triggerParams.containsKey("NoTimestampCheck")) { + timestampCheck(); } - final Map triggerMap = new HashMap(sa.getTriggeringObjects()); - for (Entry ev : triggerMap.entrySet()) { - if (ev.getValue() instanceof Card) { - Card card = (Card) ev.getValue(); - Card current = game.getCardState(card); - if (card.isInPlay() && current.isInPlay() && current.getTimestamp() != card.getTimestamp()) { - // TODO: figure out if NoTimestampCheck should be the default for ChangesZone triggers - if (!triggerParams.containsKey("NoTimestampCheck")) { - sa.getTriggeringObjects().remove(ev.getKey()); - } - } - } - } - // TODO: CardCollection getActivatingPlayer().getController().playSpellAbilityNoStack(sa, false); @@ -516,4 +491,50 @@ public class WrappedAbility extends Ability { th.registerDelayedTrigger(deltrig); } } -} + + /** + * TODO remove this function after the Effects are updated + */ + protected void timestampCheck() { + final Game game = sa.getActivatingPlayer().getGame(); + + if (ApiType.PutCounter.equals(sa.getApi()) + || ApiType.MoveCounter.equals(sa.getApi()) + || ApiType.MultiplyCounter.equals(sa.getApi()) + || ApiType.MoveCounter.equals(sa.getApi()) + || ApiType.RemoveCounter.equals(sa.getApi()) + || ApiType.AddOrRemoveCounter.equals(sa.getApi()) + || ApiType.MoveCounter.equals(sa.getApi()) + + // Token has no Defined it should not be timestamp problems + || ApiType.Token.equals(sa.getApi()) + ) { + return; + } + + // Check timestamps of triggered objects + final List original = Lists.newArrayList(sa.getTriggerRemembered()); + for (Object o : original) { + if (o instanceof Card) { + Card card = (Card) o; + Card current = game.getCardState(card); + if (current.getTimestamp() != card.getTimestamp()) { + // TODO: figure out if NoTimestampCheck should be the default for ChangesZone triggers + sa.getTriggerRemembered().remove(o); + } + } + } + final Map triggerMap = new HashMap(sa.getTriggeringObjects()); + for (Entry ev : triggerMap.entrySet()) { + if (ev.getValue() instanceof Card) { + Card card = (Card) ev.getValue(); + Card current = game.getCardState(card); + if (card.isInPlay() && current.isInPlay() && current.getTimestamp() != card.getTimestamp()) { + // TODO: figure out if NoTimestampCheck should be the default for ChangesZone triggers + sa.getTriggeringObjects().remove(ev.getKey()); + } + } + } + // TODO: CardCollection + } +} \ No newline at end of file diff --git a/forge-game/src/main/java/forge/game/zone/PlayerZone.java b/forge-game/src/main/java/forge/game/zone/PlayerZone.java index cf7d6c5ea1c..0e9b48143b1 100644 --- a/forge-game/src/main/java/forge/game/zone/PlayerZone.java +++ b/forge-game/src/main/java/forge/game/zone/PlayerZone.java @@ -22,6 +22,7 @@ import com.google.common.collect.Iterables; import forge.game.card.Card; import forge.game.card.CardCollectionView; import forge.game.card.CardLists; +import forge.game.keyword.Keyword; import forge.game.player.Player; import forge.game.spellability.SpellAbility; import forge.util.Lang; @@ -75,7 +76,7 @@ public class PlayerZone extends Zone { } if (sa.isSpell() - && (c.hasStartOfKeyword("Flashback") && PlayerZone.this.is(ZoneType.Graveyard)) + && (c.hasKeyword(Keyword.FLASHBACK) && PlayerZone.this.is(ZoneType.Graveyard)) && restrictZone.equals(ZoneType.Hand)) { return true; } diff --git a/forge-gui-android/pom.xml b/forge-gui-android/pom.xml index 55e0d9a37bc..1ad4f1c6e54 100644 --- a/forge-gui-android/pom.xml +++ b/forge-gui-android/pom.xml @@ -6,7 +6,7 @@ jar -Xms128m -Xmx1024m - 1.6.10.001 + 1.6.15.003 keystore alias storepass @@ -19,7 +19,7 @@ forge forge - 1.6.11-SNAPSHOT + 1.6.16-SNAPSHOT forge-gui-android @@ -36,13 +36,35 @@ 1.8 + + org.apache.maven.plugins + maven-checkstyle-plugin + 3.0.0 + + + checkstyle-validation + validate + + ../checkstyle.xml + true + UTF-8 + true + true + true + + + check + + + + - - - filters - true - - + + + filters + true + + forge-android-${alpha-version} @@ -283,6 +305,7 @@ + diff --git a/forge-gui-android/proguard.cfg b/forge-gui-android/proguard.cfg index c72ce7ede22..e6a1ef032c5 100644 --- a/forge-gui-android/proguard.cfg +++ b/forge-gui-android/proguard.cfg @@ -25,13 +25,15 @@ -dontwarn java.awt.** -dontwarn java.util.** -dontwarn java.lang.** - +-dontwarn org.slf4j.** +-dontwarn javax.** -keep class forge.** { *; } -keep class com.thoughtworks.xstream.** { *; } -keep class org.apache.commons.lang3.** { *; } -keep class com.google.guava.** { *; } -keep class com.google.common.** { *; } +-keep class io.sentry.event.Event { *; } -keepclassmembers class com.badlogic.gdx.backends.android.AndroidInput* { (com.badlogic.gdx.Application, android.content.Context, java.lang.Object, com.badlogic.gdx.backends.android.AndroidApplicationConfiguration); @@ -81,3 +83,8 @@ -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } + +-keepattributes LineNumberTable,SourceFile + +# https://stackoverflow.com/a/32615580 +-optimizations !class/unboxing/enum \ No newline at end of file diff --git a/forge-gui-desktop/.classpath b/forge-gui-desktop/.classpath index f7bf6c0c0ab..0be04346393 100644 --- a/forge-gui-desktop/.classpath +++ b/forge-gui-desktop/.classpath @@ -1,9 +1,21 @@ - + + + + + - + + + + + + + + + diff --git a/forge-gui-desktop/.project b/forge-gui-desktop/.project index e33a537ce7b..fbe08c4028d 100644 --- a/forge-gui-desktop/.project +++ b/forge-gui-desktop/.project @@ -3,6 +3,9 @@ forge-gui-desktop + forge-core + forge-game + forge-gui diff --git a/forge-gui-desktop/pom.xml b/forge-gui-desktop/pom.xml index fa6786cac2b..4b3fd81e123 100644 --- a/forge-gui-desktop/pom.xml +++ b/forge-gui-desktop/pom.xml @@ -4,7 +4,7 @@ forge forge - 1.6.11-SNAPSHOT + 1.6.16-SNAPSHOT forge-gui-desktop @@ -153,6 +153,28 @@ + + org.apache.maven.plugins + maven-checkstyle-plugin + 3.0.0 + + + checkstyle-validation + validate + + ../checkstyle.xml + true + UTF-8 + true + true + true + + + check + + + + @@ -190,7 +212,7 @@ com.google.guava guava - 24.1-jre + 24.1-android com.thoughtworks.xstream @@ -319,6 +341,7 @@ + @@ -464,6 +487,7 @@ + @@ -578,6 +602,7 @@ + @@ -688,6 +713,7 @@ + diff --git a/forge-gui-desktop/sentry.properties b/forge-gui-desktop/sentry.properties new file mode 100644 index 00000000000..2d575965e3b --- /dev/null +++ b/forge-gui-desktop/sentry.properties @@ -0,0 +1,14 @@ +# ideally this should be using HTTPS, but this is fine for now +dsn=http://87bc8d329e49441895502737c069067b@sentry.cardforge.org:9000/3 +stacktrace.app.packages=forge + +# where to store events if offline or can't reach the above server +buffer.dir=sentry-events +buffer.size=100 + +# allow ample time for graceful shutdown +buffer.shutdowntimeout=5000 +async.shutdowntimeout=5000 + +# allow longer messages +maxmessagelength=1500 \ No newline at end of file diff --git a/forge-gui-desktop/src/main/java/forge/ImageCache.java b/forge-gui-desktop/src/main/java/forge/ImageCache.java index 6553763bd28..b45c73c2d02 100644 --- a/forge-gui-desktop/src/main/java/forge/ImageCache.java +++ b/forge-gui-desktop/src/main/java/forge/ImageCache.java @@ -17,6 +17,8 @@ */ package forge; +import java.awt.*; +import java.awt.geom.RoundRectangle2D; import java.awt.image.BufferedImage; import java.io.File; import java.util.HashSet; @@ -25,6 +27,7 @@ import java.util.concurrent.ExecutionException; import javax.imageio.ImageIO; +import forge.properties.ForgePreferences; import org.apache.commons.lang3.StringUtils; import com.google.common.cache.CacheBuilder; @@ -146,6 +149,40 @@ public class ImageCache { // Load from file and add to cache if not found in cache initially. BufferedImage original = getImage(imageKey); + // If the user has indicated that they prefer Forge NOT render a black border, round the image corners + // to account for JPEG images that don't have a transparency. + boolean noBorder = !isPreferenceEnabled(ForgePreferences.FPref.UI_RENDER_BLACK_BORDERS); + if (original != null && noBorder) { + + // use a quadratic equation to calculate the needed radius from an image dimension + int radius; + float width = original.getWidth(); + String setCode = imageKey.split("/")[0].trim().toUpperCase(); + if (setCode.equals("A")) { // Alpha + // radius = 100; // 745 x 1040 + // radius = 68; // 488 x 680 + // radius = 25; // 146 x 204 + radius = (int)(-107.0 *(width * width) / 52648506.0 + 743043.0 * width / 5849834.0 + 171067480.0 / 26324253.0); + } else if (setCode.equals("ME2") || // Masters Edition II + setCode.equals("ME3") || // Masters Edition III + setCode.equals("ME4") || // Masters Edition IV + setCode.equals("TD0") || // Commander Theme Decks + setCode.equals("TD1") // Magic Online Deck Series + ) { + // radius = 77; // 745 x 1040 + // radius = 52; // 488 x 680 + // radius = 19; // 146 x 204 + radius = (int)(23.0 * (width * width) / 17549502.0 + 559597.0 * width /5849834.0 + 43923392.0 / 8774751.0); + } else { + // radius = 65; // 745 x 1040 + // radius = 45; // 488 x 680 + // radius = 15; // 146 x 204 + radius = (int)(-145.0 * (width * width) / 8774751.0 + 287215.0 * width / 2924917.0 + 8911915.0 / 8774751.0); + } + //System.out.println(setCode + " - " + original.getWidth() + " - " + radius); + original = makeRoundedCorner(original, radius); + } + // No image file exists for the given key so optionally associate with // a default "not available" image, however do not add it to the cache, // as otherwise it's problematic to update if the real image gets fetched. @@ -229,4 +266,32 @@ public class ImageCache { return null; } } + + private static boolean isPreferenceEnabled(final ForgePreferences.FPref preferenceName) { + return FModel.getPreferences().getPrefBoolean(preferenceName); + } + + public static BufferedImage makeRoundedCorner(BufferedImage image, int cornerRadius) { + int w = image.getWidth(); + int h = image.getHeight(); + BufferedImage output = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); + + Graphics2D g2 = output.createGraphics(); + + // so instead fake soft-clipping by first drawing the desired clip shape + // in fully opaque black with antialiasing enabled... + g2.setComposite(AlphaComposite.Src); + g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + g2.setColor(Color.BLACK); + g2.fill(new RoundRectangle2D.Float(0, 0, w, h, cornerRadius, cornerRadius)); + + // ... then compositing the image on top, + // using the black shape from above as alpha source + g2.setComposite(AlphaComposite.SrcAtop); + g2.drawImage(image, 0, 0, null); + + g2.dispose(); + + return output; + } } diff --git a/forge-gui-desktop/src/main/java/forge/ImageFetcher.java b/forge-gui-desktop/src/main/java/forge/ImageFetcher.java index 09b6b2141cb..6b0d878b721 100644 --- a/forge-gui-desktop/src/main/java/forge/ImageFetcher.java +++ b/forge-gui-desktop/src/main/java/forge/ImageFetcher.java @@ -75,10 +75,10 @@ public class ImageFetcher { } } final String filename = imageKey.substring(2) + ".jpg"; - final String tokenUrl = tokenImages.get(filename); + String tokenUrl = tokenImages.get(filename); if (tokenUrl == null) { - System.err.println("Token " + imageKey + " not found in: " + ForgeConstants.IMAGE_LIST_TOKENS_FILE); - return; + System.err.println("No specified file.. Attempting to download from default Url"); + tokenUrl = String.format("%s%s", ForgeConstants.URL_TOKEN_DOWNLOAD, filename); } destFile = new File(ForgeConstants.CACHE_TOKEN_PICS_DIR, filename); downloadUrls.add(tokenUrl); diff --git a/forge-gui-desktop/src/main/java/forge/control/FControl.java b/forge-gui-desktop/src/main/java/forge/control/FControl.java index 3941abe5e80..d603c960e6c 100644 --- a/forge-gui-desktop/src/main/java/forge/control/FControl.java +++ b/forge-gui-desktop/src/main/java/forge/control/FControl.java @@ -28,6 +28,7 @@ import java.awt.event.KeyEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File; +import java.io.IOException; import java.util.Collections; import java.util.List; @@ -230,7 +231,12 @@ public enum FControl implements KeyEventDispatcher { final String questname = FModel.getQuestPreferences().getPref(QPref.CURRENT_QUEST); final File data = new File(dirQuests.getPath(), questname); if (data.exists()) { - FModel.getQuest().load(QuestDataIO.loadData(data)); + try { + FModel.getQuest().load(QuestDataIO.loadData(data)); + } catch(IOException ex) { + ex.printStackTrace(); + System.out.println(String.format("Error loading quest data (%s).. skipping for now..", questname)); + } } // Handles resizing in null layouts of layers in JLayeredPane as well as saving window layout diff --git a/forge-gui-desktop/src/main/java/forge/deckchooser/FDeckChooser.java b/forge-gui-desktop/src/main/java/forge/deckchooser/FDeckChooser.java index eaf276bda6d..c6366e97052 100644 --- a/forge-gui-desktop/src/main/java/forge/deckchooser/FDeckChooser.java +++ b/forge-gui-desktop/src/main/java/forge/deckchooser/FDeckChooser.java @@ -164,7 +164,7 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener { private void updateMatrix(GameFormat format) { lstDecks.setAllowMultipleSelections(false); - lstDecks.setPool(CardThemedDeckGenerator.getMatrixDecks(format, isAi)); + lstDecks.setPool(ArchetypeDeckGenerator.getMatrixDecks(format, isAi)); lstDecks.setup(ItemManagerConfig.STRING_ONLY); btnRandom.setText("Random"); @@ -377,6 +377,16 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener { updateMatrix(FModel.getFormats().getModern()); } break; + case LEGACY_CARDGEN_DECK: + if(FModel.isdeckGenMatrixLoaded()) { + updateMatrix(FModel.getFormats().get("Legacy")); + } + break; + case VINTAGE_CARDGEN_DECK: + if(FModel.isdeckGenMatrixLoaded()) { + updateMatrix(FModel.getFormats().get("Vintage")); + } + break; case RANDOM_COMMANDER_DECK: updateRandomCommander(); break; diff --git a/forge-gui-desktop/src/main/java/forge/error/BugReportDialog.java b/forge-gui-desktop/src/main/java/forge/error/BugReportDialog.java index 3127252e22b..3b9eaa6d65d 100644 --- a/forge-gui-desktop/src/main/java/forge/error/BugReportDialog.java +++ b/forge-gui-desktop/src/main/java/forge/error/BugReportDialog.java @@ -28,17 +28,19 @@ import java.util.List; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.JButton; +import javax.swing.JCheckBox; import javax.swing.JDialog; +import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.KeyStroke; +import forge.model.FModel; +import forge.properties.ForgePreferences; import net.miginfocom.swing.MigLayout; import forge.gui.WrapLayout; -import forge.toolbox.FHyperlink; -import forge.toolbox.FLabel; /** * The class BugReportDialog. Enables showing and saving error messages that @@ -59,22 +61,19 @@ public class BugReportDialog { area.setWrapStyleWord(true); JPanel helpPanel = new JPanel(new WrapLayout(FlowLayout.LEFT, 4, 2)); - for (String word : BugReporter.HELP_URL_LABEL.split(" ")) { - helpPanel.add(new FLabel.Builder().text("" + word + "").useSkinColors(false).build()); - } - helpPanel.add(new FHyperlink.Builder().url(BugReporter.HELP_URL).text("this post").useSkinColors(false).build()); - JPanel p = new JPanel(new MigLayout("wrap")); - p.add(new FLabel.Builder().text(BugReporter.HELP_TEXT).useSkinColors(false).build(), "gap 5"); p.add(helpPanel, "w 600"); p.add(new JScrollPane(area), "w 100%, h 100%, gaptop 5"); // Button is not modified, String gets the automatic listener to hide // the dialog List options = new ArrayList(); - options.add(new JButton(new _CopyAndGo(area))); + options.add(new JButton(new _Report())); + // option to enable automatic Sentry submission + options.add(new JCheckBox(new _ActivateSentry())); + options.add(new JLabel(BugReporter.SENTRY)); options.add(new JButton(new _SaveAction(area))); - options.add(BugReporter.CONTINUE); + options.add(BugReporter.DISCARD); if (showExitAppBtn) { options.add(new JButton(new _ExitAction())); } @@ -91,18 +90,29 @@ public class BugReportDialog { } @SuppressWarnings("serial") - private static class _CopyAndGo extends AbstractAction { - private final JTextArea text; + private static class _ActivateSentry extends AbstractAction { - public _CopyAndGo(JTextArea text) { + @Override + public void actionPerformed(final ActionEvent actionEvent) { + JCheckBox checkBox = (JCheckBox)actionEvent.getSource(); + // enable Sentry use in the future through preference setting + FModel.getPreferences().setPref(ForgePreferences.FPref.USE_SENTRY, checkBox.isSelected()); + FModel.getPreferences().save(); + } + } + + @SuppressWarnings("serial") + private static class _Report extends AbstractAction { + + public _Report() { super(BugReporter.REPORT); this.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_R, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); - this.text = text; } @Override public void actionPerformed(final ActionEvent e) { - BugReporter.copyAndGoToForums(text.getText()); + BugReporter.sendSentry(); + JOptionPane.getRootFrame().dispose(); } } diff --git a/forge-gui-desktop/src/main/java/forge/gui/GuiChoose.java b/forge-gui-desktop/src/main/java/forge/gui/GuiChoose.java index 5a4757b92a7..ea177273bda 100644 --- a/forge-gui-desktop/src/main/java/forge/gui/GuiChoose.java +++ b/forge-gui-desktop/src/main/java/forge/gui/GuiChoose.java @@ -13,6 +13,8 @@ import javax.swing.WindowConstants; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; +import forge.card.CardStateName; +import forge.game.card.CardFaceView; import org.apache.commons.lang3.StringUtils; import com.google.common.base.Function; @@ -159,13 +161,34 @@ public class GuiChoose { if (sel instanceof InventoryItem) { matchUI.setCard((InventoryItem) list.getSelectedValue()); return; - } else if (sel instanceof ICardFace) { - final ICardFace face = (ICardFace)sel; - PaperCard paper = FModel.getMagicDb().getCommonCards().getUniqueByName(face.getName()); - if (paper == null) { - paper = FModel.getMagicDb().getVariantCards().getUniqueByName(face.getName()); + } else if (sel instanceof ICardFace || sel instanceof CardFaceView) { + String faceName; + if (sel instanceof ICardFace) { + faceName = ((ICardFace) sel).getName(); + } else { + faceName = ((CardFaceView) sel).getName(); } - matchUI.setCard(paper); + PaperCard paper = FModel.getMagicDb().getCommonCards().getUniqueByName(faceName); + if (paper == null) { + paper = FModel.getMagicDb().getVariantCards().getUniqueByName(faceName); + } + + if (paper != null) { + Card c = Card.getCardForUi(paper); + boolean foundState = false; + for (CardStateName cs : c.getStates()) { + if (c.getState(cs).getName().equals(faceName)) { + foundState = true; + c.setState(cs, true); + matchUI.setCard(c.getView()); + break; + } + } + if (!foundState) { + matchUI.setCard(paper); + } + } + return; } diff --git a/forge-gui-desktop/src/main/java/forge/gui/framework/EDocID.java b/forge-gui-desktop/src/main/java/forge/gui/framework/EDocID.java index 4bdfa8c1b6c..e119267e83c 100644 --- a/forge-gui-desktop/src/main/java/forge/gui/framework/EDocID.java +++ b/forge-gui-desktop/src/main/java/forge/gui/framework/EDocID.java @@ -6,11 +6,14 @@ package forge.gui.framework; import com.google.common.collect.ObjectArrays; import forge.screens.deckeditor.views.VAllDecks; +import forge.screens.deckeditor.views.VBrawlDecks; import forge.screens.deckeditor.views.VCardCatalog; +import forge.screens.deckeditor.views.VCommanderDecks; import forge.screens.deckeditor.views.VCurrentDeck; import forge.screens.deckeditor.views.VDeckgen; import forge.screens.deckeditor.views.VProbabilities; import forge.screens.deckeditor.views.VStatistics; +import forge.screens.deckeditor.views.VTinyLeadersDecks; import forge.screens.home.gauntlet.VSubmenuGauntletBuild; import forge.screens.home.gauntlet.VSubmenuGauntletContests; import forge.screens.home.gauntlet.VSubmenuGauntletLoad; @@ -54,7 +57,10 @@ public enum EDocID { EDITOR_CATALOG (VCardCatalog.SINGLETON_INSTANCE), EDITOR_CURRENTDECK (VCurrentDeck.SINGLETON_INSTANCE), EDITOR_DECKGEN (VDeckgen.SINGLETON_INSTANCE), - + EDITOR_COMMANDER (VCommanderDecks.SINGLETON_INSTANCE), + EDITOR_BRAWL (VBrawlDecks.SINGLETON_INSTANCE), + EDITOR_TINY_LEADERS (VTinyLeadersDecks.SINGLETON_INSTANCE), + WORKSHOP_CATALOG (VWorkshopCatalog.SINGLETON_INSTANCE), WORKSHOP_CARDDESIGNER (VCardDesigner.SINGLETON_INSTANCE), WORKSHOP_CARDSCRIPT (VCardScript.SINGLETON_INSTANCE), diff --git a/forge-gui-desktop/src/main/java/forge/gui/framework/SLayoutIO.java b/forge-gui-desktop/src/main/java/forge/gui/framework/SLayoutIO.java index 14e039765a1..b19618578d8 100644 --- a/forge-gui-desktop/src/main/java/forge/gui/framework/SLayoutIO.java +++ b/forge-gui-desktop/src/main/java/forge/gui/framework/SLayoutIO.java @@ -36,6 +36,7 @@ import forge.toolbox.SaveOpenDialog; import forge.toolbox.SaveOpenDialog.Filetypes; import forge.util.CollectionSuppliers; import forge.util.ThreadUtil; +import forge.util.gui.SOptionPane; import forge.util.maps.HashMapOfLists; import forge.util.maps.MapOfLists; import forge.view.FFrame; @@ -307,6 +308,8 @@ public final class SLayoutIO { FileOutputStream fos = null; XMLEventWriter writer = null; try { + String layoutSerial = getLayoutSerial(file.defaultLoc); + fos = new FileOutputStream(fWriteTo); writer = out.createXMLEventWriter(fos); final List cells = FView.SINGLETON_INSTANCE.getDragCells(); @@ -314,6 +317,7 @@ public final class SLayoutIO { writer.add(EF.createStartDocument()); writer.add(NEWLINE); writer.add(EF.createStartElement("", "", "layout")); + writer.add(EF.createAttribute("serial", layoutSerial)); writer.add(NEWLINE); for (final DragCell cell : cells) { @@ -356,8 +360,63 @@ public final class SLayoutIO { } } + private static String getLayoutSerial(String layoutFileName) { + final XMLInputFactory inputFactory = XMLInputFactory.newInstance(); + FileInputStream fis = null; + XMLEventReader reader = null; + XMLEvent event; + StartElement element; + Iterator attributes; + Attribute attribute; + + try { + fis = new FileInputStream(layoutFileName); + + reader = inputFactory.createXMLEventReader(fis); + while (null != reader && reader.hasNext()) { + event = reader.nextEvent(); + + if (event.isStartElement()) { + element = event.asStartElement(); + + if (element.getName().getLocalPart().equals("layout")) { + attributes = element.getAttributes(); + while (attributes.hasNext()) { + attribute = (Attribute) attributes.next(); + String atrName = attribute.getName().toString(); + if (atrName.equals("serial")) { + return attribute.getValue(); + } + } + } + } + } + } catch (final Exception e) { // I don't care what happened inside, the layout is wrong + e.printStackTrace(); + } + finally { + try { + if (reader != null) { + reader.close(); + } + if (fis != null) { + fis.close(); + } + } + catch (Exception e) { + e.printStackTrace(); + } + } + + return ""; + } + public static void loadLayout(final File f) { final FView view = FView.SINGLETON_INSTANCE; + String defaultLayoutSerial = ""; + String userLayoutSerial = ""; + Boolean resetLayout = false; + FScreen screen = Singletons.getControl().getCurrentScreen(); FAbsolutePositioner.SINGLETON_INSTANCE.hideAll(); view.getPnlInsets().removeAll(); view.getPnlInsets().setLayout(new BorderLayout()); @@ -365,13 +424,13 @@ public final class SLayoutIO { view.getPnlInsets().setBorder(new EmptyBorder(SLayoutConstants.BORDER_T, SLayoutConstants.BORDER_T, 0, 0)); view.removeAllDragCells(); - FileLocation file = Singletons.getControl().getCurrentScreen().getLayoutFile(); + FileLocation file = screen.getLayoutFile(); if (file != null) { // Read a model for new layout MapOfLists model = null; boolean usedCustomPrefsFile = false; FileInputStream fis = null; - + try { if (f != null && f.exists()) { fis = new FileInputStream(f); @@ -379,8 +438,27 @@ public final class SLayoutIO { else { File userSetting = new File(file.userPrefLoc); if (userSetting.exists()) { - usedCustomPrefsFile = true; - fis = new FileInputStream(userSetting); + defaultLayoutSerial = getLayoutSerial(file.defaultLoc); + userLayoutSerial = getLayoutSerial(file.userPrefLoc); + if (defaultLayoutSerial.compareTo(userLayoutSerial) > 0) { + // prompt the user that their saved layout is older + resetLayout = SOptionPane.showConfirmDialog( + String.format("Your %s layout file is from an older template.", + screen.getTabCaption() + ), + "Reset Layout?", + "Reset", + "Keep"); + } + if (resetLayout) { + // delete the old layout file + screen.deleteLayoutFile(); + fis = new FileInputStream(file.defaultLoc); + } else { + fis = new FileInputStream(userSetting); + usedCustomPrefsFile = true; + } + } else { fis = new FileInputStream(file.defaultLoc); @@ -390,7 +468,7 @@ public final class SLayoutIO { final XMLInputFactory inputFactory = XMLInputFactory.newInstance(); XMLEventReader xer = null; try { - xer = inputFactory.createXMLEventReader(fis); + xer = inputFactory.createXMLEventReader(fis); model = readLayout(xer); } catch (final Exception e) { // I don't care what happened inside, the layout is wrong try { @@ -407,19 +485,19 @@ public final class SLayoutIO { throw new RuntimeException(e); } } - + } catch (FileNotFoundException e) { throw new RuntimeException(e); } finally { - if (fis != null) { - try { + try { + if (fis != null) { fis.close(); } - catch (IOException e) { + } + catch (IOException e) { e.printStackTrace(); - } } } @@ -432,7 +510,9 @@ public final class SLayoutIO { for(EDocID edoc : kv.getValue()) { try { //System.out.println(String.format("adding doc %s -> %s", edoc, edoc.getDoc())); - cell.addDoc(edoc.getDoc()); + if (edoc.getDoc() != null ) { + cell.addDoc(edoc.getDoc()); + } } catch (IllegalArgumentException e) { System.err.println("Failed to get doc for " + edoc); diff --git a/forge-gui-desktop/src/main/java/forge/itemmanager/CardManager.java b/forge-gui-desktop/src/main/java/forge/itemmanager/CardManager.java index 8fe9f7f912e..aac030a4515 100644 --- a/forge-gui-desktop/src/main/java/forge/itemmanager/CardManager.java +++ b/forge-gui-desktop/src/main/java/forge/itemmanager/CardManager.java @@ -12,8 +12,6 @@ import forge.screens.home.quest.DialogChooseSets; import forge.screens.match.controllers.CDetailPicture; import javax.swing.*; -import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map.Entry; diff --git a/forge-gui-desktop/src/main/java/forge/itemmanager/DeckManager.java b/forge-gui-desktop/src/main/java/forge/itemmanager/DeckManager.java index fec8122965f..9843f97c683 100644 --- a/forge-gui-desktop/src/main/java/forge/itemmanager/DeckManager.java +++ b/forge-gui-desktop/src/main/java/forge/itemmanager/DeckManager.java @@ -12,6 +12,8 @@ import javax.swing.JTable; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; +import forge.deck.Deck; +import forge.screens.deckeditor.controllers.CEditorConstructed; import forge.screens.home.quest.DialogChooseFormats; import org.apache.commons.lang3.StringUtils; @@ -267,48 +269,69 @@ public final class DeckManager extends ItemManager implements IHasGam }); } - private void editDeck(final DeckProxy deck) { - if (deck == null) { return; } - + public void editDeck(final DeckProxy deck) { ACEditorBase editorCtrl = null; FScreen screen = null; switch (this.gameType) { - case Quest: - screen = FScreen.DECK_EDITOR_QUEST; - editorCtrl = new CEditorQuest(FModel.getQuest(), getCDetailPicture()); - break; - case Constructed: - screen = FScreen.DECK_EDITOR_CONSTRUCTED; - DeckPreferences.setCurrentDeck(deck.toString()); - //re-use constructed controller - break; - case Sealed: - screen = FScreen.DECK_EDITOR_SEALED; - editorCtrl = new CEditorLimited(FModel.getDecks().getSealed(), screen, getCDetailPicture()); - break; - case Draft: - screen = FScreen.DECK_EDITOR_DRAFT; - editorCtrl = new CEditorLimited(FModel.getDecks().getDraft(), screen, getCDetailPicture()); - break; - case Winston: - screen = FScreen.DECK_EDITOR_DRAFT; - editorCtrl = new CEditorLimited(FModel.getDecks().getWinston(), screen, getCDetailPicture()); - break; + case Quest: + screen = FScreen.DECK_EDITOR_QUEST; + editorCtrl = new CEditorQuest(FModel.getQuest(), getCDetailPicture()); + break; + case Constructed: + screen = FScreen.DECK_EDITOR_CONSTRUCTED; + DeckPreferences.setCurrentDeck((deck != null) ? deck.toString() : ""); + editorCtrl = new CEditorConstructed(getCDetailPicture(), this.gameType); + break; + case Commander: + screen = FScreen.DECK_EDITOR_CONSTRUCTED; // re-use "Deck Editor", rather than creating a new top level tab + DeckPreferences.setCommanderDeck((deck != null) ? deck.toString() : ""); + editorCtrl = new CEditorConstructed(getCDetailPicture(), this.gameType); + break; + case Brawl: + screen = FScreen.DECK_EDITOR_CONSTRUCTED; // re-use "Deck Editor", rather than creating a new top level tab + DeckPreferences.setBrawlDeck((deck != null) ? deck.toString() : ""); + editorCtrl = new CEditorConstructed(getCDetailPicture(), this.gameType); + break; + case TinyLeaders: + screen = FScreen.DECK_EDITOR_CONSTRUCTED; // re-use "Deck Editor", rather than creating a new top level tab + DeckPreferences.setTinyLeadersDeck((deck != null) ? deck.toString() : ""); + editorCtrl = new CEditorConstructed(getCDetailPicture(), this.gameType); + break; + case Sealed: + screen = FScreen.DECK_EDITOR_SEALED; + editorCtrl = new CEditorLimited(FModel.getDecks().getSealed(), screen, getCDetailPicture()); + break; + case Draft: + screen = FScreen.DECK_EDITOR_DRAFT; + editorCtrl = new CEditorLimited(FModel.getDecks().getDraft(), screen, getCDetailPicture()); + break; + case Winston: + screen = FScreen.DECK_EDITOR_DRAFT; + editorCtrl = new CEditorLimited(FModel.getDecks().getWinston(), screen, getCDetailPicture()); + break; - default: - return; + default: + return; } - if (!Singletons.getControl().ensureScreenActive(screen)) { return; } + if (!Singletons.getControl().ensureScreenActive(screen)) { + return; + } if (editorCtrl != null) { CDeckEditorUI.SINGLETON_INSTANCE.setEditorController(editorCtrl); } - if (!SEditorIO.confirmSaveChanges(screen, true)) { return; } //ensure previous deck on screen is saved if needed + if (!SEditorIO.confirmSaveChanges(screen, true)) { + return; + } //ensure previous deck on screen is saved if needed - CDeckEditorUI.SINGLETON_INSTANCE.getCurrentEditorController().getDeckController().load(deck.getPath(), deck.getName()); + if (deck != null) { + CDeckEditorUI.SINGLETON_INSTANCE.getCurrentEditorController().getDeckController().load(deck.getPath(), deck.getName()); + } else { + CDeckEditorUI.SINGLETON_INSTANCE.getCurrentEditorController().getDeckController().loadDeck(new Deck()); + } } public boolean deleteDeck(final DeckProxy deck) { @@ -322,17 +345,20 @@ public final class DeckManager extends ItemManager implements IHasGam // consider using deck proxy's method to delete deck switch(this.gameType) { - case Constructed: - case Draft: - case Sealed: - deck.deleteFromStorage(); - break; - case Quest: - deck.deleteFromStorage(); - FModel.getQuest().save(); - break; - default: - throw new UnsupportedOperationException("Delete not implemented for game type = " + gameType.toString()); + case Brawl: + case Commander: + case TinyLeaders: + case Constructed: + case Draft: + case Sealed: + deck.deleteFromStorage(); + break; + case Quest: + deck.deleteFromStorage(); + FModel.getQuest().save(); + break; + default: + throw new UnsupportedOperationException("Delete not implemented for game type = " + gameType.toString()); } this.removeItem(deck, 1); diff --git a/forge-gui-desktop/src/main/java/forge/itemmanager/ItemManager.java b/forge-gui-desktop/src/main/java/forge/itemmanager/ItemManager.java index cd1da658c16..c0817e94e1c 100644 --- a/forge-gui-desktop/src/main/java/forge/itemmanager/ItemManager.java +++ b/forge-gui-desktop/src/main/java/forge/itemmanager/ItemManager.java @@ -30,12 +30,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; -import javax.swing.JMenu; -import javax.swing.JPanel; -import javax.swing.JPopupMenu; -import javax.swing.KeyStroke; -import javax.swing.SwingConstants; -import javax.swing.SwingUtilities; +import javax.swing.*; import javax.swing.event.ListSelectionListener; import javax.swing.event.PopupMenuEvent; import javax.swing.event.PopupMenuListener; @@ -58,6 +53,7 @@ import forge.itemmanager.views.ItemTableColumn; import forge.itemmanager.views.ItemView; import forge.screens.match.controllers.CDetailPicture; import forge.toolbox.ContextMenuBuilder; +import forge.toolbox.FComboBox; import forge.toolbox.FLabel; import forge.toolbox.FSkin; import forge.toolbox.FSkin.Colors; @@ -115,13 +111,11 @@ public abstract class ItemManager extends JPanel implem .fontSize(12) .build(); - private final FLabel btnCycleSection = new FLabel.Builder() - .text("Change Section") - .tooltip("Toggle between editing the deck and the sideboard/planar/scheme/vanguard parts of this deck") - .icon(FSkin.getIcon(FSkinProp.ICO_EDIT)) - .iconScaleAuto(false).hoverable() + private final FLabel lblEmpty = new FLabel.Builder() + .text("") .fontSize(12) .build(); + private FComboBox cbxSection = new FComboBox(); private static final SkinIcon VIEW_OPTIONS_ICON = FSkin.getIcon(FSkinProp.ICO_SETTINGS).resize(20, 20); private final FLabel btnViewOptions = new FLabel.Builder() @@ -193,8 +187,9 @@ public abstract class ItemManager extends JPanel implem this.add(this.btnFilters); this.add(this.lblCaption); this.add(this.lblRatio); - btnCycleSection.setVisible(false); //hide by default - this.add(btnCycleSection); + this.add(this.lblEmpty); + this.cbxSection.setVisible(false); + this.add(this.cbxSection); for (final ItemView view : this.views) { this.add(view.getButton()); view.getButton().setSelected(view == this.currentView); @@ -381,30 +376,42 @@ public abstract class ItemManager extends JPanel implem helper.newLine(-3); helper.fillLine(this.pnlButtons, showButtonPanel ? buttonPanelHeight : 1); //just show border if no buttons } + // get the width for all components final int viewButtonWidth = FTextField.HEIGHT; - helper.newLine(); - helper.offset(1, 0); //align filters button with expand/collapse all button - helper.include(this.btnFilters, viewButtonWidth, FTextField.HEIGHT); - int captionWidth = this.lblCaption.getAutoSizeWidth(); - int btnCycleSectionWidth = this.btnCycleSection.isVisible() ? this.btnCycleSection.getAutoSizeWidth() : 0; final int ratioWidth = this.lblRatio.getAutoSizeWidth(); - final int viewButtonCount = this.views.size() + 1; - final int availableCaptionWidth = helper.getParentWidth() - viewButtonWidth * viewButtonCount - ratioWidth - btnCycleSectionWidth - 3 * helper.getX() - (viewButtonCount + 2) * helper.getGapX(); + int captionWidth = this.lblCaption.getAutoSizeWidth(); + final int cbxSectionWidth = this.cbxSection.isVisible() ? this.cbxSection.getAutoSizeWidth() : 0; + final int viewButtonCount = this.views.size() + 1; // +1 is for the options button + final int widthViewButtons = viewButtonCount * viewButtonWidth + helper.getGapX() * (viewButtonCount); + + // remove the space needed by all components that will be displayed + int availableCaptionWidth = helper.getParentWidth() + - viewButtonWidth // btnFilters + - cbxSectionWidth + - ratioWidth + - widthViewButtons; + if (captionWidth > availableCaptionWidth) { //truncate caption if not enough room for it this.lblCaption.setToolTipText(this.lblCaption.getText()); captionWidth = availableCaptionWidth; } else { this.lblCaption.setToolTipText(null); } + + helper.newLine(); + helper.offset(1, 0); //align filters button with expand/collapse all button + helper.include(this.btnFilters, viewButtonWidth, FTextField.HEIGHT); helper.include(this.lblCaption, captionWidth, FTextField.HEIGHT); - helper.fillLine(this.lblRatio, FTextField.HEIGHT, (viewButtonWidth + helper.getGapX()) * viewButtonCount - viewButtonCount + btnCycleSectionWidth + 2 * helper.getGapX() + 1); //leave room for view buttons and btnCycleSectionWidth - helper.include(this.btnCycleSection, btnCycleSectionWidth, FTextField.HEIGHT); + helper.include(this.cbxSection, cbxSectionWidth, FTextField.HEIGHT); helper.offset(helper.getGapX(), 0); + helper.include(this.lblRatio, ratioWidth, FTextField.HEIGHT); + helper.fillLine(this.lblEmpty, FTextField.HEIGHT, widthViewButtons); for (final ItemView view : this.views) { helper.include(view.getButton(), viewButtonWidth, FTextField.HEIGHT); helper.offset(-1, 0); } helper.include(this.btnViewOptions, viewButtonWidth, FTextField.HEIGHT); + helper.newLine(-1); if (this.currentView.getPnlOptions().isVisible()) { helper.fillLine(this.currentView.getPnlOptions(), FTextField.HEIGHT + 4); @@ -1092,8 +1099,8 @@ public abstract class ItemManager extends JPanel implem return this.pnlButtons; } - public FLabel getBtnCycleSection() { - return btnCycleSection; + public FComboBox getCbxSection() { + return this.cbxSection; } /** diff --git a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/CDeckEditorUI.java b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/CDeckEditorUI.java index a2808b8af7a..c7ba09ac71e 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/CDeckEditorUI.java +++ b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/CDeckEditorUI.java @@ -38,8 +38,11 @@ import forge.item.InventoryItem; import forge.itemmanager.ItemManager; import forge.screens.deckeditor.controllers.*; import forge.screens.deckeditor.views.VAllDecks; +import forge.screens.deckeditor.views.VBrawlDecks; import forge.screens.deckeditor.views.VCardCatalog; +import forge.screens.deckeditor.views.VCommanderDecks; import forge.screens.deckeditor.views.VCurrentDeck; +import forge.screens.deckeditor.views.VTinyLeadersDecks; import forge.screens.match.controllers.CDetailPicture; import forge.util.ItemPool; @@ -59,12 +62,21 @@ public enum CDeckEditorUI implements ICDoc { private ACEditorBase childController; private final CDetailPicture cDetailPicture; private final VAllDecks vAllDecks; + private final VCommanderDecks vCommanderDecks; + private final VBrawlDecks vBrawlDecks; + private final VTinyLeadersDecks vTinyLeadersDecks; private CDeckEditorUI() { screenChildControllers = new HashMap>(); this.cDetailPicture = new CDetailPicture(); this.vAllDecks = VAllDecks.SINGLETON_INSTANCE; this.vAllDecks.setCDetailPicture(cDetailPicture); + this.vCommanderDecks = VCommanderDecks.SINGLETON_INSTANCE; + this.vCommanderDecks.setCDetailPicture(cDetailPicture); + this.vBrawlDecks = VBrawlDecks.SINGLETON_INSTANCE; + this.vBrawlDecks.setCDetailPicture(cDetailPicture); + this.vTinyLeadersDecks = VTinyLeadersDecks.SINGLETON_INSTANCE; + this.vTinyLeadersDecks.setCDetailPicture(cDetailPicture); } public CDetailPicture getCDetailPicture() { @@ -303,7 +315,7 @@ public enum CDeckEditorUI implements ICDoc { final DeckProxy deck = vAllDecks.getLstDecks().stringToItem(currentDeckStr); if (deck != null) { vAllDecks.getLstDecks().setSelectedItem(deck); - childController.getDeckController().load(deck.getPath(), deck.getName()); + getCurrentEditorController().getDeckController().load(deck.getPath(), deck.getName()); } } } diff --git a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/DeckImport.java b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/DeckImport.java index bef0304d2f6..d82b0652b1c 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/DeckImport.java +++ b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/DeckImport.java @@ -20,20 +20,16 @@ package forge.screens.deckeditor; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowEvent; -import java.util.List; +import java.util.*; import javax.swing.BorderFactory; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; -import forge.deck.Deck; -import forge.deck.DeckBase; -import forge.deck.DeckImportController; -import forge.deck.DeckRecognizer; +import forge.deck.*; import forge.deck.DeckRecognizer.TokenType; import forge.item.InventoryItem; import forge.screens.deckeditor.controllers.ACEditorBase; -import forge.screens.deckeditor.controllers.DeckController; import forge.toolbox.FButton; import forge.toolbox.FCheckBox; import forge.toolbox.FComboBox; @@ -148,12 +144,7 @@ public class DeckImport ex final Deck deck = controller.accept(); if (deck == null) { return; } - DeckController controller = DeckImport.this.host.getDeckController(); - TModel model = controller.getModel(); - - model.importDeck(deck); - controller.setModel(model); - + DeckImport.this.host.getDeckController().loadDeck(deck); DeckImport.this.processWindowEvent(new WindowEvent(DeckImport.this, WindowEvent.WINDOW_CLOSING)); } }); @@ -173,6 +164,7 @@ public class DeckImport ex parseAndDisplay(); } }; + this.newEditionCheck.addActionListener(reparse); this.onlyCoreExpCheck.addActionListener(reparse); this.yearDropdown.addActionListener(reparse); diff --git a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/ACEditorBase.java b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/ACEditorBase.java index 8e54b6a07e3..f9287da68da 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/ACEditorBase.java +++ b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/ACEditorBase.java @@ -39,6 +39,7 @@ import forge.screens.deckeditor.views.VCardCatalog; import forge.screens.deckeditor.views.VCurrentDeck; import forge.screens.match.controllers.CDetailPicture; import forge.toolbox.ContextMenuBuilder; +import forge.toolbox.FComboBox; import forge.toolbox.FLabel; import forge.toolbox.FSkin; import forge.util.Aggregates; @@ -49,7 +50,6 @@ import javax.swing.*; import java.awt.*; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; -import java.util.Arrays; import java.util.List; import java.util.Map.Entry; @@ -186,14 +186,7 @@ public abstract class ACEditorBase controller = getDeckController(); - Deck deck = null; - if (controller != null) { - if (controller.getModel() instanceof Deck) { - deck = (Deck)controller.getModel(); // constructed deck - } else if (controller.getModel() instanceof DeckGroup) { - deck = ((DeckGroup)controller.getModel()).getHumanDeck(); // limited deck - } - } + Deck deck = getHumanDeck(); Iterable> cardsByName = null; if (deck != null) { @@ -248,6 +241,7 @@ public abstract class ACEditorBase> items, boolean toAlternate); protected abstract void buildAddContextMenu(EditorContextMenuBuilder cmb); + protected abstract void buildRemoveContextMenu(EditorContextMenuBuilder cmb); /** @@ -262,6 +256,10 @@ public abstract class ACEditorBase getDeckController(); + protected Deck getHumanDeck() { + return getDeckController().getModel().getHumanDeck(); + } + /** * Called when switching away from or closing the editor wants to exit. Should confirm save options. * @@ -392,7 +390,7 @@ public abstract class ACEditorBase
(C at beginning of class name denotes a control class.) + * + */ +public enum CBrawlDecks implements ICDoc { + SINGLETON_INSTANCE; + + private final VBrawlDecks view = VBrawlDecks.SINGLETON_INSTANCE; + + //========== Overridden methods + + @Override + public void register() { + } + + /* (non-Javadoc) + * @see forge.gui.framework.ICDoc#initialize() + */ + @Override + public void initialize() { + refresh(); + } + + public void refresh() { + view.getLstDecks().setPool(DeckProxy.getAllBrawlDecks()); + } + + /* (non-Javadoc) + * @see forge.gui.framework.ICDoc#update() + */ + @Override + public void update() { + view.getLstDecks().setup(ItemManagerConfig.CONSTRUCTED_DECKS); + } +} diff --git a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CCommanderDecks.java b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CCommanderDecks.java new file mode 100644 index 00000000000..6f0c22469ee --- /dev/null +++ b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CCommanderDecks.java @@ -0,0 +1,44 @@ +package forge.screens.deckeditor.controllers; + +import forge.deck.DeckProxy; +import forge.gui.framework.ICDoc; +import forge.itemmanager.ItemManagerConfig; +import forge.screens.deckeditor.views.VCommanderDecks; + +/** + * Controls the "Commander Decks" panel in the deck editor UI. + * + *

(C at beginning of class name denotes a control class.) + * + */ +public enum CCommanderDecks implements ICDoc { + SINGLETON_INSTANCE; + + private final VCommanderDecks view = VCommanderDecks.SINGLETON_INSTANCE; + + //========== Overridden methods + + @Override + public void register() { + } + + /* (non-Javadoc) + * @see forge.gui.framework.ICDoc#initialize() + */ + @Override + public void initialize() { + refresh(); + } + + public void refresh() { + view.getLstDecks().setPool(DeckProxy.getAllCommanderDecks()); + } + + /* (non-Javadoc) + * @see forge.gui.framework.ICDoc#update() + */ + @Override + public void update() { + view.getLstDecks().setup(ItemManagerConfig.CONSTRUCTED_DECKS); + } +} diff --git a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CCurrentDeck.java b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CCurrentDeck.java index 1326f8ce8f9..bf639cf9a5e 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CCurrentDeck.java +++ b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CCurrentDeck.java @@ -27,7 +27,6 @@ import forge.screens.deckeditor.views.VCurrentDeck; * Controls the "current deck" panel in the deck editor UI. * *

(C at beginning of class name denotes a control class.) - * */ public enum CCurrentDeck implements ICDoc { SINGLETON_INSTANCE; @@ -142,7 +141,7 @@ public enum CCurrentDeck implements ICDoc { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { - ((DeckController) CDeckEditorUI.SINGLETON_INSTANCE.getCurrentEditorController().getDeckController()).newModel(); + CDeckEditorUI.SINGLETON_INSTANCE.getCurrentEditorController().getDeckController().loadDeck(new Deck()); VCurrentDeck.SINGLETON_INSTANCE.getTxfTitle().requestFocusInWindow(); } }); @@ -161,9 +160,9 @@ public enum CCurrentDeck implements ICDoc { if (file != null) { try { - ((DeckController) CDeckEditorUI.SINGLETON_INSTANCE - .getCurrentEditorController().getDeckController()) - .setModel(DeckSerializer.fromFile(file)); + CDeckEditorUI.SINGLETON_INSTANCE + .getCurrentEditorController().getDeckController() + .loadDeck(DeckSerializer.fromFile(file)); } catch (final Exception ex) { //BugReporter.reportException(ex); @@ -193,8 +192,8 @@ public enum CCurrentDeck implements ICDoc { /** */ @SuppressWarnings("unchecked") private void exportDeck() { - final DeckController controller = (DeckController) - CDeckEditorUI.SINGLETON_INSTANCE.getCurrentEditorController().getDeckController(); + final DeckController controller = + CDeckEditorUI.SINGLETON_INSTANCE.getCurrentEditorController().getDeckController(); final File filename = this.getExportFilename(); if (filename == null) { @@ -204,11 +203,13 @@ public enum CCurrentDeck implements ICDoc { //create copy of deck to save under new name String name = filename.getName(); name = name.substring(0, name.lastIndexOf(".")); //remove extension - final Deck deck = (Deck)controller.getModel().copyTo(name); + Deck deck = (Deck) controller.getModel().getHumanDeck().copyTo(name); try { DeckSerializer.writeDeck(deck, filename); - controller.setModel(DeckSerializer.fromFile(filename)); //reload deck from file so everything is in sync + final Deck deserialized = DeckSerializer.fromFile(filename); + //reload deck from file so everything is in sync + CDeckEditorUI.SINGLETON_INSTANCE.getCurrentEditorController().getDeckController().loadDeck(deserialized); } catch (final Exception ex) { //BugReporter.reportException(ex); throw new RuntimeException("Error exporting deck." + ex); diff --git a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CDeckEditor.java b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CDeckEditor.java new file mode 100644 index 00000000000..60cc606fb33 --- /dev/null +++ b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CDeckEditor.java @@ -0,0 +1,52 @@ +package forge.screens.deckeditor.controllers; + +import forge.deck.*; +import forge.gui.framework.FScreen; +import forge.item.PaperCard; +import forge.screens.match.controllers.CDetailPicture; + +import java.util.*; + +public abstract class CDeckEditor extends ACEditorBase { + + protected CDeckEditor(FScreen screen0, CDetailPicture cDetailPicture) { + super(screen0, cDetailPicture); + } + + /** + * While user edits the deck, the catalog content changes. + * In order to keep deck loading logic simple we need an initial card pool state to pick cards from. + * + * The method should only be used when the catalog is non infinite. + */ + protected CardPool getInitialCatalog() { + if (getCatalogManager().isInfinite()) { + throw new UnsupportedOperationException("Currently used catalog is infinite"); + } + + CardPool result = new CardPool(); + result.addAll(getCatalogManager().getPool()); + + for (DeckSection section: EnumSet.allOf(DeckSection.class)) { + if (isSectionPickableFromCatalog(section)) { + result.addAll(getHumanDeck().getOrCreate(section)); + } + } + + return result; + } + + protected Boolean isSectionImportable(DeckSection section) { + return section == DeckSection.Main; + } + + /** + * Can user pick a card from the catalog into specific section + * + * The returned value is only used when the catalog is non infinite. + * When it is infinite, the implementation may safely return null. + */ + protected Boolean isSectionPickableFromCatalog(DeckSection section) { + return isSectionImportable(section); + } +} diff --git a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorCommander.java b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorCommander.java index 5c2020eef3c..63d1b81b477 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorCommander.java +++ b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorCommander.java @@ -35,8 +35,11 @@ import forge.screens.deckeditor.SEditorIO; import forge.screens.deckeditor.views.VAllDecks; import forge.screens.deckeditor.views.VDeckgen; import forge.screens.match.controllers.CDetailPicture; +import forge.toolbox.FComboBox; import forge.util.ItemPool; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; import java.util.Map.Entry; @@ -51,7 +54,7 @@ import java.util.Map.Entry; * @author Forge * @version $Id: CEditorCommander.java 18430 2012-11-27 22:42:36Z Hellfish $ */ -public final class CEditorCommander extends ACEditorBase { +public final class CEditorCommander extends CDeckEditor { private final DeckController controller; private DragCell allDecksParent = null; private DragCell deckGenParent = null; @@ -164,6 +167,11 @@ public final class CEditorCommander extends ACEditorBase { this.getDeckManager().setPool(this.controller.getModel().getOrCreate(DeckSection.Main)); } + @Override + protected Boolean isSectionImportable(DeckSection section) { + return allSections.contains(section); + } + /* * (non-Javadoc) * @@ -186,15 +194,20 @@ public final class CEditorCommander extends ACEditorBase { this.getBtnRemove4().setVisible(false); this.getBtnAdd4().setVisible(false); - this.getBtnCycleSection().setVisible(true); - this.getBtnCycleSection().setCommand(new UiCommand() { - private static final long serialVersionUID = -9082606944024479599L; + this.getCbxSection().removeAllItems(); + for (DeckSection section : allSections) { + this.getCbxSection().addItem(section); + } + this.getCbxSection().addActionListener(new ActionListener() { @Override - public void run() { - cycleEditorMode(); + public void actionPerformed(ActionEvent actionEvent) { + FComboBox cb = (FComboBox)actionEvent.getSource(); + DeckSection ds = (DeckSection)cb.getSelectedItem(); + setEditorMode(ds); } }); + this.getCbxSection().setVisible(true); deckGenParent = removeTab(VDeckgen.SINGLETON_INSTANCE); allDecksParent = removeTab(VAllDecks.SINGLETON_INSTANCE); @@ -227,11 +240,7 @@ public final class CEditorCommander extends ACEditorBase { /** * Switch between the main deck and the sideboard editor. */ - public void cycleEditorMode() { - int curindex = allSections.indexOf(sectionMode); - curindex = (curindex + 1) % allSections.size(); - sectionMode = allSections.get(curindex); - + public void setEditorMode(DeckSection sectionMode) { switch(sectionMode) { case Main: this.getCatalogManager().setup(ItemManagerConfig.CARD_CATALOG); @@ -252,6 +261,7 @@ public final class CEditorCommander extends ACEditorBase { break; } + this.sectionMode = sectionMode; this.controller.updateCaptions(); } } diff --git a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorConstructed.java b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorConstructed.java index 319cb3fc0b1..86e73560db7 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorConstructed.java +++ b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorConstructed.java @@ -17,13 +17,16 @@ */ package forge.screens.deckeditor.controllers; +import com.google.common.base.Predicate; import com.google.common.base.Predicates; import com.google.common.base.Supplier; import forge.UiCommand; +import forge.card.CardRules; import forge.card.CardRulesPredicates; import forge.deck.CardPool; import forge.deck.Deck; import forge.deck.DeckSection; +import forge.game.GameType; import forge.gui.framework.FScreen; import forge.item.PaperCard; import forge.itemmanager.CardManager; @@ -33,8 +36,11 @@ import forge.properties.ForgePreferences.FPref; import forge.screens.deckeditor.AddBasicLandsDialog; import forge.screens.deckeditor.SEditorIO; import forge.screens.match.controllers.CDetailPicture; +import forge.toolbox.FComboBox; import forge.util.ItemPool; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; import java.util.Map.Entry; @@ -49,10 +55,17 @@ import java.util.Map.Entry; * @author Forge * @version $Id: CEditorConstructed.java 24868 2014-02-17 05:08:05Z drdev $ */ -public final class CEditorConstructed extends ACEditorBase { - private final DeckController controller; +public final class CEditorConstructed extends CDeckEditor { + private DeckController controller; private final List allSections = new ArrayList(); - private final ItemPool normalPool, avatarPool, planePool, schemePool, conspiracyPool; + private ItemPool normalPool, avatarPool, planePool, schemePool, conspiracyPool, commanderPool; + + private final GameType gameType; + + Predicate commanderFilter; + + CardManager catalogManager; + CardManager deckManager; //=========== Constructor /** @@ -62,23 +75,56 @@ public final class CEditorConstructed extends ACEditorBase { */ @SuppressWarnings("serial") public CEditorConstructed(final CDetailPicture cDetailPicture) { + this(cDetailPicture, GameType.Constructed); + } + + public CEditorConstructed(final CDetailPicture cDetailPicture, final GameType gameType) { super(FScreen.DECK_EDITOR_CONSTRUCTED, cDetailPicture); + this.gameType = gameType; + + boolean wantUnique = false; allSections.add(DeckSection.Main); allSections.add(DeckSection.Sideboard); - allSections.add(DeckSection.Avatar); - allSections.add(DeckSection.Schemes); - allSections.add(DeckSection.Planes); - allSections.add(DeckSection.Conspiracy); - normalPool = ItemPool.createFrom(FModel.getMagicDb().getCommonCards().getAllCards(), PaperCard.class); - avatarPool = ItemPool.createFrom(FModel.getMagicDb().getVariantCards().getAllCards(Predicates.compose(CardRulesPredicates.Presets.IS_VANGUARD, PaperCard.FN_GET_RULES)), PaperCard.class); - planePool = ItemPool.createFrom(FModel.getMagicDb().getVariantCards().getAllCards(Predicates.compose(CardRulesPredicates.Presets.IS_PLANE_OR_PHENOMENON, PaperCard.FN_GET_RULES)), PaperCard.class); - schemePool = ItemPool.createFrom(FModel.getMagicDb().getVariantCards().getAllCards(Predicates.compose(CardRulesPredicates.Presets.IS_SCHEME, PaperCard.FN_GET_RULES)), PaperCard.class); - conspiracyPool = ItemPool.createFrom(FModel.getMagicDb().getVariantCards().getAllCards(Predicates.compose(CardRulesPredicates.Presets.IS_CONSPIRACY, PaperCard.FN_GET_RULES)), PaperCard.class); + switch (this.gameType) { + case Constructed: + allSections.add(DeckSection.Avatar); + allSections.add(DeckSection.Schemes); + allSections.add(DeckSection.Planes); + allSections.add(DeckSection.Conspiracy); - CardManager catalogManager = new CardManager(getCDetailPicture(), false, false); // TODO: restore the functionality of the "want uniques only" toggle - CardManager deckManager = new CardManager(getCDetailPicture(), false, false); // IMPORTANT: must *always* show all cards in the deck, otherwise cards with different art get ignored! + normalPool = ItemPool.createFrom(FModel.getMagicDb().getCommonCards().getAllCards(), PaperCard.class); + avatarPool = ItemPool.createFrom(FModel.getMagicDb().getVariantCards().getAllCards(Predicates.compose(CardRulesPredicates.Presets.IS_VANGUARD, PaperCard.FN_GET_RULES)), PaperCard.class); + planePool = ItemPool.createFrom(FModel.getMagicDb().getVariantCards().getAllCards(Predicates.compose(CardRulesPredicates.Presets.IS_PLANE_OR_PHENOMENON, PaperCard.FN_GET_RULES)), PaperCard.class); + schemePool = ItemPool.createFrom(FModel.getMagicDb().getVariantCards().getAllCards(Predicates.compose(CardRulesPredicates.Presets.IS_SCHEME, PaperCard.FN_GET_RULES)), PaperCard.class); + conspiracyPool = ItemPool.createFrom(FModel.getMagicDb().getVariantCards().getAllCards(Predicates.compose(CardRulesPredicates.Presets.IS_CONSPIRACY, PaperCard.FN_GET_RULES)), PaperCard.class); + + break; + case Commander: + case TinyLeaders: + allSections.add(DeckSection.Commander); + + commanderFilter = CardRulesPredicates.Presets.CAN_BE_COMMANDER; + commanderPool = ItemPool.createFrom(FModel.getMagicDb().getCommonCards().getAllCards(Predicates.compose(commanderFilter, PaperCard.FN_GET_RULES)), PaperCard.class); + normalPool = ItemPool.createFrom(FModel.getMagicDb().getCommonCards().getAllCards(), PaperCard.class); + + wantUnique = true; + break; + case Brawl: + allSections.add(DeckSection.Commander); + + commanderFilter = CardRulesPredicates.Presets.CAN_BE_BRAWL_COMMANDER; + commanderPool = ItemPool.createFrom(FModel.getMagicDb().getCommonCards().getAllCards(Predicates.and( + FModel.getFormats().get("Brawl").getFilterPrinted(), Predicates.compose(commanderFilter, PaperCard.FN_GET_RULES))), PaperCard.class); + normalPool = ItemPool.createFrom(FModel.getFormats().get("Brawl").getAllCards(), PaperCard.class); + + wantUnique = true; + break; + } + + catalogManager = new CardManager(getCDetailPicture(), wantUnique, false); + deckManager = new CardManager(getCDetailPicture(), wantUnique, false); catalogManager.setCaption("Catalog"); @@ -92,7 +138,20 @@ public final class CEditorConstructed extends ACEditorBase { } }; - this.controller = new DeckController(FModel.getDecks().getConstructed(), this, newCreator); + switch (this.gameType) { + case Constructed: + this.controller = new DeckController(FModel.getDecks().getConstructed(), this, newCreator); + break; + case Commander: + this.controller = new DeckController(FModel.getDecks().getCommander(), this, newCreator); + break; + case Brawl: + this.controller = new DeckController(FModel.getDecks().getBrawl(), this, newCreator); + break; + case TinyLeaders: + this.controller = new DeckController(FModel.getDecks().getTinyLeaders(), this, newCreator); + break; + } getBtnAddBasicLands().setCommand(new UiCommand() { @Override @@ -110,7 +169,14 @@ public final class CEditorConstructed extends ACEditorBase { return CardLimit.Singleton; } if (FModel.getPreferences().getPrefBoolean(FPref.ENFORCE_DECK_LEGALITY)) { - return CardLimit.Default; + switch (this.gameType) { + case Constructed: + return CardLimit.Default; + case Commander: + case TinyLeaders: + case Brawl: + return CardLimit.Singleton; + } } return CardLimit.None; //if not enforcing deck legality, don't enforce default limit } @@ -278,6 +344,11 @@ public final class CEditorConstructed extends ACEditorBase { this.getDeckManager().setPool(this.controller.getModel().getMain()); } + @Override + protected Boolean isSectionImportable(DeckSection section) { + return allSections.contains(section); + } + /* * (non-Javadoc) * @@ -291,45 +362,70 @@ public final class CEditorConstructed extends ACEditorBase { /** * Switch between the main deck and the sideboard editor. */ - public void cycleEditorMode() { - int curindex = allSections.indexOf(sectionMode); - curindex = (curindex + 1) % allSections.size(); - sectionMode = allSections.get(curindex); - - switch(sectionMode) { - case Main: - this.getCatalogManager().setup(ItemManagerConfig.CARD_CATALOG); - this.getCatalogManager().setPool(normalPool, true); - this.getDeckManager().setPool(this.controller.getModel().getMain()); - break; - case Sideboard: - this.getCatalogManager().setup(ItemManagerConfig.CARD_CATALOG); - this.getCatalogManager().setPool(normalPool, true); - this.getDeckManager().setPool(this.controller.getModel().getOrCreate(DeckSection.Sideboard)); - break; - case Avatar: - this.getCatalogManager().setup(ItemManagerConfig.AVATAR_POOL); - this.getCatalogManager().setPool(avatarPool, true); - this.getDeckManager().setPool(this.controller.getModel().getOrCreate(DeckSection.Avatar)); - break; - case Planes: - this.getCatalogManager().setup(ItemManagerConfig.PLANAR_POOL); - this.getCatalogManager().setPool(planePool,true); - this.getDeckManager().setPool(this.controller.getModel().getOrCreate(DeckSection.Planes)); - break; - case Schemes: - this.getCatalogManager().setup(ItemManagerConfig.SCHEME_POOL); - this.getCatalogManager().setPool(schemePool,true); - this.getDeckManager().setPool(this.controller.getModel().getOrCreate(DeckSection.Schemes)); - break; - case Commander: - break; //do nothing for Commander here - case Conspiracy: - this.getCatalogManager().setup(ItemManagerConfig.CONSPIRACY_DECKS); - this.getCatalogManager().setPool(conspiracyPool,true); - this.getDeckManager().setPool(this.controller.getModel().getOrCreate(DeckSection.Conspiracy)); + public void setEditorMode(DeckSection sectionMode) { + if (sectionMode == null) { + return; + } + switch(this.gameType) { + case Constructed: + switch(sectionMode) { + case Main: + this.getCatalogManager().setup(ItemManagerConfig.CARD_CATALOG); + this.getCatalogManager().setPool(normalPool, true); + this.getDeckManager().setPool(this.controller.getModel().getMain()); + break; + case Sideboard: + this.getCatalogManager().setup(ItemManagerConfig.CARD_CATALOG); + this.getCatalogManager().setPool(normalPool, true); + this.getDeckManager().setPool(this.controller.getModel().getOrCreate(DeckSection.Sideboard)); + break; + case Avatar: + this.getCatalogManager().setup(ItemManagerConfig.AVATAR_POOL); + this.getCatalogManager().setPool(avatarPool, true); + this.getDeckManager().setPool(this.controller.getModel().getOrCreate(DeckSection.Avatar)); + break; + case Planes: + this.getCatalogManager().setup(ItemManagerConfig.PLANAR_POOL); + this.getCatalogManager().setPool(planePool, true); + this.getDeckManager().setPool(this.controller.getModel().getOrCreate(DeckSection.Planes)); + break; + case Schemes: + this.getCatalogManager().setup(ItemManagerConfig.SCHEME_POOL); + this.getCatalogManager().setPool(schemePool, true); + this.getDeckManager().setPool(this.controller.getModel().getOrCreate(DeckSection.Schemes)); + break; + case Commander: + break; //do nothing for Commander here + case Conspiracy: + this.getCatalogManager().setup(ItemManagerConfig.CONSPIRACY_DECKS); + this.getCatalogManager().setPool(conspiracyPool, true); + this.getDeckManager().setPool(this.controller.getModel().getOrCreate(DeckSection.Conspiracy)); + } + case Commander: + case TinyLeaders: + case Brawl: + switch(sectionMode) { + case Main: + this.getCatalogManager().setup(ItemManagerConfig.CARD_CATALOG); + this.getCatalogManager().setPool(normalPool, true); + this.getDeckManager().setPool(this.controller.getModel().getMain()); + break; + case Sideboard: + this.getCatalogManager().setup(ItemManagerConfig.CARD_CATALOG); + this.getCatalogManager().setPool(normalPool, true); + this.getDeckManager().setPool(this.controller.getModel().getOrCreate(DeckSection.Sideboard)); + break; + case Commander: + this.getCatalogManager().setup(ItemManagerConfig.COMMANDER_POOL); + this.getCatalogManager().setPool(commanderPool, true); + this.getDeckManager().setPool(this.controller.getModel().getOrCreate(DeckSection.Commander)); + break; + default: + break; + } } + this.sectionMode = sectionMode; this.controller.updateCaptions(); } @@ -355,13 +451,19 @@ public final class CEditorConstructed extends ACEditorBase { resetUI(); - this.getBtnCycleSection().setVisible(true); - this.getBtnCycleSection().setCommand(new UiCommand() { + this.getCbxSection().removeAllItems(); + for (DeckSection section : allSections) { + this.getCbxSection().addItem(section); + } + this.getCbxSection().addActionListener(new ActionListener() { @Override - public void run() { - cycleEditorMode(); + public void actionPerformed(ActionEvent actionEvent) { + FComboBox cb = (FComboBox)actionEvent.getSource(); + DeckSection ds = (DeckSection)cb.getSelectedItem(); + setEditorMode(ds); } }); + this.getCbxSection().setVisible(true); this.controller.refreshModel(); } diff --git a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorDraftingProcess.java b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorDraftingProcess.java index 239079e7595..2738d174d5b 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorDraftingProcess.java +++ b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorDraftingProcess.java @@ -272,7 +272,7 @@ public class CEditorDraftingProcess extends ACEditorBase { this.getBtnRemove().setVisible(false); this.getBtnRemove4().setVisible(false); - this.getBtnCycleSection().setVisible(false); + this.getCbxSection().setVisible(false); VCurrentDeck.SINGLETON_INSTANCE.getPnlHeader().setVisible(false); diff --git a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorLimited.java b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorLimited.java index 48af02325b1..93288c4cb16 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorLimited.java +++ b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorLimited.java @@ -33,18 +33,21 @@ import forge.model.FModel; import forge.screens.deckeditor.AddBasicLandsDialog; import forge.screens.deckeditor.SEditorIO; import forge.screens.deckeditor.views.VAllDecks; +import forge.screens.deckeditor.views.VBrawlDecks; +import forge.screens.deckeditor.views.VCommanderDecks; import forge.screens.deckeditor.views.VCurrentDeck; import forge.screens.deckeditor.views.VDeckgen; +import forge.screens.deckeditor.views.VTinyLeadersDecks; import forge.screens.home.sanctioned.CSubmenuDraft; import forge.screens.home.sanctioned.CSubmenuSealed; import forge.screens.match.controllers.CDetailPicture; +import forge.toolbox.FComboBox; import forge.util.storage.IStorage; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; +import java.util.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.util.Map.Entry; -import java.util.Set; /** * Child controller for limited deck editor UI. @@ -54,10 +57,13 @@ import java.util.Set; * @author Forge * @version $Id: DeckEditorCommon.java 12850 2011-12-26 14:55:09Z slapshot5 $ */ -public final class CEditorLimited extends ACEditorBase { +public final class CEditorLimited extends CDeckEditor { private final DeckController controller; - private DragCell allDecksParent = null; + private DragCell constructedDecksParent = null; + private DragCell commanderDecksParent = null; + private DragCell brawlDecksParent = null; + private DragCell tinyLeadersDecksParent = null; private DragCell deckGenParent = null; private final List allSections = new ArrayList(); @@ -101,18 +107,20 @@ public final class CEditorLimited extends ACEditorBase { allSections.add(DeckSection.Main); allSections.add(DeckSection.Conspiracy); - this.getBtnCycleSection().setCommand(new UiCommand() { + this.getCbxSection().removeAllItems(); + for (DeckSection section : allSections) { + this.getCbxSection().addItem(section); + } + this.getCbxSection().addActionListener(new ActionListener() { @Override - public void run() { - cycleEditorMode(); + public void actionPerformed(ActionEvent actionEvent) { + FComboBox cb = (FComboBox)actionEvent.getSource(); + DeckSection ds = (DeckSection)cb.getSelectedItem(); + setEditorMode(ds); } }); } - private Deck getSelectedDeck() { - return controller.getModel().getHumanDeck(); - } - //========== Overridden from ACEditorBase @Override @@ -163,9 +171,13 @@ public final class CEditorLimited extends ACEditorBase { */ @Override public void resetTables() { - final Deck toEdit = this.getSelectedDeck(); - this.getCatalogManager().setPool(toEdit.getOrCreate(DeckSection.Sideboard)); - this.getDeckManager().setPool(toEdit.getMain()); + this.getCatalogManager().setPool(getHumanDeck().getOrCreate(DeckSection.Sideboard)); + this.getDeckManager().setPool(getHumanDeck().getMain()); + } + + @Override + protected Boolean isSectionImportable(DeckSection section) { + return section != DeckSection.Sideboard && allSections.contains(section); } /* @@ -179,7 +191,7 @@ public final class CEditorLimited extends ACEditorBase { } public static void addBasicLands(ACEditorBase editor) { - Deck deck = editor.getDeckController().getModel().getHumanDeck(); + Deck deck = editor.getHumanDeck(); if (deck == null) { return; } Set availableEditionCodes = new HashSet<>(); @@ -197,23 +209,21 @@ public final class CEditorLimited extends ACEditorBase { } - public void cycleEditorMode() { - int curindex = (allSections.indexOf(sectionMode) + 1) % allSections.size(); - sectionMode = allSections.get(curindex); - + public void setEditorMode(DeckSection sectionMode) { switch(sectionMode) { case Conspiracy: this.getCatalogManager().setup(ItemManagerConfig.DRAFT_CONSPIRACY); - this.getDeckManager().setPool(this.getSelectedDeck().getOrCreate(DeckSection.Conspiracy)); + this.getDeckManager().setPool(getHumanDeck().getOrCreate(DeckSection.Conspiracy)); break; case Main: this.getCatalogManager().setup(getScreen() == FScreen.DECK_EDITOR_DRAFT ? ItemManagerConfig.DRAFT_POOL : ItemManagerConfig.SEALED_POOL); - this.getDeckManager().setPool(this.getSelectedDeck().getOrCreate(DeckSection.Main)); + this.getDeckManager().setPool(getHumanDeck().getOrCreate(DeckSection.Main)); break; default: break; } + this.sectionMode = sectionMode; this.controller.updateCaptions(); } @@ -228,14 +238,14 @@ public final class CEditorLimited extends ACEditorBase { resetUI(); VCurrentDeck.SINGLETON_INSTANCE.getBtnPrintProxies().setVisible(false); - VCurrentDeck.SINGLETON_INSTANCE.getBtnSaveAs().setVisible(false); - VCurrentDeck.SINGLETON_INSTANCE.getBtnNew().setVisible(false); - VCurrentDeck.SINGLETON_INSTANCE.getBtnOpen().setVisible(false); VCurrentDeck.SINGLETON_INSTANCE.getTxfTitle().setEnabled(false); - this.getBtnCycleSection().setVisible(true); + this.getCbxSection().setVisible(true); deckGenParent = removeTab(VDeckgen.SINGLETON_INSTANCE); - allDecksParent = removeTab(VAllDecks.SINGLETON_INSTANCE); + constructedDecksParent = removeTab(VAllDecks.SINGLETON_INSTANCE); + commanderDecksParent = removeTab(VCommanderDecks.SINGLETON_INSTANCE); + brawlDecksParent = removeTab(VBrawlDecks.SINGLETON_INSTANCE); + tinyLeadersDecksParent = removeTab(VTinyLeadersDecks.SINGLETON_INSTANCE); } /* (non-Javadoc) @@ -258,8 +268,17 @@ public final class CEditorLimited extends ACEditorBase { if (deckGenParent != null) { deckGenParent.addDoc(VDeckgen.SINGLETON_INSTANCE); } - if (allDecksParent != null) { - allDecksParent.addDoc(VAllDecks.SINGLETON_INSTANCE); + if (constructedDecksParent != null) { + constructedDecksParent.addDoc(VAllDecks.SINGLETON_INSTANCE); + } + if (commanderDecksParent != null) { + commanderDecksParent.addDoc(VCommanderDecks.SINGLETON_INSTANCE); + } + if (brawlDecksParent!= null) { + brawlDecksParent.addDoc(VBrawlDecks.SINGLETON_INSTANCE); + } + if (tinyLeadersDecksParent != null) { + tinyLeadersDecksParent.addDoc(VTinyLeadersDecks.SINGLETON_INSTANCE); } } } diff --git a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorQuest.java b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorQuest.java index 3c126ff3461..c33da12cda7 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorQuest.java +++ b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorQuest.java @@ -42,9 +42,12 @@ import forge.screens.deckeditor.views.VCurrentDeck; import forge.screens.deckeditor.views.VDeckgen; import forge.screens.home.quest.CSubmenuQuestDecks; import forge.screens.match.controllers.CDetailPicture; +import forge.toolbox.FComboBox; import forge.util.ItemPool; import javax.swing.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -61,7 +64,7 @@ import java.util.Map.Entry; * @author Forge * @version $Id: CEditorQuest.java 24868 2014-02-17 05:08:05Z drdev $ */ -public final class CEditorQuest extends ACEditorBase { +public final class CEditorQuest extends CDeckEditor { private final QuestController questData; private final DeckController controller; private final List allSections = new ArrayList(); @@ -244,8 +247,7 @@ public final class CEditorQuest extends ACEditorBase { final Deck deck = this.controller.getModel(); - final ItemPool cardpool = new ItemPool(PaperCard.class); - cardpool.addAll(this.questData.getCards().getCardpool()); + final CardPool cardpool = getInitialCatalog(); // remove bottom cards that are in the deck from the card pool cardpool.removeAll(deck.getMain()); // remove sideboard cards from the catalog @@ -255,6 +257,16 @@ public final class CEditorQuest extends ACEditorBase { this.getDeckManager().setPool(deck.getMain()); } + @Override + protected CardPool getInitialCatalog() { + return new CardPool(this.questData.getCards().getCardpool()); + } + + @Override + protected Boolean isSectionImportable(DeckSection section) { + return allSections.contains(section); + } + //=========== Overridden from ACEditorBase /* @@ -270,11 +282,7 @@ public final class CEditorQuest extends ACEditorBase { /** * Switch between the main deck and the sideboard editor. */ - public void cycleEditorMode() { - int curindex = allSections.indexOf(sectionMode); - curindex = (curindex + 1) % allSections.size(); - sectionMode = allSections.get(curindex); - + public void setEditorMode(DeckSection sectionMode) { if (sectionMode == DeckSection.Sideboard) { this.getDeckManager().setPool(this.controller.getModel().getOrCreate(DeckSection.Sideboard)); } @@ -282,6 +290,7 @@ public final class CEditorQuest extends ACEditorBase { this.getDeckManager().setPool(this.controller.getModel().getMain()); } + this.sectionMode = sectionMode; this.controller.updateCaptions(); } @@ -306,14 +315,20 @@ public final class CEditorQuest extends ACEditorBase { resetUI(); VCurrentDeck.SINGLETON_INSTANCE.getBtnSave().setVisible(true); - VCurrentDeck.SINGLETON_INSTANCE.getBtnImport().setVisible(false); - this.getBtnCycleSection().setVisible(true); - this.getBtnCycleSection().setCommand(new UiCommand() { - @Override public void run() { - cycleEditorMode(); + this.getCbxSection().removeAllItems(); + for (DeckSection section : allSections) { + this.getCbxSection().addItem(section); + } + this.getCbxSection().addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent actionEvent) { + FComboBox cb = (FComboBox)actionEvent.getSource(); + DeckSection ds = (DeckSection)cb.getSelectedItem(); + setEditorMode(ds); } }); + this.getCbxSection().setVisible(true); deckGenParent = removeTab(VDeckgen.SINGLETON_INSTANCE); allDecksParent = removeTab(VAllDecks.SINGLETON_INSTANCE); diff --git a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorQuestDraftingProcess.java b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorQuestDraftingProcess.java index 6d8a3b5010c..64d3a9a9a1b 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorQuestDraftingProcess.java +++ b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CEditorQuestDraftingProcess.java @@ -270,7 +270,7 @@ public class CEditorQuestDraftingProcess extends ACEditorBase { +public final class CEditorQuestLimited extends CDeckEditor { private final QuestController questData; private final DeckController controller; private final List allSections = new ArrayList(); @@ -198,10 +198,6 @@ public final class CEditorQuestLimited extends ACEditorBase { +public final class CEditorVariant extends CDeckEditor { private final DeckController controller; private DragCell allDecksParent = null; private DragCell deckGenParent = null; @@ -153,6 +153,11 @@ public final class CEditorVariant extends ACEditorBase { this.getDeckManager().setPool(this.controller.getModel().getOrCreate(this.sectionMode)); } + @Override + protected Boolean isSectionImportable(DeckSection section) { + return true; + } + /* * (non-Javadoc) * diff --git a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CTinyLeadersDecks.java b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CTinyLeadersDecks.java new file mode 100644 index 00000000000..a20e47aa8f1 --- /dev/null +++ b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/CTinyLeadersDecks.java @@ -0,0 +1,44 @@ +package forge.screens.deckeditor.controllers; + +import forge.deck.DeckProxy; +import forge.gui.framework.ICDoc; +import forge.itemmanager.ItemManagerConfig; +import forge.screens.deckeditor.views.VTinyLeadersDecks; + +/** + * Controls the "Commander Decks" panel in the deck editor UI. + * + *

(C at beginning of class name denotes a control class.) + * + */ +public enum CTinyLeadersDecks implements ICDoc { + SINGLETON_INSTANCE; + + private final VTinyLeadersDecks view = VTinyLeadersDecks.SINGLETON_INSTANCE; + + //========== Overridden methods + + @Override + public void register() { + } + + /* (non-Javadoc) + * @see forge.gui.framework.ICDoc#initialize() + */ + @Override + public void initialize() { + refresh(); + } + + public void refresh() { + view.getLstDecks().setPool(DeckProxy.getAllTinyLeadersDecks()); + } + + /* (non-Javadoc) + * @see forge.gui.framework.ICDoc#update() + */ + @Override + public void update() { + view.getLstDecks().setup(ItemManagerConfig.CONSTRUCTED_DECKS); + } +} diff --git a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/DeckController.java b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/DeckController.java index b5036d256aa..3b0b40ca894 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/DeckController.java +++ b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/controllers/DeckController.java @@ -17,12 +17,14 @@ */ package forge.screens.deckeditor.controllers; +import forge.StaticData; +import forge.deck.*; +import forge.item.PaperCard; +import forge.util.ItemPool; import org.apache.commons.lang3.StringUtils; import com.google.common.base.Supplier; -import forge.deck.DeckBase; -import forge.deck.DeckProxy; import forge.screens.deckeditor.menus.DeckFileMenu; import forge.screens.deckeditor.views.VCurrentDeck; import forge.screens.home.gauntlet.VSubmenuGauntletBuild; @@ -31,6 +33,11 @@ import forge.screens.home.gauntlet.VSubmenuGauntletQuick; import forge.screens.home.sanctioned.VSubmenuConstructed; import forge.util.storage.IStorage; +import java.util.Date; +import java.util.EnumSet; +import java.util.HashMap; +import java.util.Map; + public class DeckController { private T model; private boolean saved; @@ -38,7 +45,7 @@ public class DeckController { private final IStorage rootFolder; private IStorage currentFolder; private String modelPath; - private final ACEditorBase view; + private final CDeckEditor view; private final Supplier newModelCreator; /** @@ -48,7 +55,7 @@ public class DeckController { * @param view0 the view0 * @param newModelCreator0 the new model creator0 */ - public DeckController(final IStorage folder0, final ACEditorBase view0, final Supplier newModelCreator0) { + public DeckController(final IStorage folder0, final CDeckEditor view0, final Supplier newModelCreator0) { rootFolder = folder0; currentFolder = rootFolder; view = view0; @@ -76,6 +83,132 @@ public class DeckController { return model == null || model.isEmpty(); } + /** + * Load deck from file or clipboard + */ + public void loadDeck(Deck deck) { + + if (deck.getName() == "") { + newModel(); + } + + if (!view.getCatalogManager().isInfinite()) { + CardPool catalogClone = new CardPool(view.getInitialCatalog()); + deck = pickFromCatalog(deck, catalogClone); + ItemPool catalogPool = view.getCatalogManager().getPool(); + catalogPool.clear(); + catalogPool.addAll(catalogClone); + } + + for (DeckSection section: EnumSet.allOf(DeckSection.class)) { + if (view.isSectionImportable(section)) { + CardPool sectionCards = view.getHumanDeck().getOrCreate(section); + sectionCards.clear(); + sectionCards.addAll(deck.getOrCreate(section)); + } + } + + onModelChanged(false); + } + + private Deck pickFromCatalog(Deck deck, CardPool catalog) { + Date dateWithAllCards = StaticData.instance().getEditions().getEarliestDateWithAllCards(catalog); + Deck result = new Deck(); + for (DeckSection section: EnumSet.allOf(DeckSection.class)) { + if (view.isSectionImportable(section)) { + CardPool cards = pickSectionFromCatalog(catalog, deck.getOrCreate(section), dateWithAllCards); + result.putSection(section, cards); + } + } + + return result; + } + + private CardPool pickSectionFromCatalog(CardPool catalog, CardPool sourceSection, Date dateWithAllCards) { + HashMap countByName = groupByName(sourceSection); + HashMap basicLandsByName = getBasicLandsByName(sourceSection); + + CardPool targetSection = new CardPool(); + pickFromCatalog(countByName, catalog, targetSection); + importBasicLands(countByName, basicLandsByName, dateWithAllCards, targetSection); + + return targetSection; + } + + private HashMap groupByName(CardPool section) { + HashMap result = new HashMap(); + + for (Map.Entry entry : section) { + PaperCard importedCard = entry.getKey(); + + Integer previousCount = result.getOrDefault(importedCard.getName(), 0); + int countToAdd = entry.getValue(); + + result.put(importedCard.getName(), countToAdd + previousCount); + } + + return result; + } + + private void pickFromCatalog(HashMap countByName, CardPool catalog, CardPool targetSection) { + + CardPool catalogClone = new CardPool(catalog); // clone to iterate modified collection + for (Map.Entry entry : catalogClone) { + + PaperCard availableCard = entry.getKey(); + if (availableCard.getRules().getType().isBasicLand()) { + // basic lands are added regardless of catalog cards + continue; + } + + Integer availableCount = entry.getValue(); + int toAddByName = countByName.getOrDefault(availableCard.getName(), 0); + int toAdd = Math.min(availableCount, toAddByName); + + if (toAdd > 0) { + targetSection.add(availableCard, toAdd); + countByName.put(availableCard.getName(), toAddByName - toAdd); + catalog.remove(availableCard, toAdd); + } + } + } + + private void importBasicLands(HashMap countByName, HashMap basicLandsByName, Date dateWithAllCards, CardPool targetSection) { + for (String cardName : countByName.keySet()) { + + PaperCard card = basicLandsByName.getOrDefault(cardName, null); + + if (card == null) { + continue; + } + + int countToAdd = countByName.get(cardName); + + card = StaticData.instance().getCardByEditionDate(card, dateWithAllCards); + targetSection.add(card.getName(), card.getEdition(), countToAdd); + } + } + + private HashMap getBasicLandsByName(CardPool sourceSection) { + HashMap result = new HashMap(); + + for (Map.Entry entry : sourceSection) { + PaperCard card = entry.getKey(); + + if (!card.getRules().getType().isBasicLand()) { + continue; + } + + if (result.containsKey(card.getName())) { + continue; + } + + result.put(card.getName(), card); + } + + return result; + } + /** * Sets the model. * @@ -83,9 +216,14 @@ public class DeckController { public void setModel(final T document) { setModel(document, false); } - public void setModel(final T document, final boolean isStored) { - modelInStorage = isStored; + + private void setModel(final T document, final boolean isStored) { model = document; + onModelChanged(isStored); + } + + private void onModelChanged(boolean isStored) { + modelInStorage = isStored; view.resetTables(); CStatistics.SINGLETON_INSTANCE.update(); @@ -272,7 +410,7 @@ public class DeckController { tabCaption = "*" + tabCaption; itemManagerCaption = "*" + itemManagerCaption; } - itemManagerCaption += " - " + view.getSectionMode().name(); + itemManagerCaption += " - "; VCurrentDeck.SINGLETON_INSTANCE.getTabLabel().setText(tabCaption); VCurrentDeck.SINGLETON_INSTANCE.getTxfTitle().setText(title); diff --git a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/views/VAllDecks.java b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/views/VAllDecks.java index f5ba77f4ccf..b31b6cb31b4 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/views/VAllDecks.java +++ b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/views/VAllDecks.java @@ -1,5 +1,6 @@ package forge.screens.deckeditor.views; +import forge.deck.io.DeckPreferences; import forge.game.GameType; import forge.gui.framework.DragCell; import forge.gui.framework.DragTab; @@ -24,7 +25,7 @@ public enum VAllDecks implements IVDoc { // Fields used with interface IVDoc private DragCell parentCell; - private final DragTab tab = new DragTab("All Decks"); + private final DragTab tab = new DragTab("Constructed"); private DeckManager lstDecks; @@ -80,6 +81,8 @@ public enum VAllDecks implements IVDoc { JPanel parentBody = parentCell.getBody(); parentBody.setLayout(new MigLayout("insets 5, gap 0, wrap, hidemode 3")); parentBody.add(new ItemManagerContainer(lstDecks), "push, grow"); + String preferredDeck = DeckPreferences.getCurrentDeck(); + lstDecks.editDeck(lstDecks.stringToItem(preferredDeck)); } //========== Retrieval methods @@ -90,6 +93,6 @@ public enum VAllDecks implements IVDoc { public void setCDetailPicture(final CDetailPicture cDetailPicture) { this.lstDecks = new DeckManager(GameType.Constructed, cDetailPicture); - this.lstDecks.setCaption("Decks"); + this.lstDecks.setCaption("Constructed Decks"); } } diff --git a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/views/VBrawlDecks.java b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/views/VBrawlDecks.java new file mode 100644 index 00000000000..8afcb05a190 --- /dev/null +++ b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/views/VBrawlDecks.java @@ -0,0 +1,98 @@ +package forge.screens.deckeditor.views; + +import forge.deck.io.DeckPreferences; +import forge.game.GameType; +import forge.gui.framework.DragCell; +import forge.gui.framework.DragTab; +import forge.gui.framework.EDocID; +import forge.gui.framework.IVDoc; +import forge.itemmanager.DeckManager; +import forge.itemmanager.ItemManagerContainer; +import forge.screens.deckeditor.controllers.CBrawlDecks; +import forge.screens.match.controllers.CDetailPicture; +import net.miginfocom.swing.MigLayout; + +import javax.swing.*; + +/** + * Assembles Swing components of all deck viewer in deck editor. + * + *

(V at beginning of class name denotes a view class.) + */ +public enum VBrawlDecks implements IVDoc { + /** */ + SINGLETON_INSTANCE; + + // Fields used with interface IVDoc + private DragCell parentCell; + private final DragTab tab = new DragTab("Brawl"); + + private DeckManager lstDecks; + + //========== Overridden methods + + /* (non-Javadoc) + * @see forge.gui.framework.IVDoc#getDocumentID() + */ + @Override + public EDocID getDocumentID() { + return EDocID.EDITOR_BRAWL; + } + + /* (non-Javadoc) + * @see forge.gui.framework.IVDoc#getTabLabel() + */ + @Override + public DragTab getTabLabel() { + return tab; + } + + /* (non-Javadoc) + * @see forge.gui.framework.IVDoc#getLayoutControl() + */ + @Override + public CBrawlDecks getLayoutControl() { + return CBrawlDecks.SINGLETON_INSTANCE; + } + + /* (non-Javadoc) + * @see forge.gui.framework.IVDoc#setParentCell(forge.gui.framework.DragCell) + */ + @Override + public void setParentCell(DragCell cell0) { + this.parentCell = cell0; + } + + /* (non-Javadoc) + * @see forge.gui.framework.IVDoc#getParentCell() + */ + @Override + public DragCell getParentCell() { + return this.parentCell; + } + + /* (non-Javadoc) + * @see forge.gui.framework.IVDoc#populate() + */ + @Override + public void populate() { + CBrawlDecks.SINGLETON_INSTANCE.refresh(); //ensure decks refreshed in case any deleted or added since last loaded + + JPanel parentBody = parentCell.getBody(); + parentBody.setLayout(new MigLayout("insets 5, gap 0, wrap, hidemode 3")); + parentBody.add(new ItemManagerContainer(lstDecks), "push, grow"); + String preferredDeck = DeckPreferences.getBrawlDeck(); + lstDecks.editDeck(lstDecks.stringToItem(preferredDeck)); + } + + //========== Retrieval methods + /** @return {@link JPanel} */ + public DeckManager getLstDecks() { + return lstDecks; + } + + public void setCDetailPicture(final CDetailPicture cDetailPicture) { + this.lstDecks = new DeckManager(GameType.Brawl, cDetailPicture); + this.lstDecks.setCaption("Brawl Decks"); + } +} diff --git a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/views/VCommanderDecks.java b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/views/VCommanderDecks.java new file mode 100644 index 00000000000..fbed9d4271f --- /dev/null +++ b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/views/VCommanderDecks.java @@ -0,0 +1,98 @@ +package forge.screens.deckeditor.views; + +import forge.deck.io.DeckPreferences; +import forge.game.GameType; +import forge.gui.framework.DragCell; +import forge.gui.framework.DragTab; +import forge.gui.framework.EDocID; +import forge.gui.framework.IVDoc; +import forge.itemmanager.DeckManager; +import forge.itemmanager.ItemManagerContainer; +import forge.screens.deckeditor.controllers.CCommanderDecks; +import forge.screens.match.controllers.CDetailPicture; +import net.miginfocom.swing.MigLayout; + +import javax.swing.*; + +/** + * Assembles Swing components of all deck viewer in deck editor. + * + *

(V at beginning of class name denotes a view class.) + */ +public enum VCommanderDecks implements IVDoc { + /** */ + SINGLETON_INSTANCE; + + // Fields used with interface IVDoc + private DragCell parentCell; + private final DragTab tab = new DragTab("Commander"); + + private DeckManager lstDecks; + + //========== Overridden methods + + /* (non-Javadoc) + * @see forge.gui.framework.IVDoc#getDocumentID() + */ + @Override + public EDocID getDocumentID() { + return EDocID.EDITOR_COMMANDER; + } + + /* (non-Javadoc) + * @see forge.gui.framework.IVDoc#getTabLabel() + */ + @Override + public DragTab getTabLabel() { + return tab; + } + + /* (non-Javadoc) + * @see forge.gui.framework.IVDoc#getLayoutControl() + */ + @Override + public CCommanderDecks getLayoutControl() { + return CCommanderDecks.SINGLETON_INSTANCE; + } + + /* (non-Javadoc) + * @see forge.gui.framework.IVDoc#setParentCell(forge.gui.framework.DragCell) + */ + @Override + public void setParentCell(DragCell cell0) { + this.parentCell = cell0; + } + + /* (non-Javadoc) + * @see forge.gui.framework.IVDoc#getParentCell() + */ + @Override + public DragCell getParentCell() { + return this.parentCell; + } + + /* (non-Javadoc) + * @see forge.gui.framework.IVDoc#populate() + */ + @Override + public void populate() { + CCommanderDecks.SINGLETON_INSTANCE.refresh(); //ensure decks refreshed in case any deleted or added since last loaded + + JPanel parentBody = parentCell.getBody(); + parentBody.setLayout(new MigLayout("insets 5, gap 0, wrap, hidemode 3")); + parentBody.add(new ItemManagerContainer(lstDecks), "push, grow"); + String preferredDeck = DeckPreferences.getCommanderDeck(); + lstDecks.editDeck(lstDecks.stringToItem(preferredDeck)); + } + + //========== Retrieval methods + /** @return {@link JPanel} */ + public DeckManager getLstDecks() { + return lstDecks; + } + + public void setCDetailPicture(final CDetailPicture cDetailPicture) { + this.lstDecks = new DeckManager(GameType.Commander, cDetailPicture); + this.lstDecks.setCaption("Commander Decks"); + } +} diff --git a/forge-gui-desktop/src/main/java/forge/screens/deckeditor/views/VTinyLeadersDecks.java b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/views/VTinyLeadersDecks.java new file mode 100644 index 00000000000..cc824baa017 --- /dev/null +++ b/forge-gui-desktop/src/main/java/forge/screens/deckeditor/views/VTinyLeadersDecks.java @@ -0,0 +1,98 @@ +package forge.screens.deckeditor.views; + +import forge.deck.io.DeckPreferences; +import forge.game.GameType; +import forge.gui.framework.DragCell; +import forge.gui.framework.DragTab; +import forge.gui.framework.EDocID; +import forge.gui.framework.IVDoc; +import forge.itemmanager.DeckManager; +import forge.itemmanager.ItemManagerContainer; +import forge.screens.deckeditor.controllers.CTinyLeadersDecks; +import forge.screens.match.controllers.CDetailPicture; +import net.miginfocom.swing.MigLayout; + +import javax.swing.*; + +/** + * Assembles Swing components of all deck viewer in deck editor. + * + *

(V at beginning of class name denotes a view class.) + */ +public enum VTinyLeadersDecks implements IVDoc { + /** */ + SINGLETON_INSTANCE; + + // Fields used with interface IVDoc + private DragCell parentCell; + private final DragTab tab = new DragTab("Tiny Leaders"); + + private DeckManager lstDecks; + + //========== Overridden methods + + /* (non-Javadoc) + * @see forge.gui.framework.IVDoc#getDocumentID() + */ + @Override + public EDocID getDocumentID() { + return EDocID.EDITOR_TINY_LEADERS; + } + + /* (non-Javadoc) + * @see forge.gui.framework.IVDoc#getTabLabel() + */ + @Override + public DragTab getTabLabel() { + return tab; + } + + /* (non-Javadoc) + * @see forge.gui.framework.IVDoc#getLayoutControl() + */ + @Override + public CTinyLeadersDecks getLayoutControl() { + return CTinyLeadersDecks.SINGLETON_INSTANCE; + } + + /* (non-Javadoc) + * @see forge.gui.framework.IVDoc#setParentCell(forge.gui.framework.DragCell) + */ + @Override + public void setParentCell(DragCell cell0) { + this.parentCell = cell0; + } + + /* (non-Javadoc) + * @see forge.gui.framework.IVDoc#getParentCell() + */ + @Override + public DragCell getParentCell() { + return this.parentCell; + } + + /* (non-Javadoc) + * @see forge.gui.framework.IVDoc#populate() + */ + @Override + public void populate() { + CTinyLeadersDecks.SINGLETON_INSTANCE.refresh(); //ensure decks refreshed in case any deleted or added since last loaded + + JPanel parentBody = parentCell.getBody(); + parentBody.setLayout(new MigLayout("insets 5, gap 0, wrap, hidemode 3")); + parentBody.add(new ItemManagerContainer(lstDecks), "push, grow"); + String preferredDeck = DeckPreferences.getTinyLeadersDeck(); + lstDecks.editDeck(lstDecks.stringToItem(preferredDeck)); + } + + //========== Retrieval methods + /** @return {@link JPanel} */ + public DeckManager getLstDecks() { + return lstDecks; + } + + public void setCDetailPicture(final CDetailPicture cDetailPicture) { + this.lstDecks = new DeckManager(GameType.TinyLeaders, cDetailPicture); + this.lstDecks.setCaption("Tiny Leaders Decks"); + } +} diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/PlayerPanel.java b/forge-gui-desktop/src/main/java/forge/screens/home/PlayerPanel.java index 006487fa53a..875da3c0689 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/PlayerPanel.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/PlayerPanel.java @@ -35,7 +35,6 @@ import forge.model.FModel; import forge.properties.ForgePreferences; import forge.properties.ForgePreferences.FPref; import forge.screens.deckeditor.CDeckEditorUI; -import forge.screens.deckeditor.controllers.CEditorCommander; import forge.screens.deckeditor.controllers.CEditorVariant; import forge.screens.home.sanctioned.AvatarSelector; import forge.toolbox.FCheckBox; @@ -88,7 +87,6 @@ public class PlayerPanel extends FPanel { private final FLabel scmLabel; private final FLabel cmdDeckSelectorBtn = new FLabel.ButtonBuilder().text("Select a Commander deck").build(); - private final FLabel cmdDeckEditor = new FLabel.ButtonBuilder().text("Commander Deck Editor").build(); private final FLabel cmdLabel; private final FLabel pchDeckSelectorBtn = new FLabel.ButtonBuilder().text("Select a planar deck").build(); @@ -161,9 +159,8 @@ public class PlayerPanel extends FPanel { addHandlersDeckSelector(); - this.add(cmdLabel, variantBtnConstraints + ", cell 0 3, sx 2, ax right"); - this.add(cmdDeckSelectorBtn, variantBtnConstraints + ", cell 2 3, growx, pushx"); - this.add(cmdDeckEditor, variantBtnConstraints + ", cell 3 3, sx 3, growx, wrap"); + this.add(cmdLabel, variantBtnConstraints + ", cell 0 2, sx 2, ax right"); + this.add(cmdDeckSelectorBtn, variantBtnConstraints + ", cell 2 2, pushx, growx, wmax 100%-153px, h 30px, spanx 4, wrap"); this.add(scmLabel, variantBtnConstraints + ", cell 0 4, sx 2, ax right"); this.add(scmDeckSelectorBtn, variantBtnConstraints + ", cell 2 4, growx, pushx"); @@ -347,9 +344,7 @@ public class PlayerPanel extends FPanel { deckLabel.setVisible(isDeckBuildingAllowed); deckBtn.setVisible(isDeckBuildingAllowed); - cmdDeckSelectorBtn.setVisible(isCommanderApplied); - cmdDeckEditor.setText(isTinyLeaders ? "TL Deck Editor" : isBrawl ? "Brawl Editor" : "Commander Deck Editor"); - cmdDeckEditor.setVisible(isCommanderApplied); + cmdDeckSelectorBtn.setVisible(isCommanderApplied); cmdLabel.setVisible(isCommanderApplied); scmDeckSelectorBtn.setVisible(archenemyVisiblity); @@ -516,25 +511,6 @@ public class PlayerPanel extends FPanel { } }); - cmdDeckEditor.setCommand(new UiCommand() { - @Override - public void run() { - if (lobby.hasVariant(GameType.TinyLeaders)) { - lobby.setCurrentGameMode(GameType.TinyLeaders); - Singletons.getControl().setCurrentScreen(FScreen.DECK_EDITOR_TINY_LEADERS); - CDeckEditorUI.SINGLETON_INSTANCE.setEditorController(new CEditorCommander(CDeckEditorUI.SINGLETON_INSTANCE.getCDetailPicture(), true, false)); - } else if (lobby.hasVariant(GameType.Brawl)) { - lobby.setCurrentGameMode(GameType.Brawl); - Singletons.getControl().setCurrentScreen(FScreen.DECK_EDITOR_BRAWL); - CDeckEditorUI.SINGLETON_INSTANCE.setEditorController(new CEditorCommander(CDeckEditorUI.SINGLETON_INSTANCE.getCDetailPicture(), false, true)); - } else { - lobby.setCurrentGameMode(GameType.Commander); - Singletons.getControl().setCurrentScreen(FScreen.DECK_EDITOR_COMMANDER); - CDeckEditorUI.SINGLETON_INSTANCE.setEditorController(new CEditorCommander(CDeckEditorUI.SINGLETON_INSTANCE.getCDetailPicture(), false, false)); - } - } - }); - // Planechase buttons pchDeckSelectorBtn.setCommand(new Runnable() { @Override diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/VLobby.java b/forge-gui-desktop/src/main/java/forge/screens/home/VLobby.java index 296c6bac159..0b5139827d2 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/VLobby.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/VLobby.java @@ -96,9 +96,9 @@ public class VLobby implements ILobbyView { private final VariantCheckBox vntArchenemy = new VariantCheckBox(GameType.Archenemy); private final VariantCheckBox vntArchenemyRumble = new VariantCheckBox(GameType.ArchenemyRumble); private final ImmutableList vntBoxesLocal = - ImmutableList.of(vntVanguard, vntMomirBasic, vntMoJhoSto, vntCommander, vntTinyLeaders, vntBrawl, vntPlanechase, vntArchenemy, vntArchenemyRumble); + ImmutableList.of(vntVanguard, vntMomirBasic, vntMoJhoSto, vntCommander, vntBrawl, vntTinyLeaders, vntPlanechase, vntArchenemy, vntArchenemyRumble); private final ImmutableList vntBoxesNetwork = - ImmutableList.of(vntVanguard, vntMomirBasic, vntMoJhoSto, vntCommander, vntTinyLeaders, vntBrawl /*, vntPlanechase, vntArchenemy, vntArchenemyRumble */); + ImmutableList.of(vntVanguard, vntMomirBasic, vntMoJhoSto, vntCommander, vntBrawl, vntTinyLeaders /*, vntPlanechase, vntArchenemy, vntArchenemyRumble */); // Player frame elements private final JPanel playersFrame = new JPanel(new MigLayout("insets 0, gap 0 5, wrap, hidemode 3")); @@ -250,6 +250,8 @@ public class VLobby implements ILobbyView { switch (selectedDeckType){ case STANDARD_CARDGEN_DECK: case MODERN_CARDGEN_DECK: + case LEGACY_CARDGEN_DECK: + case VINTAGE_CARDGEN_DECK: case COLOR_DECK: case STANDARD_COLOR_DECK: case MODERN_COLOR_DECK: diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/CSubmenuGauntletContests.java b/forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/CSubmenuGauntletContests.java index da752354622..a0bba9a7f20 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/CSubmenuGauntletContests.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/CSubmenuGauntletContests.java @@ -67,10 +67,12 @@ public enum CSubmenuGauntletContests implements ICDoc { private void updateData() { final File[] files = GauntletIO.getGauntletFilesLocked(); final List data = new ArrayList(); - for (final File f : files) { - final GauntletData gd = GauntletIO.loadGauntlet(f); - if (gd != null) { - data.add(gd); + if (files != null) { + for (final File f : files) { + final GauntletData gd = GauntletIO.loadGauntlet(f); + if (gd != null) { + data.add(gd); + } } } diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/CSubmenuGauntletQuick.java b/forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/CSubmenuGauntletQuick.java index 0503550b591..01d5ff3856e 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/CSubmenuGauntletQuick.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/CSubmenuGauntletQuick.java @@ -73,6 +73,8 @@ public enum CSubmenuGauntletQuick implements ICDoc { if (view.getBoxStandardColorDecks().isSelected()) { allowedDeckTypes.add(DeckType.STANDARD_COLOR_DECK); } if (view.getBoxStandardGenDecks().isSelected()) { allowedDeckTypes.add(DeckType.STANDARD_CARDGEN_DECK); } if (view.getBoxModernGenDecks().isSelected()) { allowedDeckTypes.add(DeckType.MODERN_CARDGEN_DECK); } + if (view.getBoxLegacyGenDecks().isSelected()) { allowedDeckTypes.add(DeckType.LEGACY_CARDGEN_DECK); } + if (view.getBoxVintageGenDecks().isSelected()) { allowedDeckTypes.add(DeckType.VINTAGE_CARDGEN_DECK); } if (view.getBoxModernColorDecks().isSelected()) { allowedDeckTypes.add(DeckType.MODERN_COLOR_DECK); } if (view.getBoxThemeDecks().isSelected()) { allowedDeckTypes.add(DeckType.THEME_DECK); } if (view.getBoxUserDecks().isSelected()) { allowedDeckTypes.add(DeckType.CUSTOM_DECK); } diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/VSubmenuGauntletQuick.java b/forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/VSubmenuGauntletQuick.java index 8c14d6d7acd..d01810b33d0 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/VSubmenuGauntletQuick.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/gauntlet/VSubmenuGauntletQuick.java @@ -56,6 +56,8 @@ public enum VSubmenuGauntletQuick implements IVSubmenu { private final JCheckBox boxStandardColorDecks = new FCheckBox(DeckType.STANDARD_COLOR_DECK.toString()); private final JCheckBox boxStandardCardgenDecks = new FCheckBox(DeckType.STANDARD_CARDGEN_DECK.toString()); private final JCheckBox boxModernCardgenDecks = new FCheckBox(DeckType.MODERN_CARDGEN_DECK.toString()); + private final JCheckBox boxLegacyCardgenDecks = new FCheckBox(DeckType.LEGACY_CARDGEN_DECK.toString()); + private final JCheckBox boxVintageCardgenDecks = new FCheckBox(DeckType.VINTAGE_CARDGEN_DECK.toString()); private final JCheckBox boxModernColorDecks = new FCheckBox(DeckType.MODERN_COLOR_DECK.toString()); private final JCheckBox boxThemeDecks = new FCheckBox(DeckType.THEME_DECK.toString()); @@ -88,9 +90,13 @@ public enum VSubmenuGauntletQuick implements IVSubmenu { if(FModel.isdeckGenMatrixLoaded()) { boxStandardCardgenDecks.setSelected(true); boxModernCardgenDecks.setSelected(true); + boxLegacyCardgenDecks.setSelected(true); + boxVintageCardgenDecks.setSelected(true); }else{ boxStandardCardgenDecks.setSelected(false); boxModernCardgenDecks.setSelected(false); + boxLegacyCardgenDecks.setSelected(false); + boxVintageCardgenDecks.setSelected(false); } boxModernColorDecks.setSelected(true); @@ -117,6 +123,8 @@ public enum VSubmenuGauntletQuick implements IVSubmenu { if(FModel.isdeckGenMatrixLoaded()) { pnlOptions.add(boxStandardCardgenDecks, "w 96%!, h 30px!, gap 2% 0 0 5px"); pnlOptions.add(boxModernCardgenDecks, "w 96%!, h 30px!, gap 2% 0 0 5px"); + pnlOptions.add(boxLegacyCardgenDecks, "w 96%!, h 30px!, gap 2% 0 0 5px"); + pnlOptions.add(boxVintageCardgenDecks, "w 96%!, h 30px!, gap 2% 0 0 5px"); } pnlOptions.add(boxStandardColorDecks, "w 96%!, h 30px!, gap 2% 0 0 5px"); pnlOptions.add(boxModernColorDecks, "w 96%!, h 30px!, gap 2% 0 0 0"); @@ -214,6 +222,12 @@ public enum VSubmenuGauntletQuick implements IVSubmenu { public JCheckBox getBoxModernGenDecks() { return boxModernCardgenDecks; } + public JCheckBox getBoxLegacyGenDecks() { + return boxLegacyCardgenDecks; + } + public JCheckBox getBoxVintageGenDecks() { + return boxVintageCardgenDecks; + } /** @return {@link javax.swing.JCheckBox} */ public JCheckBox getBoxThemeDecks() { diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/online/CSubmenuOnlineLobby.java b/forge-gui-desktop/src/main/java/forge/screens/home/online/CSubmenuOnlineLobby.java index 2a266eca88a..76ecd651a30 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/online/CSubmenuOnlineLobby.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/online/CSubmenuOnlineLobby.java @@ -1,5 +1,6 @@ package forge.screens.home.online; +import java.net.BindException; import java.util.ArrayList; import java.util.List; @@ -7,6 +8,7 @@ import javax.swing.JMenu; import javax.swing.SwingUtilities; import forge.FThreads; +import forge.error.BugReporter; import forge.gui.FNetOverlay; import forge.gui.SOverlayUtils; import forge.gui.framework.EDocID; @@ -19,6 +21,7 @@ import forge.screens.home.CHomeUI; import forge.screens.home.CLobby; import forge.screens.home.VLobby; import forge.screens.home.sanctioned.ConstructedGameMenu; +import forge.util.gui.SOptionPane; public enum CSubmenuOnlineLobby implements ICDoc, IMenuProvider { SINGLETON_INSTANCE; @@ -41,7 +44,18 @@ public enum CSubmenuOnlineLobby implements ICDoc, IMenuProvider { join(url); } else { - host(); + try { + host(); + } catch (Exception ex) { + // IntelliJ swears that BindException isn't thrown in this try block, but it is! + if (ex.getClass() == BindException.class) { + SOptionPane.showErrorDialog("Unable to start server, port already in use!"); + SOverlayUtils.hideOverlay(); + } else { + BugReporter.reportException(ex); + } + ; + } } } }); diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuQuestData.java b/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuQuestData.java index a7cfb424db2..131805b738b 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuQuestData.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/quest/CSubmenuQuestData.java @@ -20,6 +20,7 @@ import forge.toolbox.FOptionPane; import javax.swing.*; import java.io.File; import java.io.FilenameFilter; +import java.io.IOException; import java.util.*; import java.util.Map.Entry; @@ -167,6 +168,7 @@ public enum CSubmenuQuestData implements ICDoc { final VSubmenuQuestData view = VSubmenuQuestData.SINGLETON_INSTANCE; final File dirQuests = new File(ForgeConstants.QUEST_SAVE_DIR); final QuestController qc = FModel.getQuest(); + ArrayList restorableQuests = new ArrayList<>(); // Iterate over files and load quest data for each. final FilenameFilter takeDatFiles = new FilenameFilter() { @@ -178,7 +180,14 @@ public enum CSubmenuQuestData implements ICDoc { final File[] arrFiles = dirQuests.listFiles(takeDatFiles); arrQuests.clear(); for (final File f : arrFiles) { - arrQuests.put(f.getName(), QuestDataIO.loadData(f)); + try { + System.out.println(String.format("About to load quest (%s)... ", f.getName())); + arrQuests.put(f.getName(), QuestDataIO.loadData(f)); + } catch(IOException ex) { + ex.printStackTrace(); + System.out.println(String.format("Error loading quest data (%s).. skipping for now..", f.getName())); + restorableQuests.add(f.getName()); + } } // Populate list with available quest data. diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/quest/DialogChooseFormats.java b/forge-gui-desktop/src/main/java/forge/screens/home/quest/DialogChooseFormats.java index 37577c55809..70e3896d7a3 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/quest/DialogChooseFormats.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/quest/DialogChooseFormats.java @@ -1,12 +1,10 @@ package forge.screens.home.quest; import forge.assets.FSkinProp; -import forge.card.CardEdition; import forge.game.GameFormat; import forge.gui.SOverlayUtils; import forge.model.FModel; import forge.toolbox.*; -import forge.util.TextUtil; import net.miginfocom.swing.MigLayout; import javax.swing.*; diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuPreferences.java b/forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuPreferences.java index ef7276a47b3..3e32bdc8303 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuPreferences.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/settings/CSubmenuPreferences.java @@ -101,6 +101,7 @@ public enum CSubmenuPreferences implements ICDoc { lstControls.add(Pair.of(view.getCbRandomArtInPools(), FPref.UI_RANDOM_ART_IN_POOLS)); lstControls.add(Pair.of(view.getCbEnforceDeckLegality(), FPref.ENFORCE_DECK_LEGALITY)); lstControls.add(Pair.of(view.getCbPerformanceMode(), FPref.PERFORMANCE_MODE)); + lstControls.add(Pair.of(view.getCbFilteredHands(), FPref.FILTERED_HANDS)); lstControls.add(Pair.of(view.getCbCloneImgSource(), FPref.UI_CLONE_MODE_SOURCE)); lstControls.add(Pair.of(view.getCbRemoveSmall(), FPref.DECKGEN_NOSMALL)); lstControls.add(Pair.of(view.getCbCardBased(), FPref.DECKGEN_CARDBASED)); @@ -115,6 +116,7 @@ public enum CSubmenuPreferences implements ICDoc { lstControls.add(Pair.of(view.getCbUiForTouchScreen(), FPref.UI_FOR_TOUCHSCREN)); lstControls.add(Pair.of(view.getCbTimedTargOverlay(), FPref.UI_TIMED_TARGETING_OVERLAY_UPDATES)); lstControls.add(Pair.of(view.getCbCompactMainMenu(), FPref.UI_COMPACT_MAIN_MENU)); + lstControls.add(Pair.of(view.getCbUseSentry(), FPref.USE_SENTRY)); lstControls.add(Pair.of(view.getCbPromptFreeBlocks(), FPref.MATCHPREF_PROMPT_FREE_BLOCKS)); lstControls.add(Pair.of(view.getCbPauseWhileMinimized(), FPref.UI_PAUSE_WHILE_MINIMIZED)); lstControls.add(Pair.of(view.getCbWorkshopSyntax(), FPref.DEV_WORKSHOP_SYNTAX)); diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/settings/VSubmenuPreferences.java b/forge-gui-desktop/src/main/java/forge/screens/home/settings/VSubmenuPreferences.java index 3c3c2b37d65..40a96099df4 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/settings/VSubmenuPreferences.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/settings/VSubmenuPreferences.java @@ -69,6 +69,7 @@ public enum VSubmenuPreferences implements IVSubmenu { private final JCheckBox cbWorkshopSyntax = new OptionsCheckBox("Workshop Syntax Checker"); private final JCheckBox cbEnforceDeckLegality = new OptionsCheckBox("Deck Conformance"); private final JCheckBox cbPerformanceMode = new OptionsCheckBox("Performance Mode"); + private final JCheckBox cbFilteredHands = new OptionsCheckBox("Filtered Hands"); private final JCheckBox cbImageFetcher = new OptionsCheckBox("Automatically Download Missing Card Art"); private final JCheckBox cbCloneImgSource = new OptionsCheckBox("Clones Use Original Card Art"); private final JCheckBox cbScaleLarger = new OptionsCheckBox("Scale Image Larger"); @@ -97,6 +98,7 @@ public enum VSubmenuPreferences implements IVSubmenu { private final JCheckBox cbFilterLandsByColorId = new OptionsCheckBox("Filter Lands by Color in Activated Abilities"); private final JCheckBox cbShowStormCount = new OptionsCheckBox("Show Storm Count in Prompt Pane"); private final JCheckBox cbRemindOnPriority = new OptionsCheckBox("Visually Alert on Receipt of Priority"); + private final JCheckBox cbUseSentry = new OptionsCheckBox("Automatically submit bug reports."); private final Map shortcutFields = new HashMap<>(); @@ -146,6 +148,9 @@ public enum VSubmenuPreferences implements IVSubmenu { pnlPrefs.add(cbCompactMainMenu, titleConstraints); pnlPrefs.add(new NoteLabel("Enable for a space efficient sidebar that displays only one menu group at a time (RESTART REQUIRED)."), descriptionConstraints); + pnlPrefs.add(cbUseSentry, titleConstraints); + pnlPrefs.add(new NoteLabel("When enabled, automatically submits bug reports to developers."), descriptionConstraints); + pnlPrefs.add(btnResetJavaFutureCompatibilityWarnings, "w 300px!, h 30px!, gap 27px 0 0 20px, span 2 1"); // Gameplay Options @@ -175,6 +180,9 @@ public enum VSubmenuPreferences implements IVSubmenu { pnlPrefs.add(cbPerformanceMode, titleConstraints); pnlPrefs.add(new NoteLabel("Disables additional static abilities checks to speed up the game engine. (Warning: breaks some 'as if had flash' scenarios when casting cards owned by opponents)."), descriptionConstraints); + pnlPrefs.add(cbFilteredHands, titleConstraints); + pnlPrefs.add(new NoteLabel("Generates two starting hands and keeps the one with the closest to average land count for the deck. (Requires restart)"), descriptionConstraints); + pnlPrefs.add(cbCloneImgSource, titleConstraints); pnlPrefs.add(new NoteLabel("When enabled clones will use their original art instead of the cloned card's art."), descriptionConstraints); @@ -499,6 +507,11 @@ public enum VSubmenuPreferences implements IVSubmenu { return cbCompactMainMenu; } + /** @return {@link javax.swing.JCheckBox} */ + public final JCheckBox getCbUseSentry() { + return cbUseSentry; + } + /** @return {@link javax.swing.JCheckBox} */ public final JCheckBox getCbRemoveSmall() { return cbRemoveSmall; @@ -641,6 +654,11 @@ public enum VSubmenuPreferences implements IVSubmenu { return cbPerformanceMode; } + /** @return {@link javax.swing.JCheckBox} */ + public JCheckBox getCbFilteredHands() { + return cbFilteredHands; + } + /** @return {@link javax.swing.JCheckBox} */ public JCheckBox getCbCloneImgSource() { return cbCloneImgSource; diff --git a/forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java b/forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java index 5fa458af87d..6d6b6c6f555 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java +++ b/forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java @@ -143,7 +143,12 @@ public final class CMatchUI this.myDocs = new EnumMap>(EDocID.class); this.myDocs.put(EDocID.CARD_PICTURE, cDetailPicture.getCPicture().getView()); this.myDocs.put(EDocID.CARD_DETAIL, cDetailPicture.getCDetail().getView()); - this.myDocs.put(EDocID.CARD_ANTES, cAntes.getView()); + // only create an ante doc if playing for ante + if (isPreferenceEnabled(FPref.UI_ANTE)) { + this.myDocs.put(EDocID.CARD_ANTES, cAntes.getView()); + } else { + this.myDocs.put(EDocID.CARD_ANTES, null); + } this.myDocs.put(EDocID.REPORT_MESSAGE, getCPrompt().getView()); this.myDocs.put(EDocID.REPORT_STACK, getCStack().getView()); this.myDocs.put(EDocID.REPORT_COMBAT, cCombat.getView()); @@ -158,6 +163,10 @@ public final class CMatchUI } } + private static boolean isPreferenceEnabled(final ForgePreferences.FPref preferenceName) { + return FModel.getPreferences().getPrefBoolean(preferenceName); + } + FScreen getScreen() { return this.screen; } @@ -200,7 +209,7 @@ public final class CMatchUI @Override protected void updateCurrentPlayer(final PlayerView player) { - // Update toggle buttons in dev mdoe panel + // Update toggle buttons in dev mode panel getCDev().update(); } @@ -486,6 +495,9 @@ public final class CMatchUI updatePlayerControl(); KeyboardShortcuts.attachKeyboardShortcuts(this); for (final IVDoc view : myDocs.values()) { + if (view == null) { + continue; + } final ICDoc layoutControl = view.getLayoutControl(); layoutControl.initialize(); layoutControl.update(); diff --git a/forge-gui-desktop/src/main/java/forge/toolbox/FSkin.java b/forge-gui-desktop/src/main/java/forge/toolbox/FSkin.java index 0b04b0278ae..c9d86367d8a 100644 --- a/forge-gui-desktop/src/main/java/forge/toolbox/FSkin.java +++ b/forge-gui-desktop/src/main/java/forge/toolbox/FSkin.java @@ -1274,6 +1274,11 @@ public class FSkin { addEncodingSymbol("P/B", FSkinProp.IMG_MANA_PHRYX_B); addEncodingSymbol("P/R", FSkinProp.IMG_MANA_PHRYX_R); addEncodingSymbol("P/G", FSkinProp.IMG_MANA_PHRYX_G); + addEncodingSymbol("W/P", FSkinProp.IMG_MANA_PHRYX_W); + addEncodingSymbol("U/P", FSkinProp.IMG_MANA_PHRYX_U); + addEncodingSymbol("B/P", FSkinProp.IMG_MANA_PHRYX_B); + addEncodingSymbol("R/P", FSkinProp.IMG_MANA_PHRYX_R); + addEncodingSymbol("G/P", FSkinProp.IMG_MANA_PHRYX_G); for (int i = 0; i <= 20; i++) { addEncodingSymbol(String.valueOf(i), FSkinProp.valueOf("IMG_MANA_" + i)); } diff --git a/forge-gui-desktop/src/main/java/forge/view/Main.java b/forge-gui-desktop/src/main/java/forge/view/Main.java index a51f3fe6461..143b21506b2 100644 --- a/forge-gui-desktop/src/main/java/forge/view/Main.java +++ b/forge-gui-desktop/src/main/java/forge/view/Main.java @@ -22,6 +22,9 @@ import forge.GuiDesktop; import forge.Singletons; import forge.card.CardReaderExperiments; import forge.error.ExceptionHandler; +import forge.util.BuildInfo; +import io.sentry.Sentry; +import io.sentry.SentryClient; /** * Main class for Forge's swing application view. @@ -31,6 +34,12 @@ public final class Main { * Main entry point for Forge */ public static void main(final String[] args) { + Sentry.init(); + SentryClient sentryClient = Sentry.getStoredClient(); + sentryClient.setRelease(BuildInfo.getVersionString()); + sentryClient.setEnvironment(System.getProperty("os.name")); + sentryClient.addTag("Java Version", System.getProperty("java.version")); + // HACK - temporary solution to "Comparison method violates it's general contract!" crash System.setProperty("java.util.Arrays.useLegacyMergeSort", "true"); diff --git a/forge-gui-desktop/src/test/java/forge/ai/simulation/GameSimulatorTest.java b/forge-gui-desktop/src/test/java/forge/ai/simulation/GameSimulatorTest.java index 7fea93ce0e4..8508b594ac1 100644 --- a/forge-gui-desktop/src/test/java/forge/ai/simulation/GameSimulatorTest.java +++ b/forge-gui-desktop/src/test/java/forge/ai/simulation/GameSimulatorTest.java @@ -215,7 +215,7 @@ public class GameSimulatorTest extends SimulationTestCase { Game game = initAndCreateGame(); Player p = game.getPlayers().get(1); Card sorin = addCard("Sorin, Solemn Visitor", p); - sorin.addCounter(CounterType.LOYALTY, 5, sorin, false); + sorin.addCounter(CounterType.LOYALTY, 5, p, false); game.getPhaseHandler().devModeSet(PhaseType.MAIN2, p); game.getAction().checkStateEffects(true); @@ -259,7 +259,7 @@ public class GameSimulatorTest extends SimulationTestCase { String bearCardName = "Runeclaw Bear"; addCard(bearCardName, p); Card gideon = addCard("Gideon, Ally of Zendikar", p); - gideon.addCounter(CounterType.LOYALTY, 4, gideon, false); + gideon.addCounter(CounterType.LOYALTY, 4, p, false); game.getPhaseHandler().devModeSet(PhaseType.MAIN2, p); game.getAction().checkStateEffects(true); @@ -378,7 +378,7 @@ public class GameSimulatorTest extends SimulationTestCase { Game game = initAndCreateGame(); Player p = game.getPlayers().get(1); Card sarkhan = addCard(sarkhanCardName, p); - sarkhan.addCounter(CounterType.LOYALTY, 4, sarkhan, false); + sarkhan.addCounter(CounterType.LOYALTY, 4, p, false); game.getPhaseHandler().devModeSet(PhaseType.MAIN2, p); game.getAction().checkStateEffects(true); @@ -412,7 +412,7 @@ public class GameSimulatorTest extends SimulationTestCase { addCard(ornithoperCardName, p); addCard(bearCardName, p); Card ajani = addCard(ajaniCardName, p); - ajani.addCounter(CounterType.LOYALTY, 4, ajani, false); + ajani.addCounter(CounterType.LOYALTY, 4, p, false); game.getPhaseHandler().devModeSet(PhaseType.MAIN2, p); game.getAction().checkStateEffects(true); @@ -443,7 +443,7 @@ public class GameSimulatorTest extends SimulationTestCase { SpellAbility boltSA = boltCard.getFirstSpellAbility(); Card ajani = addCard(ajaniCardName, p); - ajani.addCounter(CounterType.LOYALTY, 8, ajani, false); + ajani.addCounter(CounterType.LOYALTY, 8, p, false); game.getPhaseHandler().devModeSet(PhaseType.MAIN2, p); game.getAction().checkStateEffects(true); @@ -493,7 +493,7 @@ public class GameSimulatorTest extends SimulationTestCase { addCard("Swamp", p); addCard("Swamp", p); Card depths = addCard("Dark Depths", p); - depths.addCounter(CounterType.ICE, 10, depths, false); + depths.addCounter(CounterType.ICE, 10, p, false); Card thespian = addCard("Thespian's Stage", p); game.getPhaseHandler().devModeSet(PhaseType.MAIN2, p); game.getAction().checkStateEffects(true); diff --git a/forge-gui-desktop/src/test/java/forge/ai/simulation/SpellAbilityPickerTest.java b/forge-gui-desktop/src/test/java/forge/ai/simulation/SpellAbilityPickerTest.java index 0975b9b0cf5..50c5977df39 100644 --- a/forge-gui-desktop/src/test/java/forge/ai/simulation/SpellAbilityPickerTest.java +++ b/forge-gui-desktop/src/test/java/forge/ai/simulation/SpellAbilityPickerTest.java @@ -79,7 +79,7 @@ public class SpellAbilityPickerTest extends SimulationTestCase { Plan plan = picker.getPlan(); assertEquals(2, plan.getDecisions().size()); assertEquals("Play land Mountain", plan.getDecisions().get(0).saRef.toString()); - assertEquals("Shock deals 2 damage to target creature or player.", plan.getDecisions().get(1).saRef.toString()); + assertEquals("Shock deals 2 damage to any target.", plan.getDecisions().get(1).saRef.toString()); assertTrue(plan.getDecisions().get(1).targets.toString().contains("Runeclaw Bear")); } @@ -266,7 +266,7 @@ public class SpellAbilityPickerTest extends SimulationTestCase { Plan plan = picker.getPlan(); assertEquals(3, plan.getDecisions().size()); assertEquals("Play land Mountain", plan.getDecisions().get(1).saRef.toString()); - assertEquals("Lightning Bolt deals 3 damage to target creature or player.", plan.getDecisions().get(2).saRef.toString()); + assertEquals("Lightning Bolt deals 3 damage to any target.", plan.getDecisions().get(2).saRef.toString()); } public void testPlayRememberedCardsSpell() { @@ -294,7 +294,7 @@ public class SpellAbilityPickerTest extends SimulationTestCase { Plan plan = picker.getPlan(); assertEquals(2, plan.getDecisions().size()); String saDesc = plan.getDecisions().get(1).saRef.toString(); - assertTrue(saDesc, saDesc.startsWith("Lightning Bolt deals 3 damage to target creature or player.")); + assertTrue(saDesc, saDesc.startsWith("Lightning Bolt deals 3 damage to any target.")); } public void testPlayingPumpSpellsAfterBlocks() { diff --git a/forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/PlayerControllerForTests.java b/forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/PlayerControllerForTests.java index 0f237eadf20..4b0afe447b1 100644 --- a/forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/PlayerControllerForTests.java +++ b/forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/PlayerControllerForTests.java @@ -167,7 +167,8 @@ public class PlayerControllerForTests extends PlayerController { } @Override - public SpellAbility chooseSingleSpellForEffect(List spells, SpellAbility sa, String title) { + public SpellAbility chooseSingleSpellForEffect(List spells, SpellAbility sa, String title, + Map params) { return chooseItem(spells); } @@ -245,6 +246,11 @@ public class PlayerControllerForTests extends PlayerController { return ImmutablePair.of(topN, null); } + @Override + public ImmutablePair arrangeForSurveil(CardCollection topN) { + return ImmutablePair.of(topN, null); + } + @Override public boolean willPutCardOnTop(Card c) { return false; diff --git a/forge-gui-desktop/src/test/java/forge/planarconquestgenerate/PlanarConquestCommanderGeneraterGA.java b/forge-gui-desktop/src/test/java/forge/planarconquestgenerate/PlanarConquestCommanderGeneraterGA.java index 9931f6e98a1..3eedba838c6 100644 --- a/forge-gui-desktop/src/test/java/forge/planarconquestgenerate/PlanarConquestCommanderGeneraterGA.java +++ b/forge-gui-desktop/src/test/java/forge/planarconquestgenerate/PlanarConquestCommanderGeneraterGA.java @@ -6,7 +6,6 @@ import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import forge.GuiBase; import forge.GuiDesktop; -import forge.LobbyPlayer; import forge.StaticData; import forge.card.CardRulesPredicates; import forge.deck.*; @@ -14,27 +13,15 @@ import forge.deck.io.DeckStorage; import forge.game.GameFormat; import forge.game.GameRules; import forge.game.GameType; -import forge.game.Match; -import forge.game.player.RegisteredPlayer; import forge.item.PaperCard; import forge.limited.CardRanker; import forge.model.FModel; -import forge.player.GamePlayerUtil; import forge.properties.ForgeConstants; import forge.properties.ForgePreferences; -import forge.tournament.system.AbstractTournament; -import forge.tournament.system.TournamentPairing; -import forge.tournament.system.TournamentPlayer; -import forge.tournament.system.TournamentSwiss; -import forge.util.AbstractGeneticAlgorithm; -import forge.util.MyRandom; -import forge.util.TextUtil; -import forge.view.SimulateMatch; import java.io.File; import java.util.ArrayList; import java.util.List; -import java.util.Map; public class PlanarConquestCommanderGeneraterGA extends PlanarConquestGeneraterGA { diff --git a/forge-gui-desktop/src/test/java/forge/planarconquestgenerate/PlanarConquestGeneraterGAStandard.java b/forge-gui-desktop/src/test/java/forge/planarconquestgenerate/PlanarConquestGeneraterGAStandard.java index 649c4544c33..4d6a459d1d5 100644 --- a/forge-gui-desktop/src/test/java/forge/planarconquestgenerate/PlanarConquestGeneraterGAStandard.java +++ b/forge-gui-desktop/src/test/java/forge/planarconquestgenerate/PlanarConquestGeneraterGAStandard.java @@ -1,40 +1,19 @@ package forge.planarconquestgenerate; import com.google.common.base.Function; -import com.google.common.base.Predicates; -import com.google.common.collect.Iterables; -import com.google.common.collect.Lists; import forge.GuiBase; import forge.GuiDesktop; -import forge.LobbyPlayer; -import forge.StaticData; -import forge.card.CardRulesPredicates; import forge.deck.*; import forge.deck.io.DeckStorage; import forge.game.GameFormat; import forge.game.GameRules; import forge.game.GameType; -import forge.game.Match; -import forge.game.player.RegisteredPlayer; import forge.item.PaperCard; -import forge.limited.CardRanker; import forge.model.FModel; -import forge.player.GamePlayerUtil; import forge.properties.ForgeConstants; import forge.properties.ForgePreferences; -import forge.tournament.system.AbstractTournament; -import forge.tournament.system.TournamentPairing; -import forge.tournament.system.TournamentPlayer; -import forge.tournament.system.TournamentSwiss; -import forge.util.AbstractGeneticAlgorithm; -import forge.util.MyRandom; -import forge.util.TextUtil; -import forge.view.SimulateMatch; - import java.io.File; -import java.util.ArrayList; import java.util.List; -import java.util.Map; public class PlanarConquestGeneraterGAStandard extends PlanarConquestGeneraterGA { diff --git a/forge-gui-ios/pom.xml b/forge-gui-ios/pom.xml index c104e9eca52..a2d025b3e56 100644 --- a/forge-gui-ios/pom.xml +++ b/forge-gui-ios/pom.xml @@ -6,13 +6,13 @@ jar -Xms128m -Xmx2048m - 1.6.10.001 + 1.6.15.003 forge forge - 1.6.11-SNAPSHOT + 1.6.16-SNAPSHOT forge-gui-ios diff --git a/forge-gui-mobile-dev/pom.xml b/forge-gui-mobile-dev/pom.xml index 3e5e7bf7331..3e186468f97 100644 --- a/forge-gui-mobile-dev/pom.xml +++ b/forge-gui-mobile-dev/pom.xml @@ -4,7 +4,7 @@ forge forge - 1.6.11-SNAPSHOT + 1.6.16-SNAPSHOT forge-gui-mobile-dev @@ -52,6 +52,28 @@ + + org.apache.maven.plugins + maven-checkstyle-plugin + 3.0.0 + + + checkstyle-validation + validate + + ../checkstyle.xml + true + UTF-8 + true + true + true + + + check + + + + diff --git a/forge-gui-mobile-dev/sentry.properties b/forge-gui-mobile-dev/sentry.properties new file mode 100644 index 00000000000..683ff25e08a --- /dev/null +++ b/forge-gui-mobile-dev/sentry.properties @@ -0,0 +1,14 @@ +# ideally this should be using HTTPS, but this is fine for now +dsn=http://a0b8dbad9b8a49cfa51bf65d462e8dae@sentry.cardforge.org:9000/2 +stacktrace.app.packages=forge + +# where to store events if offline or can't reach the above server +buffer.dir=sentry-events +buffer.size=100 + +# allow ample time for graceful shutdown +buffer.shutdowntimeout=5000 +async.shutdowntimeout=5000 + +# allow longer messages +maxmessagelength=1500 \ No newline at end of file diff --git a/forge-gui-mobile/pom.xml b/forge-gui-mobile/pom.xml index ce45fc81329..04ec8084755 100644 --- a/forge-gui-mobile/pom.xml +++ b/forge-gui-mobile/pom.xml @@ -4,7 +4,7 @@ forge forge - 1.6.11-SNAPSHOT + 1.6.16-SNAPSHOT forge-gui-mobile diff --git a/forge-gui-mobile/src/forge/Forge.java b/forge-gui-mobile/src/forge/Forge.java index 7cb9bfd0474..3c3d09cb743 100644 --- a/forge-gui-mobile/src/forge/Forge.java +++ b/forge-gui-mobile/src/forge/Forge.java @@ -34,7 +34,7 @@ import java.util.List; import java.util.Stack; public class Forge implements ApplicationListener { - public static final String CURRENT_VERSION = "1.6.10.001"; + public static final String CURRENT_VERSION = "1.6.15.003"; private static final ApplicationListener app = new Forge(); private static Clipboard clipboard; diff --git a/forge-gui-mobile/src/forge/assets/TextRenderer.java b/forge-gui-mobile/src/forge/assets/TextRenderer.java index 316a719f955..f2fb545507d 100644 --- a/forge-gui-mobile/src/forge/assets/TextRenderer.java +++ b/forge-gui-mobile/src/forge/assets/TextRenderer.java @@ -45,6 +45,11 @@ public class TextRenderer { symbolLookup.put("P/B", FSkinImage.MANA_PHRYX_B); symbolLookup.put("P/R", FSkinImage.MANA_PHRYX_R); symbolLookup.put("P/G", FSkinImage.MANA_PHRYX_G); + symbolLookup.put("W/P", FSkinImage.MANA_PHRYX_W); + symbolLookup.put("U/P", FSkinImage.MANA_PHRYX_U); + symbolLookup.put("B/P", FSkinImage.MANA_PHRYX_B); + symbolLookup.put("R/P", FSkinImage.MANA_PHRYX_R); + symbolLookup.put("G/P", FSkinImage.MANA_PHRYX_G); for (int i = 0; i <= 20; i++) { symbolLookup.put(String.valueOf(i), FSkinImage.valueOf("MANA_" + i)); } diff --git a/forge-gui-mobile/src/forge/card/CardZoom.java b/forge-gui-mobile/src/forge/card/CardZoom.java index 49ec9b990b1..7c3391f319f 100644 --- a/forge-gui-mobile/src/forge/card/CardZoom.java +++ b/forge-gui-mobile/src/forge/card/CardZoom.java @@ -10,6 +10,7 @@ import com.badlogic.gdx.math.Rectangle; import forge.Forge; import forge.Graphics; import forge.assets.FSkinImage; +import forge.deck.ArchetypeDeckGenerator; import forge.deck.CardThemedDeckGenerator; import forge.deck.CommanderDeckGenerator; import forge.deck.DeckProxy; @@ -131,6 +132,8 @@ public class CardZoom extends FOverlay { return CardView.getCardForUi(((CardThemedDeckGenerator)item).getPaperCard()); }else if (item instanceof CommanderDeckGenerator){ return CardView.getCardForUi(((CommanderDeckGenerator)item).getPaperCard()); + }else if (item instanceof ArchetypeDeckGenerator){ + return CardView.getCardForUi(((ArchetypeDeckGenerator)item).getPaperCard()); }else{ DeckProxy deck = ((DeckProxy)item); return new CardView(-1, null, deck.getName(), null, deck.getImageKey(false)); diff --git a/forge-gui-mobile/src/forge/deck/FDeckChooser.java b/forge-gui-mobile/src/forge/deck/FDeckChooser.java index 1415085bec7..74b0729000d 100644 --- a/forge-gui-mobile/src/forge/deck/FDeckChooser.java +++ b/forge-gui-mobile/src/forge/deck/FDeckChooser.java @@ -147,7 +147,8 @@ public class FDeckChooser extends FScreen { @Override public void handleEvent(FEvent e) { if (selectedDeckType != DeckType.STANDARD_COLOR_DECK && selectedDeckType != DeckType.STANDARD_CARDGEN_DECK - && selectedDeckType != DeckType.MODERN_CARDGEN_DECK && selectedDeckType != DeckType.MODERN_COLOR_DECK && + && selectedDeckType != DeckType.MODERN_CARDGEN_DECK && selectedDeckType != DeckType.LEGACY_CARDGEN_DECK + && selectedDeckType != DeckType.VINTAGE_CARDGEN_DECK && selectedDeckType != DeckType.MODERN_COLOR_DECK && selectedDeckType != DeckType.COLOR_DECK && selectedDeckType != DeckType.THEME_DECK && selectedDeckType != DeckType.RANDOM_COMMANDER_DECK && selectedDeckType != DeckType.RANDOM_CARDGEN_COMMANDER_DECK) { FDeckViewer.show(getDeck()); @@ -172,6 +173,12 @@ public class FDeckChooser extends FScreen { else if (selectedDeckType == DeckType.MODERN_CARDGEN_DECK){ DeckgenUtil.randomSelect(lstDecks); } + else if (selectedDeckType == DeckType.LEGACY_CARDGEN_DECK){ + DeckgenUtil.randomSelect(lstDecks); + } + else if (selectedDeckType == DeckType.VINTAGE_CARDGEN_DECK){ + DeckgenUtil.randomSelect(lstDecks); + } else { DeckgenUtil.randomSelect(lstDecks); } @@ -280,6 +287,8 @@ public class FDeckChooser extends FScreen { case RANDOM_CARDGEN_COMMANDER_DECK: case RANDOM_COMMANDER_DECK: case MODERN_CARDGEN_DECK: + case LEGACY_CARDGEN_DECK: + case VINTAGE_CARDGEN_DECK: case MODERN_COLOR_DECK: case THEME_DECK: case RANDOM_DECK: @@ -459,6 +468,8 @@ public class FDeckChooser extends FScreen { if(FModel.isdeckGenMatrixLoaded()) { cmbDeckTypes.addItem(DeckType.STANDARD_CARDGEN_DECK); cmbDeckTypes.addItem(DeckType.MODERN_CARDGEN_DECK); + cmbDeckTypes.addItem(DeckType.LEGACY_CARDGEN_DECK); + cmbDeckTypes.addItem(DeckType.VINTAGE_CARDGEN_DECK); } cmbDeckTypes.addItem(DeckType.MODERN_COLOR_DECK); cmbDeckTypes.addItem(DeckType.THEME_DECK); @@ -654,7 +665,7 @@ public class FDeckChooser extends FScreen { maxSelections = 1; pool= new ArrayList<>(); if(FModel.isdeckGenMatrixLoaded()) { - pool = CardThemedDeckGenerator.getMatrixDecks(FModel.getFormats().getStandard(), isAi); + pool = ArchetypeDeckGenerator.getMatrixDecks(FModel.getFormats().getStandard(), isAi); } config = ItemManagerConfig.STRING_ONLY; break; @@ -662,10 +673,27 @@ public class FDeckChooser extends FScreen { maxSelections = 1; pool= new ArrayList<>(); if(FModel.isdeckGenMatrixLoaded()) { - pool = CardThemedDeckGenerator.getMatrixDecks(FModel.getFormats().getModern(), isAi); + pool = ArchetypeDeckGenerator.getMatrixDecks(FModel.getFormats().getModern(), isAi); } config = ItemManagerConfig.STRING_ONLY; break; + case LEGACY_CARDGEN_DECK: + maxSelections = 1; + pool= new ArrayList<>(); + if(FModel.isdeckGenMatrixLoaded()) { + pool = ArchetypeDeckGenerator.getMatrixDecks(FModel.getFormats().get("Legacy"), isAi); + } + config = ItemManagerConfig.STRING_ONLY; + break; + case VINTAGE_CARDGEN_DECK: + maxSelections = 1; + pool= new ArrayList<>(); + if(FModel.isdeckGenMatrixLoaded()) { + pool = ArchetypeDeckGenerator.getMatrixDecks(FModel.getFormats().get("Vintage"), isAi); + } + config = ItemManagerConfig.STRING_ONLY; + break; + case MODERN_COLOR_DECK: maxSelections = 3; pool = ColorDeckGenerator.getColorDecks(lstDecks, FModel.getFormats().getModern().getFilterPrinted(), isAi); @@ -1013,12 +1041,16 @@ public class FDeckChooser extends FScreen { DeckType.STANDARD_CARDGEN_DECK, DeckType.MODERN_COLOR_DECK, DeckType.MODERN_CARDGEN_DECK, + DeckType.LEGACY_CARDGEN_DECK, + DeckType.VINTAGE_CARDGEN_DECK, DeckType.THEME_DECK, DeckType.NET_DECK ); if (!FModel.isdeckGenMatrixLoaded()) { deckTypes.remove(DeckType.STANDARD_CARDGEN_DECK); deckTypes.remove(DeckType.MODERN_CARDGEN_DECK); + deckTypes.remove(DeckType.LEGACY_CARDGEN_DECK); + deckTypes.remove(DeckType.VINTAGE_CARDGEN_DECK); } ListChooser chooser = new ListChooser( diff --git a/forge-gui-mobile/src/forge/deck/FDeckEditor.java b/forge-gui-mobile/src/forge/deck/FDeckEditor.java index 607d697e53c..95e9ebb0da1 100644 --- a/forge-gui-mobile/src/forge/deck/FDeckEditor.java +++ b/forge-gui-mobile/src/forge/deck/FDeckEditor.java @@ -1490,15 +1490,6 @@ public class FDeckEditor extends TabPageScreen { modelPath = ""; } - public Deck getDeck() { - if (model == null) { return null; } - - if (model instanceof Deck) { - return (Deck) model; - } - return ((DeckGroup) model).getHumanDeck(); - } - public T getModel() { return model; } @@ -1537,7 +1528,7 @@ public class FDeckEditor extends TabPageScreen { modelPath = ""; setSaved(true); } - editor.setDeck(getDeck()); + editor.setDeck(model.getHumanDeck()); } private boolean isModelInSyncWithFolder() { @@ -1661,7 +1652,7 @@ public class FDeckEditor extends TabPageScreen { default: break; } - editor.setDeck(getDeck()); + editor.setDeck(model.getHumanDeck()); if (editor.saveHandler != null) { editor.saveHandler.handleEvent(new FEvent(editor, FEventType.SAVE)); } diff --git a/forge-gui-mobile/src/forge/error/BugReportDialog.java b/forge-gui-mobile/src/forge/error/BugReportDialog.java index aadff53dea2..807a61f6e38 100644 --- a/forge-gui-mobile/src/forge/error/BugReportDialog.java +++ b/forge-gui-mobile/src/forge/error/BugReportDialog.java @@ -29,11 +29,11 @@ public class BugReportDialog extends FScreen { //use screen rather than dialog s Forge.openScreen(new BugReportDialog(title, text, showExitAppBtn)); } - private final FTextArea lblHeader = add(new FTextArea(false, BugReporter.HELP_TEXT)); + private final FTextArea lblHeader = add(new FTextArea(false, "Report Bug")); private final TemplateView tvDetails; private final FButton btnReport = add(new FButton(BugReporter.REPORT)); private final FButton btnSave = add(new FButton(BugReporter.SAVE)); - private final FButton btnContinue = add(new FButton(BugReporter.CONTINUE)); + private final FButton btnDiscard = add(new FButton(BugReporter.DISCARD)); private final FButton btnExit = add(new FButton(BugReporter.EXIT)); private BugReportDialog(String title, String text0, boolean showExitAppBtn) { @@ -43,7 +43,8 @@ public class BugReportDialog extends FScreen { //use screen rather than dialog s btnReport.setCommand(new FEventHandler() { @Override public void handleEvent(FEvent e) { - BugReporter.copyAndGoToForums(tvDetails.text); + BugReporter.sendSentry(); + Forge.back(); } }); btnSave.setCommand(new FEventHandler() { @@ -52,7 +53,7 @@ public class BugReportDialog extends FScreen { //use screen rather than dialog s BugReporter.saveToFile(tvDetails.text); } }); - btnContinue.setCommand(new FEventHandler() { + btnDiscard.setCommand(new FEventHandler() { @Override public void handleEvent(FEvent e) { Forge.back(); @@ -115,11 +116,11 @@ public class BugReportDialog extends FScreen { //use screen rather than dialog s y += buttonHeight + PADDING; } if (btnExit.isVisible()) { - btnContinue.setBounds(x, y, buttonWidth, buttonHeight); + btnDiscard.setBounds(x, y, buttonWidth, buttonHeight); btnExit.setBounds(x + buttonWidth + PADDING, y, buttonWidth, buttonHeight); } else { - btnContinue.setBounds(x, y, 2 * buttonWidth + PADDING, buttonHeight); + btnDiscard.setBounds(x, y, 2 * buttonWidth + PADDING, buttonHeight); } } diff --git a/forge-gui-mobile/src/forge/itemmanager/views/ImageView.java b/forge-gui-mobile/src/forge/itemmanager/views/ImageView.java index 999a62b16e0..bf0ab8cd10b 100644 --- a/forge-gui-mobile/src/forge/itemmanager/views/ImageView.java +++ b/forge-gui-mobile/src/forge/itemmanager/views/ImageView.java @@ -11,10 +11,7 @@ import forge.assets.ImageCache; import forge.card.CardRenderer; import forge.card.CardRenderer.CardStackPosition; import forge.card.CardZoom; -import forge.deck.CardThemedDeckGenerator; -import forge.deck.CommanderDeckGenerator; -import forge.deck.DeckProxy; -import forge.deck.FDeckViewer; +import forge.deck.*; import forge.item.InventoryItem; import forge.item.PaperCard; import forge.itemmanager.ColumnDef; @@ -864,7 +861,8 @@ public class ImageView extends ItemView { public boolean longPress(float x, float y) { ItemInfo item = getItemAtPoint(x + getLeft(), y + getTop()); if (item != null) { - if(item.getKey() instanceof CardThemedDeckGenerator || item.getKey() instanceof CommanderDeckGenerator){ + if(item.getKey() instanceof CardThemedDeckGenerator || item.getKey() instanceof CommanderDeckGenerator + || item.getKey() instanceof ArchetypeDeckGenerator){ FDeckViewer.show(((DeckProxy)item.getKey()).getDeck()); return true; } diff --git a/forge-gui-mobile/src/forge/screens/constructed/LobbyScreen.java b/forge-gui-mobile/src/forge/screens/constructed/LobbyScreen.java index b43313c8f98..c486061be93 100644 --- a/forge-gui-mobile/src/forge/screens/constructed/LobbyScreen.java +++ b/forge-gui-mobile/src/forge/screens/constructed/LobbyScreen.java @@ -193,6 +193,8 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView { btnStart.setEnabled(hasControl); lblVariants.setEnabled(hasControl); cbVariants.setEnabled(hasControl); + lblPlayers.setEnabled(hasControl); + cbPlayerCount.setEnabled(hasControl); while (lobby.getNumberOfSlots() < getNumPlayers()){ lobby.addSlot(); } @@ -432,6 +434,8 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView { switch (selectedDeckType){ case STANDARD_CARDGEN_DECK: case MODERN_CARDGEN_DECK: + case LEGACY_CARDGEN_DECK: + case VINTAGE_CARDGEN_DECK: case COLOR_DECK: case STANDARD_COLOR_DECK: case MODERN_COLOR_DECK: @@ -502,12 +506,17 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView { isNewPanel = true; } + if (i == 0) { + slot.setIsDevMode(prefs.getPrefBoolean(FPref.DEV_MODE_ENABLED)); + } + final LobbySlotType type = slot.getType(); panel.setType(type); panel.setPlayerName(slot.getName()); panel.setAvatarIndex(slot.getAvatarIndex()); panel.setTeam(slot.getTeam()); panel.setIsReady(slot.isReady()); + panel.setIsDevMode(slot.isDevMode()); panel.setIsArchenemy(slot.isArchenemy()); panel.setUseAiSimulation(slot.getAiOptions().contains(AIOption.USE_SIMULATION)); panel.setMayEdit(lobby.mayEdit(i)); @@ -607,6 +616,15 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView { firePlayerChangeListener(index); } + void setDevMode(final int index) { + int playerCount = lobby.getNumberOfSlots(); + // clear ready for everyone + for (int i = 0; i < playerCount; i++) { + final PlayerPanel panel = playerPanels.get(i); + panel.setIsReady(false); + firePlayerChangeListener(i); + } + } void firePlayerChangeListener(final int index) { if (playerChangeListener != null) { playerChangeListener.update(index, getSlot(index)); @@ -622,7 +640,7 @@ public abstract class LobbyScreen extends LaunchScreen implements ILobbyView { private UpdateLobbyPlayerEvent getSlot(final int index) { final PlayerPanel panel = playerPanels.get(index); - return UpdateLobbyPlayerEvent.create(panel.getType(), panel.getPlayerName(), panel.getAvatarIndex(), panel.getTeam(), panel.isArchenemy(), panel.isReady(), panel.getAiOptions()); + return UpdateLobbyPlayerEvent.create(panel.getType(), panel.getPlayerName(), panel.getAvatarIndex(), panel.getTeam(), panel.isArchenemy(), panel.isReady(), panel.isDevMode(), panel.getAiOptions()); } public List getPlayerPanels() { diff --git a/forge-gui-mobile/src/forge/screens/constructed/PlayerPanel.java b/forge-gui-mobile/src/forge/screens/constructed/PlayerPanel.java index efa0d5eaca3..f712bf87370 100644 --- a/forge-gui-mobile/src/forge/screens/constructed/PlayerPanel.java +++ b/forge-gui-mobile/src/forge/screens/constructed/PlayerPanel.java @@ -63,6 +63,7 @@ public class PlayerPanel extends FContainer { private final FTextField txtPlayerName = new FTextField("Player name"); private final FToggleSwitch humanAiSwitch; + private final FToggleSwitch devModeSwitch; private FComboBox cbTeam = new FComboBox(); private FComboBox cbArchenemyTeam = new FComboBox(); @@ -96,6 +97,11 @@ public class PlayerPanel extends FContainer { setPlayerName(slot.getName()); setAvatarIndex(slot.getAvatarIndex()); + devModeSwitch = new FToggleSwitch("Normal", "Dev Mode"); + devModeSwitch.setVisible(isNetworkHost()); + + cbTeam.setEnabled(true); + btnDeck.setEnabled(false); //disable deck button until done loading decks boolean isAi = isAi(); @@ -186,6 +192,10 @@ public class PlayerPanel extends FContainer { add(cbTeam); add(cbArchenemyTeam); + if (isNetworkHost()) { + devModeSwitch.setChangedHandler(devModeSwitched); + add(devModeSwitch); + } add(btnDeck); btnDeck.setCommand(new FEventHandler() { @Override @@ -250,9 +260,6 @@ public class PlayerPanel extends FContainer { setMayEdit(false); } setMayControl(mayControl0); - - //disable team combo boxes for now - cbTeam.setEnabled(true); } public void initialize(FPref savedStateSetting, FPref savedStateSettingCommander, FPref savedStateSettingTinyLeader, FPref savedStateSettingBrawl, DeckType defaultDeckType) { @@ -292,6 +299,12 @@ public class PlayerPanel extends FContainer { cbTeam.setBounds(x, y, w, fieldHeight); } + if (devModeSwitch.isVisible()) { + y += dy; + devModeSwitch.setSize(devModeSwitch.getAutoSizeWidth(fieldHeight), fieldHeight); + devModeSwitch.setPosition(0, y); + } + y += dy; x = PADDING; w = width - 2 * PADDING; @@ -341,6 +354,9 @@ public class PlayerPanel extends FContainer { if (btnVanguardAvatar.isVisible()) { rows++; } + if (devModeSwitch.isVisible()) { + rows++; + } return rows * (txtPlayerName.getHeight() + PADDING) + PADDING; } @@ -374,6 +390,20 @@ public class PlayerPanel extends FContainer { } }; + private final FEventHandler devModeSwitched = new FEventHandler() { + @Override + public void handleEvent(FEvent e) { + boolean toggled = devModeSwitch.isToggled(); + prefs.setPref(FPref.DEV_MODE_ENABLED, String.valueOf(toggled)); + ForgePreferences.DEV_MODE = toggled; + + // ensure that preferences panel reflects the change + prefs.save(); + + screen.setDevMode(index); + } + }; + private void onIsAiChanged(boolean isAi) { deckChooser.setIsAi(isAi); lstCommanderDecks.setIsAi(isAi); @@ -489,6 +519,10 @@ public class PlayerPanel extends FContainer { btnVanguardAvatar.setVisible(isVanguardApplied && mayEdit); } + public boolean isNetworkHost() { + return allowNetworking && index == 0; + } + public boolean isAi() { return type == LobbySlotType.AI; } @@ -507,7 +541,7 @@ public class PlayerPanel extends FContainer { for (int i = 1; i <= LobbyScreen.MAX_PLAYERS; i++) { cbTeam.addItem("Team " + i); } - cbTeam.setEnabled(true); + cbTeam.setEnabled(mayEdit); } private FEventHandler teamChangedHandler = new FEventHandler() { @@ -696,6 +730,10 @@ public class PlayerPanel extends FContainer { txtPlayerName.setEnabled(mayEdit); nameRandomiser.setEnabled(mayEdit); humanAiSwitch.setEnabled(mayEdit); + cbTeam.setEnabled(mayEdit); + if (devModeSwitch != null) { + devModeSwitch.setEnabled(mayEdit); + } updateVariantControlsVisibility(); //if panel has height already, ensure height updated to account for button visibility changes @@ -809,4 +847,13 @@ public class PlayerPanel extends FContainer { } }); } + + public boolean isDevMode() { + return devModeSwitch.isVisible() && devModeSwitch.isToggled(); + } + public void setIsDevMode(final boolean isDevMode) { + if (devModeSwitch.isVisible()) { + devModeSwitch.setToggled(isDevMode); + } + } } diff --git a/forge-gui-mobile/src/forge/screens/gauntlet/NewGauntletScreen.java b/forge-gui-mobile/src/forge/screens/gauntlet/NewGauntletScreen.java index ec53b6184ca..869730c6237 100644 --- a/forge-gui-mobile/src/forge/screens/gauntlet/NewGauntletScreen.java +++ b/forge-gui-mobile/src/forge/screens/gauntlet/NewGauntletScreen.java @@ -82,7 +82,7 @@ public class NewGauntletScreen extends LaunchScreen { if (numOpponents == null) { return; } ListChooser chooser = new ListChooser( - "Choose allowed deck types for opponents", 0, 9, Arrays.asList(new DeckType[] { + "Choose allowed deck types for opponents", 0, 11, Arrays.asList(new DeckType[] { DeckType.CUSTOM_DECK, DeckType.PRECONSTRUCTED_DECK, DeckType.QUEST_OPPONENT_DECK, @@ -91,6 +91,8 @@ public class NewGauntletScreen extends LaunchScreen { DeckType.STANDARD_CARDGEN_DECK, DeckType.MODERN_COLOR_DECK, DeckType.MODERN_CARDGEN_DECK, + DeckType.LEGACY_CARDGEN_DECK, + DeckType.VINTAGE_CARDGEN_DECK, DeckType.THEME_DECK }), null, new Callback>() { @Override diff --git a/forge-gui-mobile/src/forge/screens/match/MatchController.java b/forge-gui-mobile/src/forge/screens/match/MatchController.java index 43977edb3c3..cc0af8a78e0 100644 --- a/forge-gui-mobile/src/forge/screens/match/MatchController.java +++ b/forge-gui-mobile/src/forge/screens/match/MatchController.java @@ -506,7 +506,7 @@ public class MatchController extends AbstractGuiGame { @Override public List chooseEntitiesForEffect(String title, List optionList, DelayedReveal delayedReveal) { - return SGuiChoose.order(title, "Selected", (List) optionList); + return SGuiChoose.order(title, "Selected", 0, -1, (List) optionList, null); } @Override diff --git a/forge-gui-mobile/src/forge/screens/quest/LoadQuestScreen.java b/forge-gui-mobile/src/forge/screens/quest/LoadQuestScreen.java index c865428965e..4fe57997b60 100644 --- a/forge-gui-mobile/src/forge/screens/quest/LoadQuestScreen.java +++ b/forge-gui-mobile/src/forge/screens/quest/LoadQuestScreen.java @@ -2,6 +2,7 @@ package forge.screens.quest; import java.io.File; import java.io.FilenameFilter; +import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; @@ -104,7 +105,13 @@ public class LoadQuestScreen extends LaunchScreen { File[] arrFiles = dirQuests.listFiles(takeDatFiles); Map arrQuests = new HashMap(); for (File f : arrFiles) { - arrQuests.put(f.getName(), QuestDataIO.loadData(f)); + try { + arrQuests.put(f.getName(), QuestDataIO.loadData(f)); + } catch (IOException e) { + System.err.println(String.format("Failed to load quest '%s'", f.getName())); + // Failed to load last quest, don't continue with quest loading stuff + return; + } } // Populate list with available quest data. diff --git a/forge-gui-mobile/src/forge/screens/quest/QuestMenu.java b/forge-gui-mobile/src/forge/screens/quest/QuestMenu.java index 73338eb27dd..3a91b7ca4cd 100644 --- a/forge-gui-mobile/src/forge/screens/quest/QuestMenu.java +++ b/forge-gui-mobile/src/forge/screens/quest/QuestMenu.java @@ -1,6 +1,7 @@ package forge.screens.quest; import java.io.File; +import java.io.IOException; import forge.FThreads; import forge.Forge; @@ -190,7 +191,14 @@ public class QuestMenu extends FPopupMenu implements IVQuestStats { @Override @SuppressWarnings("unchecked") public void run() { - FModel.getQuest().load(QuestDataIO.loadData(data)); + try { + FModel.getQuest().load(QuestDataIO.loadData(data)); + } catch (IOException e) { + System.err.println(String.format("Failed to load quest '%s'", questname)); + // Failed to load last quest, don't continue with quest loading stuff + return; + } + ((DeckController)EditorType.Quest.getController()).setRootFolder(FModel.getQuest().getMyDecks()); ((DeckController)EditorType.QuestDraft.getController()).setRootFolder(FModel.getQuest().getDraftDecks()); if (reason == LaunchReason.StartQuestMode) { diff --git a/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java b/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java index 5204f333eed..375e7d94b84 100644 --- a/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java +++ b/forge-gui-mobile/src/forge/screens/settings/SettingsPage.java @@ -78,6 +78,10 @@ public class SettingsPage extends TabPage { "Minimize on Screen Lock", "Minimize Forge when screen is locked (enable if you experience graphic glitches after locking your screen)."), 0); + lstSettings.addItem(new BooleanSetting(FPref.USE_SENTRY, + "Automatic Bug Reports", + "Automatically send bug reports to the developers, without prompting."), + 0); //Gameplay Options lstSettings.addItem(new CustomSelectSetting(FPref.UI_CURRENT_AI_PROFILE, @@ -117,6 +121,10 @@ public class SettingsPage extends TabPage { "Performance Mode", "Disables additional static abilities checks to speed up the game engine. (Warning: breaks some 'as if had flash' scenarios when casting cards owned by opponents)."), 1); + lstSettings.addItem(new BooleanSetting(FPref.FILTERED_HANDS, + "Filtered Hands", + "Generates two starting hands and keeps the one with the closest to average land count for the deck. (Requires restart)"), + 1); lstSettings.addItem(new BooleanSetting(FPref.UI_CLONE_MODE_SOURCE, "Clones Use Original Card Art", "When enabled clones will use their original art instead of the cloned card's art."), diff --git a/forge-gui/.classpath b/forge-gui/.classpath index f2ae73bd5d9..c3547c1336c 100644 --- a/forge-gui/.classpath +++ b/forge-gui/.classpath @@ -2,7 +2,6 @@ - diff --git a/forge-gui/forge.profile.properties.example b/forge-gui/forge.profile.properties.example index 8c249e2734c..05b4fc72b05 100644 --- a/forge-gui/forge.profile.properties.example +++ b/forge-gui/forge.profile.properties.example @@ -87,5 +87,5 @@ decksDir= decksConstructedDir= # Forge server port. Values under 1024 won't work on Mac OSX or on the various -*nixes. +# *nixes. serverPort= diff --git a/forge-gui/pom.xml b/forge-gui/pom.xml index 2715dad90b4..47375e80764 100644 --- a/forge-gui/pom.xml +++ b/forge-gui/pom.xml @@ -4,7 +4,7 @@ forge forge - 1.6.11-SNAPSHOT + 1.6.16-SNAPSHOT forge-gui @@ -39,7 +39,7 @@ com.google.guava guava - 24.1-jre + 24.1-android com.thoughtworks.xstream @@ -67,5 +67,37 @@ cling-support 2.0.1 + + org.slf4j + slf4j-simple + 1.7.22 + + + + + + org.apache.maven.plugins + maven-checkstyle-plugin + 3.0.0 + + + checkstyle-validation + validate + + ../checkstyle.xml + true + UTF-8 + true + true + true + + + check + + + + + + diff --git a/forge-gui/release-files/ANNOUNCEMENTS.txt b/forge-gui/release-files/ANNOUNCEMENTS.txt index 8f502cf1295..973e7e98943 100644 --- a/forge-gui/release-files/ANNOUNCEMENTS.txt +++ b/forge-gui/release-files/ANNOUNCEMENTS.txt @@ -1,5 +1,5 @@ #Add one announcement per line -Dominaria is here! Can't make it to Pre-release? Don't have enough money to play all weekend? Supplement with Forge! +M19 is here! Report your issues in the release thread, and we'll kick off a new release soon with fixes. [b]Forge now requires Java 8 (or newer). You will not be able to start the game if you are not yet running Java 8.[/b] We have a Discord server for hanging out with Forge devs and other Forge fans. Feel free to [url=https://discord.gg/3v9JCVr]jump on in and say hi[/url]! Online Multiplayer is once again functional! \ No newline at end of file diff --git a/forge-gui/release-files/CHANGES.txt b/forge-gui/release-files/CHANGES.txt index bd91144ab3f..05f0bf1829e 100644 --- a/forge-gui/release-files/CHANGES.txt +++ b/forge-gui/release-files/CHANGES.txt @@ -1,5 +1,2 @@ -- Planar Conquest: Ixalan - -A new plane is available in Planar Conquest mode which is supported on mobile Forge. This plane is contributed by Austinio and is based on the Ixalan block. It consists of 45 non-variant, Commander, and Planeswalker events and contains cards from Ixalan and Rivals of Ixalan. This is our first plane which was created using AI-assisted deck generation and optimization. - - Bug fixes - As always, this release of Forge features an assortment of bug fixes and improvements based on user feedback during the previous release run. diff --git a/forge-gui/release-files/ISSUES.txt b/forge-gui/release-files/ISSUES.txt index 2125eeb6b3f..00a6e947bd4 100644 --- a/forge-gui/release-files/ISSUES.txt +++ b/forge-gui/release-files/ISSUES.txt @@ -1,8 +1,7 @@ - - Images for the latest sets will be available soon. - Online multiplayer functionality has been restored, but is still a Work in Progress. We do have a dedicated developer actively working on the online multiplayer feature. +"When you pay a cost" trigger for M19 cards don't work 100% correctly yet. We're still working on it. + Other known issues are here: https://git.cardforge.org/core-developers/forge/issues Feel free to report your own there if you have any. \ No newline at end of file diff --git a/forge-gui/res/ai/Cautious.ai b/forge-gui/res/ai/Cautious.ai index a70fda07454..c65e16a652f 100644 --- a/forge-gui/res/ai/Cautious.ai +++ b/forge-gui/res/ai/Cautious.ai @@ -159,6 +159,10 @@ SCRY_IMMEDIATELY_UNCASTABLE_TO_BOTTOM=true # How big of a CMC difference between the currently castable and the considered card's CMC is allowed before # the card is considered not immediately castable for the purpose of the previous option SCRY_IMMEDIATELY_UNCASTABLE_CMC_DIFF=3 +# Surveil AI toggles (currently the AI uses Scry logic for the majority of other decisions) +# If the AI has this many or fewer cards in the library, it will Surveil to the top of the library in order +# not to deplete the library. +SURVEIL_NUM_CARDS_IN_LIBRARY_TO_BAIL=10 # Attempt to predict the number of potential blockers with various forms of evasion when # deciding to do an all-in assault attack diff --git a/forge-gui/res/ai/Default.ai b/forge-gui/res/ai/Default.ai index 42520aede1b..9029ae5c99b 100644 --- a/forge-gui/res/ai/Default.ai +++ b/forge-gui/res/ai/Default.ai @@ -159,6 +159,10 @@ SCRY_IMMEDIATELY_UNCASTABLE_TO_BOTTOM=true # How big of a CMC difference between the currently castable and the considered card's CMC is allowed before # the card is considered not immediately castable for the purpose of the previous option SCRY_IMMEDIATELY_UNCASTABLE_CMC_DIFF=1 +# Surveil AI toggles (currently the AI uses Scry logic for the majority of decisions) +# If the AI has this many or fewer cards in the library, it will Surveil to the top of the library in order +# not to deplete the library. +SURVEIL_NUM_CARDS_IN_LIBRARY_TO_BAIL=10 # Attempt to predict the number of potential blockers with various forms of evasion when # deciding to do an all-in assault attack diff --git a/forge-gui/res/ai/Experimental.ai b/forge-gui/res/ai/Experimental.ai index f0b9593945d..1829c14890b 100644 --- a/forge-gui/res/ai/Experimental.ai +++ b/forge-gui/res/ai/Experimental.ai @@ -159,6 +159,10 @@ SCRY_IMMEDIATELY_UNCASTABLE_TO_BOTTOM=true # How big of a CMC difference between the currently castable and the considered card's CMC is allowed before # the card is considered not immediately castable for the purpose of the previous option SCRY_IMMEDIATELY_UNCASTABLE_CMC_DIFF=1 +# Surveil AI toggles (currently the AI uses Scry logic for the majority of decisions) +# If the AI has this many or fewer cards in the library, it will Surveil to the top of the library in order +# not to deplete the library. +SURVEIL_NUM_CARDS_IN_LIBRARY_TO_BAIL=8 # Attempt to predict the number of potential blockers with various forms of evasion when # deciding to do an all-in assault attack (Experimental!) diff --git a/forge-gui/res/ai/Reckless.ai b/forge-gui/res/ai/Reckless.ai index aa26c7901f7..f96968c5056 100644 --- a/forge-gui/res/ai/Reckless.ai +++ b/forge-gui/res/ai/Reckless.ai @@ -159,6 +159,10 @@ SCRY_IMMEDIATELY_UNCASTABLE_TO_BOTTOM=true # How big of a CMC difference between the currently castable and the considered card's CMC is allowed before # the card is considered not immediately castable for the purpose of the previous option SCRY_IMMEDIATELY_UNCASTABLE_CMC_DIFF=1 +# Surveil AI toggles (currently the AI uses Scry logic for the majority of decisions) +# If the AI has this many or fewer cards in the library, it will Surveil to the top of the library in order +# not to deplete the library. +SURVEIL_NUM_CARDS_IN_LIBRARY_TO_BAIL=5 # Attempt to predict the number of potential blockers with various forms of evasion when # deciding to do an all-in assault attack diff --git a/forge-gui/res/blockdata/blocks.txt b/forge-gui/res/blockdata/blocks.txt index d6323275f46..88653e50acb 100644 --- a/forge-gui/res/blockdata/blocks.txt +++ b/forge-gui/res/blockdata/blocks.txt @@ -74,4 +74,6 @@ Amonkhet, 3/6/AKH, AKH HOU Ixalan, 3/6/XLN, XLN RIX Iconic Masters, 3/6/XLN, IMA Masters 25, 3/6/XLN, A25 -Dominaria, 3/6/DOM, DOM \ No newline at end of file +Dominaria, 3/6/DOM, DOM +Core Set 2019, 3/6/M19, M19 +Guilds of Ravnica, 3/6/GRN, GRN \ No newline at end of file diff --git a/forge-gui/res/blockdata/boosterboxes.txt b/forge-gui/res/blockdata/boosterboxes.txt index df344dc2e46..2762a984941 100644 --- a/forge-gui/res/blockdata/boosterboxes.txt +++ b/forge-gui/res/blockdata/boosterboxes.txt @@ -100,4 +100,7 @@ HOU: 36 Boosters XLN: 36 Boosters RIX: 36 Boosters A25: 24 Boosters -DOM: 36 Boosters \ No newline at end of file +DOM: 36 Boosters +BBD: 36 Boosters +M19: 36 Boosters +GRN: 36 Boosters \ No newline at end of file diff --git a/forge-gui/res/blockdata/fatpacks.txt b/forge-gui/res/blockdata/fatpacks.txt index d64ae15ed05..1135e24cba5 100644 --- a/forge-gui/res/blockdata/fatpacks.txt +++ b/forge-gui/res/blockdata/fatpacks.txt @@ -68,3 +68,5 @@ HOU: 10 Boosters, 80 BasicLands XLN: 10 Boosters, 80 BasicLands RIX: 10 Boosters, 80 BasicLands DOM: 10 Boosters, 80 BasicLands +M19: 10 Boosters, 80 BasicLands +GRN: 10 Boosters, 80 BasicLands diff --git a/forge-gui/res/blockdata/printsheets.txt b/forge-gui/res/blockdata/printsheets.txt index b72cf60bea7..5b328d7170a 100644 --- a/forge-gui/res/blockdata/printsheets.txt +++ b/forge-gui/res/blockdata/printsheets.txt @@ -1250,4 +1250,159 @@ Chandra's Outburst Karplusan Hound Pyromantic Pilgrim Timber Gorge -Firesong and Sunspeaker \ No newline at end of file +Firesong and Sunspeaker + +[BBD RareMythic] +1 Will Kenrith|BBD|1 +1 Rowan Kenrith|BBD|1 +8 Regna, the Redeemer +8 Krav, the Unredeemed +8 Zndrsplt, Eye of Wisdom +8 Okaun, Eye of Chaos +8 Virtus the Veiled +8 Gorm the Great +8 Khorvath Brightflame +8 Sylvia Brightspear +8 Pir, Imaginative Rascal +8 Toothy, Imaginary Friend +1 Arena Rector +1 Brightling +8 Play of the Game +8 Regna's Sanction +8 Together Forever +1 Arcane Artisan +8 Game Plan +8 Spellseeker +8 Zndrsplt's Judgment +1 Archfiend of Despair +8 Mindblade Render +1 Stunning Reversal +8 Thrilling Encore +8 Virtus's Maneuver +8 Bonus Round +8 Khorvath's Fury +1 Najeela, the Blade-Blossom +8 Stolen Strategy +1 Bramble Sovereign +8 Generous Patron +1 Grothama, All-Devouring +8 Pir's Whim +8 Archon of Valor's Reach +8 Last One Standing +8 Sentinel Tower +8 Victory Chimes +8 Bountiful Promenade +8 Luxury Suite +8 Morphic Pool +8 Sea of Clouds +8 Spire Garden +8 Angelic Chorus +8 Kor Spiritdancer +1 Land Tax +8 Mangara of Corondor +8 Mystic Confluence +8 Sower of Temptation +8 Tidespout Tyrant +1 True-Name Nemesis +8 Diabolic Intent +1 Nirkana Revenant +8 Noosegraf Mob +8 Nyxathid +8 Goblin Razerunners +8 Magmatic Force +8 War's Toll +1 Doubling Season +8 Greater Good +8 Magus of the Candelabra +8 Seedborn Muse +8 Vigor +8 Apocalypse Hydra +8 Evil Twin +8 Gwafa Hazid, Profiteer +8 Mind's Eye +1 Mycosynth Lattice + +[M19 Secret Cards] +Ajani, Wise Counselor +Ajani's Influence +Court Cleric +Serra's Guardian +Silverbeak Griffin +Tezzeret, Cruel Machinist +Riddlemaster Sphinx +Pendulum of Patterns +Tezzeret's Gatebreaker +Tezzeret's Strider +Liliana, the Necromancer +Arisen Gorgon +Gravewaker +Liliana's Spoils +Tattered Mummy +Sarkhan, Dragonsoul +Kargan Dragonrider +Sarkhan's Dragonfire +Sarkhan's Whelp +Shivan Dragon +Vivien of the Arkbow +Aggressive Mammoth +Skalla Wolf +Ursine Champion +Vivien's Jaguar +Nexus of Fate +Sun Sentinel +Air Elemental +Befuddle +Mist-Cloaked Herald +Waterknot +Grasping Scoundrel +Radiating Lightning +Llanowar Elves +Cinder Barrens +Forsaken Sanctuary +Foul Orchard +Highland Lake +Meandering River +Stone Quarry +Submerged Boneyard +Timber Gorge +Tranquil Expanse +Woodland Stream + +[M19 Lands] +5 Cinder Barrens|M19 +5 Forsaken Sanctuary|M19 +5 Foul Orchard|M19 +5 Highland Lake|M19 +5 Meandering River|M19 +5 Stone Quarry|M19 +5 Submerged Boneyard|M19 +5 Timber Gorge|M19 +5 Tranquil Expanse|M19 +5 Woodland Stream|M19 +14 Forest|M19 +14 Island|M19 +14 Mountain|M19 +14 Plains|M19 +14 Swamp|M19 + +[GRN Lands] +10 Golgari Guildgate|GRN +10 Izzet Guildgate|GRN +10 Selesnya Guildgate|GRN +10 Dimir Guildgate|GRN +10 Boros Guildgate|GRN +5 Forest|GRN +5 Island|GRN +5 Mountain|GRN +5 Plains|GRN +5 Swamp|GRN + +[GRN Secret Cards] +Ral, Caller of Storms +Ral's Dispersal +Ral's Staticaster +Vraska, Regal Gorgon +Attendant of Vraska +Vraska's Stoneglare +Impervious Greatwurm + diff --git a/forge-gui/res/cardsfolder/a/abandon_hope.txt b/forge-gui/res/cardsfolder/a/abandon_hope.txt index 7823ffaba3a..15587932d56 100644 --- a/forge-gui/res/cardsfolder/a/abandon_hope.txt +++ b/forge-gui/res/cardsfolder/a/abandon_hope.txt @@ -5,4 +5,4 @@ A:SP$ Discard | Cost$ X 1 B Discard | ValidTgts$ Opponent | Mode$ R SVar:X:Count$xPaid SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/abandon_hope.jpg -Oracle:As an additional cost to cast Abandon Hope, discard X cards.\nLook at target opponent's hand and choose X cards from it. That player discards those cards. +Oracle:As an additional cost to cast this spell, discard X cards.\nLook at target opponent's hand and choose X cards from it. That player discards those cards. diff --git a/forge-gui/res/cardsfolder/a/abandoned_sarcophagus.txt b/forge-gui/res/cardsfolder/a/abandoned_sarcophagus.txt index 22196cb21a5..688ee603a64 100644 --- a/forge-gui/res/cardsfolder/a/abandoned_sarcophagus.txt +++ b/forge-gui/res/cardsfolder/a/abandoned_sarcophagus.txt @@ -7,4 +7,4 @@ SVar:Exile:DB$ ChangeZone | Hidden$ True | Origin$ All | Destination$ Exile | De #TODO: Add Ability$Cycling to Cycling cards for the purpose of this and other similar cards for deck hints SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/abandoned_sarcophagus.jpg -Oracle:You may cast nonland cards with cycling from your graveyard.\nIf a card with cycling would be put into your graveyard from anywhere and it wasn't cycled, exile it instead. +Oracle:You may cast nonland cards with cycling from your graveyard.\nIf a card with cycling would be put into your graveyard from anywhere and it wasn't cycled, exile it instead. diff --git a/forge-gui/res/cardsfolder/a/abjure.txt b/forge-gui/res/cardsfolder/a/abjure.txt index ce0cfe28f40..8c50a177c90 100644 --- a/forge-gui/res/cardsfolder/a/abjure.txt +++ b/forge-gui/res/cardsfolder/a/abjure.txt @@ -5,4 +5,4 @@ A:SP$ Counter | Cost$ U Sac<1/Permanent.Blue/blue permanent> | TargetType$ Spell SVar:NeedsToPlay:Permanent.Blue+cmcLE2+YouCtrl SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/abjure.jpg -Oracle:As an additional cost to cast Abjure, sacrifice a blue permanent.\nCounter target spell. +Oracle:As an additional cost to cast this spell, sacrifice a blue permanent.\nCounter target spell. diff --git a/forge-gui/res/cardsfolder/a/abnormal_endurance.txt b/forge-gui/res/cardsfolder/a/abnormal_endurance.txt new file mode 100644 index 00000000000..bb2192efa3c --- /dev/null +++ b/forge-gui/res/cardsfolder/a/abnormal_endurance.txt @@ -0,0 +1,8 @@ +Name:Abnormal Endurance +ManaCost:1 B +Types:Instant +A:SP$ Pump | Cost$ 1 B | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +2 | SpellDescription$ Until end of turn, target creature gets +2/+0 and gains "When this creature dies, return it to the battlefield tapped under its owner's control." | SubAbility$ DBAnimate +SVar:DBAnimate:DB$ Animate | Triggers$ AbnormalEnduranceChangeZone | sVars$ AbnormalEnduranceTrigChangeZone | Defined$ ParentTarget +SVar:AbnormalEnduranceChangeZone:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ AbnormalEnduranceTrigChangeZone | TriggerController$ TriggeredCardController | TriggerDescription$ When this creature dies, return it to the battlefield tapped under its owner's control. +SVar:AbnormalEnduranceTrigChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | Tapped$ True | Defined$ TriggeredCard +Oracle:Until end of turn, target creature gets +2/+0 and gains "When this creature dies, return it to the battlefield tapped under its owner's control." \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/abolish.txt b/forge-gui/res/cardsfolder/a/abolish.txt index 4639c6c3dc2..1628be3029d 100644 --- a/forge-gui/res/cardsfolder/a/abolish.txt +++ b/forge-gui/res/cardsfolder/a/abolish.txt @@ -4,4 +4,4 @@ Types:Instant A:SP$ Destroy | Cost$ 1 W W | ValidTgts$ Artifact,Enchantment | TgtPrompt$ Select target artifact or enchantment | SpellDescription$ Destroy target artifact or enchantment. SVar:AltCost:Cost$ Discard<1/Plains> SVar:Picture:http://www.wizards.com/global/images/magic/general/abolish.jpg -Oracle:You may discard a Plains card rather than pay Abolish's mana cost.\nDestroy target artifact or enchantment. +Oracle:You may discard a Plains card rather than pay this spell's mana cost.\nDestroy target artifact or enchantment. diff --git a/forge-gui/res/cardsfolder/a/abrupt_decay.txt b/forge-gui/res/cardsfolder/a/abrupt_decay.txt index 54c05e9bb9e..4fef34bcec3 100644 --- a/forge-gui/res/cardsfolder/a/abrupt_decay.txt +++ b/forge-gui/res/cardsfolder/a/abrupt_decay.txt @@ -4,4 +4,4 @@ Types:Instant K:CARDNAME can't be countered. A:SP$ Destroy | Cost$ B G | ValidTgts$ Permanent.nonLand+cmcLE3 | TgtPrompt$ Select target nonland permanent with converted mana cost 3 or less | SpellDescription$ Destroy target nonland permanent with converted mana cost 3 or less. SVar:Picture:http://www.wizards.com/global/images/magic/general/abrupt_decay.jpg -Oracle:Abrupt Decay can't be countered by spells or abilities.\nDestroy target nonland permanent with converted mana cost 3 or less. +Oracle:This spell can't be countered.\nDestroy target nonland permanent with converted mana cost 3 or less. diff --git a/forge-gui/res/cardsfolder/a/abstruse_interference.txt b/forge-gui/res/cardsfolder/a/abstruse_interference.txt index bd503147fe8..8174cc86aa1 100644 --- a/forge-gui/res/cardsfolder/a/abstruse_interference.txt +++ b/forge-gui/res/cardsfolder/a/abstruse_interference.txt @@ -3,9 +3,9 @@ ManaCost:2 U Types:Instant K:Devoid A:SP$ Counter | Cost$ 2 U | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Card | UnlessCost$ 1 | SubAbility$ DBToken | SpellDescription$ Counter target spell unless its controller pays {1}. -SVar:DBToken:DB$Token | TokenAmount$ 1 | TokenName$ Eldrazi Scion | TokenTypes$ Creature,Eldrazi,Scion | TokenOwner$ You | TokenColors$ Colorless | TokenPower$ 1 | TokenToughness$ 1 | TokenImage$ c 1 1 eldrazi scion ogw | TokenAltImages$ c_1_1_eldrazi_scion2_ogw,c_1_1_eldrazi_scion3_ogw,c_1_1_eldrazi_scion4_ogw,c_1_1_eldrazi_scion5_ogw,c_1_1_eldrazi_scion6_ogw | TokenAbilities$ ABMana | SpellDescription$ Create a 1/1 colorless Eldrazi Scion creature token. It has "Sacrifice this creature: Add {C}." ({C} represents colorless mana.) +SVar:DBToken:DB$Token | TokenAmount$ 1 | TokenName$ Eldrazi Scion | TokenTypes$ Creature,Eldrazi,Scion | TokenOwner$ You | TokenColors$ Colorless | TokenPower$ 1 | TokenToughness$ 1 | TokenImage$ c 1 1 eldrazi scion ogw | TokenAltImages$ c_1_1_eldrazi_scion2_ogw,c_1_1_eldrazi_scion3_ogw,c_1_1_eldrazi_scion4_ogw,c_1_1_eldrazi_scion5_ogw,c_1_1_eldrazi_scion6_ogw | TokenAbilities$ ABMana | SpellDescription$ You create a 1/1 colorless Eldrazi Scion creature token. It has "Sacrifice this creature: Add {C}." ({C} represents colorless mana.) SVar:ABMana:AB$ Mana | Cost$ Sac<1/CARDNAME> | Produced$ C | Amount$ 1 | SpellDescription$ Add {C}. DeckHints:Type$Eldrazi DeckHas:Ability$Mana.Colorless & Ability$Token SVar:Picture:http://www.wizards.com/global/images/magic/general/abstruse_interference.jpg -Oracle:Devoid (This card has no color.)\nCounter target spell unless its controller pays {1}. Create a 1/1 colorless Eldrazi Scion creature token. It has "Sacrifice this creature: Add {C}." ({C} represents colorless mana.) +Oracle:Devoid (This card has no color.)\nCounter target spell unless its controller pays {1}. You create a 1/1 colorless Eldrazi Scion creature token. It has "Sacrifice this creature: Add {C}." ({C} represents colorless mana.) diff --git a/forge-gui/res/cardsfolder/a/abuna_acolyte.txt b/forge-gui/res/cardsfolder/a/abuna_acolyte.txt index b90aaf536f7..16289b0fa74 100644 --- a/forge-gui/res/cardsfolder/a/abuna_acolyte.txt +++ b/forge-gui/res/cardsfolder/a/abuna_acolyte.txt @@ -2,8 +2,8 @@ Name:Abuna Acolyte ManaCost:1 W Types:Creature Cat Cleric PT:1/1 -A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to any target this turn. A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature.Artifact | Amount$ 2 | TgtPrompt$ Select target artifact creature | SpellDescription$ Prevent the next 2 damage that would be dealt to target artifact creature this turn. SVar:NonCombatPriority:10 SVar:Picture:http://www.wizards.com/global/images/magic/general/abuna_acolyte.jpg -Oracle:{T}: Prevent the next 1 damage that would be dealt to target creature or player this turn.\n{T}: Prevent the next 2 damage that would be dealt to target artifact creature this turn. +Oracle:{T}: Prevent the next 1 damage that would be dealt to any target this turn.\n{T}: Prevent the next 2 damage that would be dealt to target artifact creature this turn. diff --git a/forge-gui/res/cardsfolder/a/abundant_maw.txt b/forge-gui/res/cardsfolder/a/abundant_maw.txt index 320372d84db..6934d709fb4 100644 --- a/forge-gui/res/cardsfolder/a/abundant_maw.txt +++ b/forge-gui/res/cardsfolder/a/abundant_maw.txt @@ -7,4 +7,4 @@ T:Mode$ SpellCast | ValidCard$ Card.Self | Execute$ TrigDrain | TriggerDescripti SVar:TrigDrain:DB$LoseLife | ValidTgts$ Opponent | LifeAmount$ 3 | SubAbility$ DBGainLife SVar:DBGainLife:DB$GainLife | Defined$ You | LifeAmount$ 3 SVar:Picture:http://www.wizards.com/global/images/magic/general/abundant_maw.jpg -Oracle:Emerge {6}{B} (You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's converted mana cost.)\nWhen you cast Abundant Maw, target opponent loses 3 life and you gain 3 life. +Oracle:Emerge {6}{B} (You may cast this spell by sacrificing a creature and paying the emerge cost reduced by that creature's converted mana cost.)\nWhen you cast this spell, target opponent loses 3 life and you gain 3 life. diff --git a/forge-gui/res/cardsfolder/a/abzan_ascendancy.txt b/forge-gui/res/cardsfolder/a/abzan_ascendancy.txt index cdd2c279c7b..5239fc8a01b 100644 --- a/forge-gui/res/cardsfolder/a/abzan_ascendancy.txt +++ b/forge-gui/res/cardsfolder/a/abzan_ascendancy.txt @@ -9,4 +9,4 @@ SVar:PlayMain1:TRUE SVar:NeedsToPlay:Creature.YouCtrl DeckHas:Ability$Counters & Ability$Token SVar:Picture:http://www.wizards.com/global/images/magic/general/abzan_ascendancy.jpg -Oracle:When Abzan Ascendancy enters the battlefield, put a +1/+1 counter on each creature you control.\nWhenever a nontoken creature you control dies, create a 1/1 white Spirit creature token with flying. \ No newline at end of file +Oracle:When Abzan Ascendancy enters the battlefield, put a +1/+1 counter on each creature you control.\nWhenever a nontoken creature you control dies, create a 1/1 white Spirit creature token with flying. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/academy_drake.txt b/forge-gui/res/cardsfolder/a/academy_drake.txt index aadf83a320f..a18d44d29da 100644 --- a/forge-gui/res/cardsfolder/a/academy_drake.txt +++ b/forge-gui/res/cardsfolder/a/academy_drake.txt @@ -7,4 +7,4 @@ K:Kicker:4 K:etbCounter:P1P1:2:CheckSVar$ WasKicked:If CARDNAME was kicked, it enters the battlefield with two +1/+1 counters on it. SVar:WasKicked:Count$Kicked.1.0 DeckHas:Ability$Counters -Oracle:Flying\nKicker {4} (You may pay an additional {4} as you cast this spell.)\nIf Academy Drake was kicked, it enters the battlefield with two +1/+1 counters on it. +Oracle:Flying\nKicker {4} (You may pay an additional {4} as you cast this spell.)\nIf Academy Drake was kicked, it enters the battlefield with two +1/+1 counters on it. diff --git a/forge-gui/res/cardsfolder/a/academy_journeymage.txt b/forge-gui/res/cardsfolder/a/academy_journeymage.txt index e72e87df6c7..604710311da 100644 --- a/forge-gui/res/cardsfolder/a/academy_journeymage.txt +++ b/forge-gui/res/cardsfolder/a/academy_journeymage.txt @@ -7,4 +7,4 @@ SVar:Wizard:Count$Valid Wizard.YouCtrl T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChangeZone | TriggerDescription$ When CARDNAME enters the battlefield, return target creature an opponent controls to its owner's hand. SVar:TrigChangeZone:DB$ ChangeZone | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature an opponent controls | Origin$ Battlefield | Destination$ Hand DeckHints:Type$Wizard -Oracle:This spell costs {1} less to cast if you control a Wizard. When Academy Journeymage enters the battlefield, return target creature an opponent controls to its owner's hand. \ No newline at end of file +Oracle:This spell costs {1} less to cast if you control a Wizard.\nWhen Academy Journeymage enters the battlefield, return target creature an opponent controls to its owner's hand. diff --git a/forge-gui/res/cardsfolder/a/acceptable_losses.txt b/forge-gui/res/cardsfolder/a/acceptable_losses.txt index 1fddcbc6d7b..91fc6aed172 100644 --- a/forge-gui/res/cardsfolder/a/acceptable_losses.txt +++ b/forge-gui/res/cardsfolder/a/acceptable_losses.txt @@ -3,4 +3,4 @@ ManaCost:3 R Types:Sorcery A:SP$ DealDamage | Cost$ 3 R Discard<1/Random> | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 5 | SpellDescription$ CARDNAME deals 5 damage to target creature. SVar:Picture:http://www.wizards.com/global/images/magic/general/acceptable_losses.jpg -Oracle:As an additional cost to cast Acceptable Losses, discard a card at random.\nAcceptable Losses deals 5 damage to target creature. +Oracle:As an additional cost to cast this spell, discard a card at random.\nAcceptable Losses deals 5 damage to target creature. diff --git a/forge-gui/res/cardsfolder/a/accorders_shield.txt b/forge-gui/res/cardsfolder/a/accorders_shield.txt index 8482c57b38b..433c26faf39 100644 --- a/forge-gui/res/cardsfolder/a/accorders_shield.txt +++ b/forge-gui/res/cardsfolder/a/accorders_shield.txt @@ -4,4 +4,4 @@ Types:Artifact Equipment K:Equip:3 S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddToughness$ 3 | AddKeyword$ Vigilance | Description$ Equipped creature gets +0/+3 and has vigilance. SVar:Picture:http://www.wizards.com/global/images/magic/general/accorders_shield.jpg -Oracle:Equipped creature gets +0/+3 and has vigilance.\nEquip {3} +Oracle:Equipped creature gets +0/+3 and has vigilance. (Attacking doesn't cause it to tap.)\nEquip {3} ({3}: Attach to target creature you control. Equip only as a sorcery.) diff --git a/forge-gui/res/cardsfolder/a/acidic_sliver.txt b/forge-gui/res/cardsfolder/a/acidic_sliver.txt index bb794393261..0648f7f2610 100644 --- a/forge-gui/res/cardsfolder/a/acidic_sliver.txt +++ b/forge-gui/res/cardsfolder/a/acidic_sliver.txt @@ -2,8 +2,8 @@ Name:Acidic Sliver ManaCost:B R Types:Creature Sliver PT:2/2 -S:Mode$ Continuous | Affected$ Sliver | AddAbility$ Damage | Description$ All Slivers have "{2}, Sacrifice this permanent: This permanent deals 2 damage to target creature or player." -SVar:Damage:AB$DealDamage | Cost$ 2 Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +S:Mode$ Continuous | Affected$ Sliver | AddAbility$ Damage | Description$ All Slivers have "{2}, Sacrifice this permanent: This permanent deals 2 damage to any target." +SVar:Damage:AB$DealDamage | Cost$ 2 Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:BuffedBy:Sliver SVar:Picture:http://www.wizards.com/global/images/magic/general/acidic_sliver.jpg -Oracle:All Slivers have "{2}, Sacrifice this permanent: This permanent deals 2 damage to target creature or player." +Oracle:All Slivers have "{2}, Sacrifice this permanent: This permanent deals 2 damage to any target." diff --git a/forge-gui/res/cardsfolder/a/acolyte_of_the_inferno.txt b/forge-gui/res/cardsfolder/a/acolyte_of_the_inferno.txt index a03344aa3c3..00e9b7f9e14 100644 --- a/forge-gui/res/cardsfolder/a/acolyte_of_the_inferno.txt +++ b/forge-gui/res/cardsfolder/a/acolyte_of_the_inferno.txt @@ -4,7 +4,7 @@ Types:Creature Human Monk PT:3/1 K:Renown:1 T:Mode$ AttackerBlockedByCreature | ValidCard$ Card.Self | ValidBlocker$ Creature | Execute$ TrigDealDamage | TriggerDescription$ Whenever CARDNAME becomes blocked by a creature, it deals 2 damage to that creature. -SVar:TrigDealDamage:DB$ DealDamage | Defined$ TriggeredBlocker | NumDmg$ 2 +SVar:TrigDealDamage:DB$ DealDamage | Defined$ TriggeredBlockerLKICopy | NumDmg$ 2 DeckHas:Ability$Counters SVar:Picture:http://www.wizards.com/global/images/magic/general/acolyte_of_the_inferno.jpg Oracle:Renown 1 (When this creature deals combat damage to a player, if it isn't renowned, put a +1/+1 counter on it and it becomes renowned.)\nWhenever Acolyte of the Inferno becomes blocked by a creature, it deals 2 damage to that creature. diff --git a/forge-gui/res/cardsfolder/a/acolytes_reward.txt b/forge-gui/res/cardsfolder/a/acolytes_reward.txt index 1526fbafa4c..f80179a9254 100644 --- a/forge-gui/res/cardsfolder/a/acolytes_reward.txt +++ b/forge-gui/res/cardsfolder/a/acolytes_reward.txt @@ -1,10 +1,10 @@ Name:Acolyte's Reward ManaCost:1 W Types:Instant -A:SP$ Pump | Cost$ 1 W | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to damage with shield effect | IsCurse$ True | References$ X | SubAbility$ AcolytesPrevention | StackDescription$ SpellDescription | AILogic$ Never | SpellDescription$ Prevent the next X damage that would be dealt to target creature this turn, where X is your devotion to white. If damage is prevented this way, CARDNAME deals that much damage to target creature or player. +A:SP$ Pump | Cost$ 1 W | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to damage with shield effect | IsCurse$ True | References$ X | SubAbility$ AcolytesPrevention | StackDescription$ SpellDescription | AILogic$ Never | SpellDescription$ Prevent the next X damage that would be dealt to target creature this turn, where X is your devotion to white. If damage is prevented this way, CARDNAME deals that much damage to any target. SVar:AcolytesPrevention:DB$ PreventDamage | ValidTgts$ Creature | TgtPrompt$ Select a creature to prevent damage to | Amount$ X | References$ X | PreventionSubAbility$ AcolytesRetribution | ShieldEffectTarget$ ParentTarget | StackDescription$ none SVar:AcolytesRetribution:DB$ DealDamage | Defined$ ShieldEffectTarget | NumDmg$ PreventedDamage | SpellDescription$ CARDNAME deals damage to target creature or player for each damage prevented this way. SVar:X:Count$Devotion.White SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/acolytes_reward.jpg -Oracle:Prevent the next X damage that would be dealt to target creature this turn, where X is your devotion to white. If damage is prevented this way, Acolyte's Reward deals that much damage to target creature or player. (Each {W} in the mana costs of permanents you control counts toward your devotion to white.) +Oracle:Prevent the next X damage that would be dealt to target creature this turn, where X is your devotion to white. If damage is prevented this way, Acolyte's Reward deals that much damage to any target. (Each {W} in the mana costs of permanents you control counts toward your devotion to white.) diff --git a/forge-gui/res/cardsfolder/a/acorn_catapult.txt b/forge-gui/res/cardsfolder/a/acorn_catapult.txt index 21d13a36eb2..6e0a0fa14ab 100644 --- a/forge-gui/res/cardsfolder/a/acorn_catapult.txt +++ b/forge-gui/res/cardsfolder/a/acorn_catapult.txt @@ -1,9 +1,9 @@ Name:Acorn Catapult ManaCost:4 Types:Artifact -A:AB$ DealDamage | Cost$ 1 T | NumDmg$ 1 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | SubAbility$ SquirrelTokenCtrl | SpellDescription$ CARDNAME deals 1 damage to target creature or player. That creature's controller or that player creates a 1/1 green Squirrel creature token. +A:AB$ DealDamage | Cost$ 1 T | NumDmg$ 1 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | SubAbility$ SquirrelTokenCtrl | SpellDescription$ CARDNAME deals 1 damage to any target. That permanent's controller or that player creates a 1/1 green Squirrel creature token. SVar:SquirrelTokenCtrl:DB$ Token | TokenAmount$ 1 | TokenName$ Squirrel | TokenTypes$ Creature,Squirrel | TokenOwner$ Targeted | TokenColors$ Green | TokenPower$ 1 | TokenToughness$ 1 | SubAbility$ SquirrelTokenPlayer | ConditionDefined$ Targeted | ConditionPresent$ Card.Creature | ConditionCompare$ EQ0 | TokenImage$ g_1_1_squirrel_ody SVar:SquirrelTokenPlayer:DB$ Token | TokenAmount$ 1 | TokenName$ Squirrel | TokenTypes$ Creature,Squirrel | TokenOwner$ TargetedController | TokenColors$ Green | TokenPower$ 1 | TokenToughness$ 1 | ConditionDefined$ Targeted | ConditionPresent$ Card.Creature | ConditionCompare$ GE1 | TokenImage$ g_1_1_squirrel_ody SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/acorn_catapult.jpg -Oracle:{1}, {T}: Acorn Catapult deals 1 damage to target creature or player. That creature's controller or that player creates a 1/1 green Squirrel creature token. +Oracle:{1}, {T}: Acorn Catapult deals 1 damage to any target. That permanent's controller or that player creates a 1/1 green Squirrel creature token. diff --git a/forge-gui/res/cardsfolder/a/acorn_harvest.txt b/forge-gui/res/cardsfolder/a/acorn_harvest.txt index 9b9718a358d..c4fe60fb54d 100644 --- a/forge-gui/res/cardsfolder/a/acorn_harvest.txt +++ b/forge-gui/res/cardsfolder/a/acorn_harvest.txt @@ -1,7 +1,7 @@ Name:Acorn Harvest ManaCost:3 G Types:Sorcery -K:Flashback 1 G PayLife<3> +K:Flashback:1 G PayLife<3> A:SP$ Token | Cost$ 3 G | TokenAmount$ 2 | TokenName$ Squirrel | TokenTypes$ Creature,Squirrel | TokenOwner$ You | TokenColors$ Green | TokenPower$ 1 | TokenToughness$ 1 | SpellDescription$ Create two 1/1 green Squirrel creature tokens. | TokenImage$ g_1_1_squirrel_ody SVar:Picture:http://www.wizards.com/global/images/magic/general/acorn_harvest.jpg Oracle:Create two 1/1 green Squirrel creature tokens.\nFlashback—{1}{G}, Pay 3 life. (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/a/act_of_aggression.txt b/forge-gui/res/cardsfolder/a/act_of_aggression.txt index 381b9995365..f04eb076c0d 100644 --- a/forge-gui/res/cardsfolder/a/act_of_aggression.txt +++ b/forge-gui/res/cardsfolder/a/act_of_aggression.txt @@ -3,4 +3,4 @@ ManaCost:3 PR PR Types:Instant A:SP$ GainControl | Cost$ 3 PR PR | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature an opponent controls. | LoseControl$ EOT | Untap$ True | AddKWs$ Haste | SpellDescription$ Gain control of target creature an opponent controls until end of turn. Untap that creature. It gains haste until end of turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/act_of_aggression.jpg -Oracle:({P/R} can be paid with either {R} or 2 life.)\nGain control of target creature an opponent controls until end of turn. Untap that creature. It gains haste until end of turn. +Oracle:({R/P} can be paid with either {R} or 2 life.)\nGain control of target creature an opponent controls until end of turn. Untap that creature. It gains haste until end of turn. diff --git a/forge-gui/res/cardsfolder/a/act_of_treason.txt b/forge-gui/res/cardsfolder/a/act_of_treason.txt index fbafc882a18..85d1812314a 100644 --- a/forge-gui/res/cardsfolder/a/act_of_treason.txt +++ b/forge-gui/res/cardsfolder/a/act_of_treason.txt @@ -4,4 +4,4 @@ Types:Sorcery A:SP$ GainControl | Cost$ 2 R | ValidTgts$ Creature | TgtPrompt$ Select target creature | LoseControl$ EOT | Untap$ True | AddKWs$ Haste | SpellDescription$ Gain control of target creature until end of turn. Untap that creature. It gains haste until end of turn. SVar:PlayMain1:OPPONENTCREATURES SVar:Picture:http://www.wizards.com/global/images/magic/general/act_of_treason.jpg -Oracle:Gain control of target creature until end of turn. Untap that creature. It gains haste until end of turn. +Oracle:Gain control of target creature until end of turn. Untap that creature. It gains haste until end of turn. (It can attack and {T} this turn.) diff --git a/forge-gui/res/cardsfolder/a/adamant_will.txt b/forge-gui/res/cardsfolder/a/adamant_will.txt index 84311f7b2d5..25153f3381b 100644 --- a/forge-gui/res/cardsfolder/a/adamant_will.txt +++ b/forge-gui/res/cardsfolder/a/adamant_will.txt @@ -2,4 +2,4 @@ Name:Adamant Will ManaCost:1 W Types:Instant A:SP$ Pump | Cost$ 1 W | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +2 | NumDef$ +2 | KW$ Indestructible | SpellDescription$ Target creature gets +2/+2 and gains indestructible until end of turn. -Oracle:Target creature gets +2/+2 and gains indestructible until end of turn. \ No newline at end of file +Oracle:Target creature gets +2/+2 and gains indestructible until end of turn. (Damage and effects that say "destroy" don't destroy it.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/admirals_order.txt b/forge-gui/res/cardsfolder/a/admirals_order.txt index 9c0fac1b06a..d5d3ba01aa4 100644 --- a/forge-gui/res/cardsfolder/a/admirals_order.txt +++ b/forge-gui/res/cardsfolder/a/admirals_order.txt @@ -5,4 +5,4 @@ A:SP$ Counter | Cost$ 1 U U | TargetType$ Spell | TgtPrompt$ Select target spell A:SP$ Counter | Cost$ U | CheckSVar$ X | References$ X | SVarCompare$ GE1 | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Card | SpellDescription$ Raid — If you attacked with a creature this turn, you may pay {U} rather than pay this spell's mana cost. Counter target spell. SVar:X:Count$AttackersDeclared SVar:Picture:http://www.wizards.com/global/images/magic/general/admirals_order.jpg -Oracle:Raid — If you attacked with a creature this turn, you may pay {U} rather than pay this spell's mana cost.\nCounter target spell. \ No newline at end of file +Oracle:Raid — If you attacked with a creature this turn, you may pay {U} rather than pay this spell's mana cost.\nCounter target spell. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/adrianas_valor.txt b/forge-gui/res/cardsfolder/a/adrianas_valor.txt index ba175014da9..03886fe68e2 100644 --- a/forge-gui/res/cardsfolder/a/adrianas_valor.txt +++ b/forge-gui/res/cardsfolder/a/adrianas_valor.txt @@ -6,4 +6,4 @@ T:Mode$ Attacks | ValidCard$ Creature.NamedCard+YouCtrl | Execute$ TrigPump | Tr SVar:TrigPump:AB$ Pump | Cost$ W | Defined$ TriggeredAttacker | KW$ Indestructible SVar:AgendaLogic:BestCreatureInComputerDeck SVar:Picture:http://www.wizards.com/global/images/magic/general/adrianas_valor.jpg -Oracle:Hidden agenda (Start the game with this conspiracy face down in the command zone and secretly name a card. You may turn this conspiracy face up any time and reveal the chosen name.)\nWhenever a creature you control with the chosen name attacks, you may pay {W}. If you do, that creature gains indestructible until end of turn. (Damage and effects that say "destroy" don't destroy it.) \ No newline at end of file +Oracle:Hidden agenda (Start the game with this conspiracy face down in the command zone and secretly choose a card name. You may turn this conspiracy face up any time and reveal that name.)\nWhenever a creature you control with the chosen name attacks, you may pay {W}. If you do, that creature gains indestructible until end of turn. (Damage and effects that say "destroy" don't destroy it.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/adventurous_impulse.txt b/forge-gui/res/cardsfolder/a/adventurous_impulse.txt index e266470af3e..bb7a07efae1 100644 --- a/forge-gui/res/cardsfolder/a/adventurous_impulse.txt +++ b/forge-gui/res/cardsfolder/a/adventurous_impulse.txt @@ -2,4 +2,4 @@ Name:Adventurous Impulse ManaCost:G Types:Sorcery A:SP$ Dig | Cost$ G | DigNum$ 3 | ChangeNum$ 1 | Optional$ True | ChangeValid$ Creature,Land | ForceRevealToController$ True | SpellDescription$ Look at the top three cards of your library. You may reveal a creature or land card from among them and put it into your hand. Put the rest on the bottom of your library in any order. -Oracle:Look at the top three cards of your library. You may reveal a creature or land card from among them and put it into your hand. Put the rest on the bottom of your library in any order. +Oracle:Look at the top three cards of your library. You may reveal a creature or land card from among them and put it into your hand. Put the rest on the bottom of your library in any order. diff --git a/forge-gui/res/cardsfolder/a/advice_from_the_fae.txt b/forge-gui/res/cardsfolder/a/advice_from_the_fae.txt index 2e9c546e2d6..aad46150c52 100644 --- a/forge-gui/res/cardsfolder/a/advice_from_the_fae.txt +++ b/forge-gui/res/cardsfolder/a/advice_from_the_fae.txt @@ -8,4 +8,4 @@ SVar:Y:PlayerCountOther$HighestValid Creature.YouCtrl DeckNeeds:Color$Blue SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/advice_from_the_fae.jpg -Oracle:Look at the top five cards of your library. If you control more creatures than each other player, put two of those cards into your hand. Otherwise, put one of them into your hand. Then put the rest on the bottom of your library in any order. +Oracle:({2/U} can be paid with any two mana or with {U}. This card's converted mana cost is 6.)\nLook at the top five cards of your library. If you control more creatures than each other player, put two of those cards into your hand. Otherwise, put one of them into your hand. Then put the rest on the bottom of your library in any order. diff --git a/forge-gui/res/cardsfolder/a/aegis_angel.txt b/forge-gui/res/cardsfolder/a/aegis_angel.txt index 76f0a346c7b..e0d2638a632 100644 --- a/forge-gui/res/cardsfolder/a/aegis_angel.txt +++ b/forge-gui/res/cardsfolder/a/aegis_angel.txt @@ -7,4 +7,4 @@ T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.S SVar:TrigPump:DB$ Pump | ValidTgts$ Permanent.Other | TgtPrompt$ Select another target permanent | KW$ Indestructible | UntilLoseControlOfHost$ True SVar:PlayMain1:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/aegis_angel.jpg -Oracle:Flying\nWhen Aegis Angel enters the battlefield, another target permanent gains indestructible for as long as you control Aegis Angel. (Effects that say "destroy" don't destroy that permanent. An indestructible creature can't be destroyed by damage.) \ No newline at end of file +Oracle:Flying (This creature can't be blocked except by creatures with flying or reach.)\nWhen Aegis Angel enters the battlefield, another target permanent gains indestructible for as long as you control Aegis Angel. (Effects that say "destroy" don't destroy it. A creature with indestructible can't be destroyed by damage.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/aegis_of_the_heavens.txt b/forge-gui/res/cardsfolder/a/aegis_of_the_heavens.txt new file mode 100644 index 00000000000..95b716ea406 --- /dev/null +++ b/forge-gui/res/cardsfolder/a/aegis_of_the_heavens.txt @@ -0,0 +1,5 @@ +Name:Aegis of the Heavens +ManaCost:1 W +Types:Instant +A:SP$ Pump | Cost$ 1 W | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ 1 | NumDef$ 7 | SpellDescription$ Target creature gets +1/+7 until end of turn. +Oracle:Target creature gets +1/+7 until end of turn. diff --git a/forge-gui/res/cardsfolder/a/aeolipile.txt b/forge-gui/res/cardsfolder/a/aeolipile.txt index b7572996de2..2caaa440551 100644 --- a/forge-gui/res/cardsfolder/a/aeolipile.txt +++ b/forge-gui/res/cardsfolder/a/aeolipile.txt @@ -1,6 +1,6 @@ Name:Aeolipile ManaCost:2 Types:Artifact -A:AB$ DealDamage | Cost$ 1 T Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:AB$ DealDamage | Cost$ 1 T Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/aeolipile.jpg -Oracle:{1}, {T}, Sacrifice Aeolipile: Aeolipile deals 2 damage to target creature or player. +Oracle:{1}, {T}, Sacrifice Aeolipile: It deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/a/aerathi_berserker.txt b/forge-gui/res/cardsfolder/a/aerathi_berserker.txt index c74b627be81..e97eff139a6 100644 --- a/forge-gui/res/cardsfolder/a/aerathi_berserker.txt +++ b/forge-gui/res/cardsfolder/a/aerathi_berserker.txt @@ -2,6 +2,6 @@ Name:Aerathi Berserker ManaCost:2 R R R Types:Creature Human Berserker PT:2/4 -K:Rampage 3 +K:Rampage:3 SVar:Picture:http://www.wizards.com/global/images/magic/general/aerathi_berserker.jpg Oracle:Rampage 3 (Whenever this creature becomes blocked, it gets +3/+3 until end of turn for each creature blocking it beyond the first.) diff --git a/forge-gui/res/cardsfolder/a/aerial_engineer.txt b/forge-gui/res/cardsfolder/a/aerial_engineer.txt new file mode 100644 index 00000000000..231a565532a --- /dev/null +++ b/forge-gui/res/cardsfolder/a/aerial_engineer.txt @@ -0,0 +1,9 @@ +Name:Aerial Engineer +ManaCost:2 W U +Types:Creature Human Artificer +PT:2/4 +S:Mode$ Continuous | Affected$ Card.Self | AddPower$ 2 | AddKeyword$ Flying | IsPresent$ Artifact.YouCtrl | Description$ As long as you control an artifact, CARDNAME gets +2/+0 and has flying. +SVar:BuffedBy:Artifact +DeckHints:Type$Artifact +SVar:Picture:http://www.wizards.com/global/images/magic/general/aerial_engineer.jpg +Oracle:As long as you control an artifact, Aerial Engineer gets +2/+0 and has flying. diff --git a/forge-gui/res/cardsfolder/a/aerial_formation.txt b/forge-gui/res/cardsfolder/a/aerial_formation.txt index 2e6e4f6dfa7..891de939e24 100644 --- a/forge-gui/res/cardsfolder/a/aerial_formation.txt +++ b/forge-gui/res/cardsfolder/a/aerial_formation.txt @@ -5,4 +5,4 @@ K:Strive:2 U A:SP$ Pump | Cost$ U | ValidTgts$ Creature | KW$ Flying | NumAtt$ +1 | NumDef$ +1 | TargetMin$ 0 | TargetMax$ MaxTargets | References$ MaxTargets | SpellDescription$ Any number of target creatures each get +1/+1 and gain flying until end of turn. SVar:MaxTargets:Count$Valid Creature SVar:Picture:http://www.wizards.com/global/images/magic/general/aerial_formation.jpg -Oracle:Strive — Aerial Formation costs {2}{U} more to cast for each target beyond the first.\nAny number of target creatures each get +1/+1 and gain flying until end of turn. +Oracle:Strive — This spell costs {2}{U} more to cast for each target beyond the first.\nAny number of target creatures each get +1/+1 and gain flying until end of turn. diff --git a/forge-gui/res/cardsfolder/a/aerie_ouphes.txt b/forge-gui/res/cardsfolder/a/aerie_ouphes.txt index d1e9f330aef..b9944787d70 100644 --- a/forge-gui/res/cardsfolder/a/aerie_ouphes.txt +++ b/forge-gui/res/cardsfolder/a/aerie_ouphes.txt @@ -6,4 +6,4 @@ K:Persist A:AB$ DealDamage | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature.withFlying | TgtPrompt$ Select target creature with flying | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to its power to target creature with flying. SVar:X:Count$CardPower SVar:Picture:http://www.wizards.com/global/images/magic/general/aerie_ouphes.jpg -Oracle:Sacrifice Aerie Ouphes: Aerie Ouphes deals damage equal to its power to target creature with flying.\nPersist (When this creature dies, if it had no -1/-1 counters on it, return it to the battlefield under its owner's control with a -1/-1 counter on it.) +Oracle:Sacrifice Aerie Ouphes: It deals damage equal to its power to target creature with flying.\nPersist (When this creature dies, if it had no -1/-1 counters on it, return it to the battlefield under its owner's control with a -1/-1 counter on it.) diff --git a/forge-gui/res/cardsfolder/a/aerie_worshippers.txt b/forge-gui/res/cardsfolder/a/aerie_worshippers.txt index 4d8d37c7379..519efce1e98 100644 --- a/forge-gui/res/cardsfolder/a/aerie_worshippers.txt +++ b/forge-gui/res/cardsfolder/a/aerie_worshippers.txt @@ -5,4 +5,4 @@ PT:2/4 T:Mode$ Untaps | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ GFGToken | TriggerDescription$ Inspired — Whenever CARDNAME becomes untapped, you may pay {2}{U}. If you do, create a 2/2 blue Bird enchantment creature token with flying. SVar:GFGToken:AB$ Token | Cost$ 2 U | TokenAmount$ 1 | TokenName$ Bird | TokenTypes$ Enchantment,Creature,Bird | TokenOwner$ You | TokenColors$ Blue | TokenKeywords$ Flying | TokenPower$ 2 | TokenToughness$ 2 | TokenImage$ u 2 2 bird bng SVar:Picture:http://www.wizards.com/global/images/magic/general/aerie_worshippers.txt -Oracle:Inspired — Whenever Aerie Worshippers becomes untapped, you may pay {2}{U}. If you do, create a 2/2 blue Bird enchantment creature token with flying. +Oracle:Inspired — Whenever Aerie Worshippers becomes untapped, you may pay {2}{U}. If you do, create a 2/2 blue Bird enchantment creature token with flying. diff --git a/forge-gui/res/cardsfolder/a/aether_burst.txt b/forge-gui/res/cardsfolder/a/aether_burst.txt index 4c838cceaa7..3a7998af73d 100644 --- a/forge-gui/res/cardsfolder/a/aether_burst.txt +++ b/forge-gui/res/cardsfolder/a/aether_burst.txt @@ -5,4 +5,4 @@ A:SP$ ChangeZone | Cost$ 1 U | ValidTgts$ Creature | TargetMin$ 0 | TargetMax$ X SVar:X:Count$NamedInAllYards.Aether Burst/Plus.1 DeckHints:Name$Aether Burst SVar:Picture:http://www.wizards.com/global/images/magic/general/aether_burst.jpg -Oracle:Return up to X target creatures to their owners' hands, where X is one plus the number of cards named Aether Burst in all graveyards as you cast Aether Burst. +Oracle:Return up to X target creatures to their owners' hands, where X is one plus the number of cards named Aether Burst in all graveyards as you cast this spell. diff --git a/forge-gui/res/cardsfolder/a/aether_charge.txt b/forge-gui/res/cardsfolder/a/aether_charge.txt index 2aabf638a0d..c5758e80a0a 100644 --- a/forge-gui/res/cardsfolder/a/aether_charge.txt +++ b/forge-gui/res/cardsfolder/a/aether_charge.txt @@ -1,8 +1,8 @@ Name:Aether Charge ManaCost:4 R Types:Enchantment -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Beast.YouCtrl | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigDealDamage | TriggerDescription$ Whenever a Beast enters the battlefield under your control, you may have it deal 4 damage to target opponent. -SVar:TrigDealDamage:DB$DealDamage | DamageSource$ TriggeredCard | ValidTgts$ Opponent | NumDmg$ 4 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Beast.YouCtrl | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigDealDamage | TriggerDescription$ Whenever a Beast enters the battlefield under your control, you may have it deal 4 damage to target opponent or planeswalker. +SVar:TrigDealDamage:DB$DealDamage | DamageSource$ TriggeredCard | ValidTgts$ Opponent,Planeswalker | NumDmg$ 4 SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/aether_charge.jpg -Oracle:Whenever a Beast enters the battlefield under your control, you may have it deal 4 damage to target opponent. +Oracle:Whenever a Beast enters the battlefield under your control, you may have it deal 4 damage to target opponent or planeswalker. diff --git a/forge-gui/res/cardsfolder/a/aether_flash.txt b/forge-gui/res/cardsfolder/a/aether_flash.txt index bec2d46807b..a331c6bda14 100644 --- a/forge-gui/res/cardsfolder/a/aether_flash.txt +++ b/forge-gui/res/cardsfolder/a/aether_flash.txt @@ -2,7 +2,7 @@ Name:Aether Flash ManaCost:2 R R Types:Enchantment T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever a creature enters the battlefield, CARDNAME deals 2 damage to it. -SVar:TrigDealDamage:DB$DealDamage | Defined$ TriggeredCard | NumDmg$ 2 +SVar:TrigDealDamage:DB$DealDamage | Defined$ TriggeredCardLKICopy | NumDmg$ 2 SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/aether_flash.jpg Oracle:Whenever a creature enters the battlefield, Aether Flash deals 2 damage to it. diff --git a/forge-gui/res/cardsfolder/a/aether_membrane.txt b/forge-gui/res/cardsfolder/a/aether_membrane.txt index 6c1187eb809..ca168232f9c 100644 --- a/forge-gui/res/cardsfolder/a/aether_membrane.txt +++ b/forge-gui/res/cardsfolder/a/aether_membrane.txt @@ -9,4 +9,4 @@ SVar:DelayedTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ EndCombat | ValidPlay SVar:TrigBounce:DB$ ChangeZone | Origin$ Battlefield | Destination$ Hand | Defined$ DelayTriggerRemembered SVar:HasBlockEffect:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/aether_membrane.jpg -Oracle:Defender\nReach (This creature can block creatures with flying.)\nWhenever Aether Membrane blocks a creature, return that creature to its owner's hand at end of combat. +Oracle:Defender; reach (This creature can block creatures with flying.)\nWhenever Aether Membrane blocks a creature, return that creature to its owner's hand at end of combat. diff --git a/forge-gui/res/cardsfolder/a/aether_tide.txt b/forge-gui/res/cardsfolder/a/aether_tide.txt index ddc8eb8605e..f532c51de55 100644 --- a/forge-gui/res/cardsfolder/a/aether_tide.txt +++ b/forge-gui/res/cardsfolder/a/aether_tide.txt @@ -7,4 +7,4 @@ SVar:X:Targeted$Amount SVar:MaxTgts:Count$Valid Creature SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/aether_tide.jpg -Oracle:As an additional cost to cast Aether Tide, discard X creature cards.\nReturn X target creatures to their owners' hands. +Oracle:As an additional cost to cast this spell, discard X creature cards.\nReturn X target creatures to their owners' hands. diff --git a/forge-gui/res/cardsfolder/a/aether_tunnel.txt b/forge-gui/res/cardsfolder/a/aether_tunnel.txt new file mode 100644 index 00000000000..732debeab32 --- /dev/null +++ b/forge-gui/res/cardsfolder/a/aether_tunnel.txt @@ -0,0 +1,7 @@ +Name:Aether Tunnel +ManaCost:1 U +Types:Enchantment Aura +K:Enchant creature +A:SP$ Attach | Cost$ 1 U | ValidTgts$ Creature | AILogic$ Pump | SpellDescription$ Enchant creature +S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 1 | AddToughness$ 0 | AddKeyword$ Unblockable | Description$ Enchanted creature gets +1/+0 and can't be blocked. +Oracle:Enchant creature\nEnchanted creature gets +1/+0 and can't be blocked. diff --git a/forge-gui/res/cardsfolder/a/aetherflux_reservoir.txt b/forge-gui/res/cardsfolder/a/aetherflux_reservoir.txt index f95efd064c5..aa14246363c 100644 --- a/forge-gui/res/cardsfolder/a/aetherflux_reservoir.txt +++ b/forge-gui/res/cardsfolder/a/aetherflux_reservoir.txt @@ -4,6 +4,6 @@ Types:Artifact T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ You | Execute$ TrigGainLife | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast a spell, you gain 1 life for each spell you've cast this turn. SVar:TrigGainLife:DB$ GainLife | Defined$ You | LifeAmount$ X | References$ X SVar:X:Count$ThisTurnCast_Card.YouCtrl -A:AB$ DealDamage | Cost$ PayLife<50> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 50 | SpellDescription$ CARDNAME deals 50 damage to target creature or player. +A:AB$ DealDamage | Cost$ PayLife<50> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 50 | SpellDescription$ CARDNAME deals 50 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/aetherflux_reservoir.jpg -Oracle:Whenever you cast a spell, you gain 1 life for each spell you've cast this turn.\nPay 50 life: Aetherflux Reservoir deals 50 damage to target creature or player. \ No newline at end of file +Oracle:Whenever you cast a spell, you gain 1 life for each spell you've cast this turn.\nPay 50 life: Aetherflux Reservoir deals 50 damage to any target. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/aethershield_artificer.txt b/forge-gui/res/cardsfolder/a/aethershield_artificer.txt new file mode 100644 index 00000000000..911cb56591d --- /dev/null +++ b/forge-gui/res/cardsfolder/a/aethershield_artificer.txt @@ -0,0 +1,7 @@ +Name:Aethershield Artificer +ManaCost:3 W +Types:Creature Dwarf Artificer +T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ At the beginning of combat on your turn, target artifact creature you control gets +2/+2 and gains indestructible until end of turn. +SVar:TrigPump:DB$ Pump | ValidTgts$ Creature.Artifact+YouCtrl | TgtPrompt$ Select target artifact creature you control | NumAtt$ 2 | NumDef$ 2 | KW$ Indestructible +Oracle:At the beginning of combat on your turn, target artifact creature you control gets +2/+2 and gains indestructible until end of turn. (Damage and effects that say "destroy" don't destroy it.) +PT:3/3 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/aethersphere_harvester.txt b/forge-gui/res/cardsfolder/a/aethersphere_harvester.txt index 2e8c7ef6500..c49c8c40e47 100644 --- a/forge-gui/res/cardsfolder/a/aethersphere_harvester.txt +++ b/forge-gui/res/cardsfolder/a/aethersphere_harvester.txt @@ -8,4 +8,4 @@ SVar:TrigEnergy:DB$ PutCounter | Defined$ You | CounterType$ ENERGY | CounterNum A:AB$ Pump | Cost$ PayEnergy<1> | KW$ Lifelink | Defined$ Self | SpellDescription$ CARDNAME gains lifelink until end of turn. K:Crew:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/aethersphere_harvester.jpg -Oracle:Flying\nWhen Aethersphere Harvester enters the battlefield, you get {E}{E} (two energy counters.)\nPay {E}: Aethersphere Harvester gains lifelink until end of turn.\nCrew 1 (Tap any number of creatures you control with total power 1 or more: This vehicle becomes an artifact creature until end of turn.) \ No newline at end of file +Oracle:Flying\nWhen Aethersphere Harvester enters the battlefield, you get {E}{E} (two energy counters).\nPay {E}: Aethersphere Harvester gains lifelink until end of turn.\nCrew 1 (Tap any number of creatures you control with total power 1 or more: This Vehicle becomes an artifact creature until end of turn.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/aethertorch_renegade.txt b/forge-gui/res/cardsfolder/a/aethertorch_renegade.txt index 144a25e69d7..83c3c336c6d 100644 --- a/forge-gui/res/cardsfolder/a/aethertorch_renegade.txt +++ b/forge-gui/res/cardsfolder/a/aethertorch_renegade.txt @@ -5,6 +5,6 @@ PT:1/2 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigEnergy | TriggerDescription$ When CARDNAME enters the battlefield, you get {E}{E}{E}{E} (four energy counters). SVar:TrigEnergy:DB$ PutCounter | Defined$ You | CounterType$ ENERGY | CounterNum$ 4 A:AB$ DealDamage | Cost$ T PayEnergy<2> | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature. -A:AB$ DealDamage | Cost$ T PayEnergy<8> | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 6 | SpellDescription$ CARDNAME deals 6 damage to target player. +A:AB$ DealDamage | Cost$ T PayEnergy<8> | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 6 | SpellDescription$ CARDNAME deals 6 damage to target player or planeswalker. SVar:Picture:http://www.wizards.com/global/images/magic/general/aethertorch_renegade.jpg -Oracle:When Aethertorch Renegade enters the battlefield, you get {E}{E}{E}{E} (four energy counters).\n{T}, Pay {E}{E}: Aethertorch Renegade deals 1 damage to target creature.\n{T}, Pay {E}{E}{E}{E}{E}{E}{E}{E}: Aethertorch Renegade deals 6 damage to target player. +Oracle:When Aethertorch Renegade enters the battlefield, you get {E}{E}{E}{E} (four energy counters).\n{T}, Pay {E}{E}: Aethertorch Renegade deals 1 damage to target creature.\n{T}, Pay {E}{E}{E}{E}{E}{E}{E}{E}: Aethertorch Renegade deals 6 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/a/affa_guard_hound.txt b/forge-gui/res/cardsfolder/a/affa_guard_hound.txt index f7b1149512a..083260edfe8 100644 --- a/forge-gui/res/cardsfolder/a/affa_guard_hound.txt +++ b/forge-gui/res/cardsfolder/a/affa_guard_hound.txt @@ -7,4 +7,4 @@ T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.S SVar:TrigPump:DB$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDef$ +3 SVar:AmbushAI:True SVar:Picture:http://www.wizards.com/global/images/magic/general/affa_guard_hound.jpg -Oracle:Flash\nWhen Affa Guard Hound enters the battlefield, target creature gets +0/+3 until end of turn. +Oracle:Flash (You may cast this spell any time you could cast an instant.)\nWhen Affa Guard Hound enters the battlefield, target creature gets +0/+3 until end of turn. diff --git a/forge-gui/res/cardsfolder/a/ageless_sentinels.txt b/forge-gui/res/cardsfolder/a/ageless_sentinels.txt index 6a549ddb7c6..0a5f8bf39ed 100644 --- a/forge-gui/res/cardsfolder/a/ageless_sentinels.txt +++ b/forge-gui/res/cardsfolder/a/ageless_sentinels.txt @@ -4,8 +4,7 @@ Types:Creature Wall PT:4/4 K:Flying K:Defender -T:Mode$ Blocks | ValidCard$ Card.Self | Execute$ TrigDebuff | TriggerDescription$ When CARDNAME blocks, it becomes a Bird Giant, and it loses defender. -SVar:TrigDebuff:DB$ Debuff | Keywords$ Defender | Defined$ TriggeredBlocker | Permanent$ True | SubAbility$ Animate -SVar:Animate:DB$ Animate | Defined$ TriggeredBlocker | Types$ Bird,Giant | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | Permanent$ True +T:Mode$ Blocks | ValidCard$ Card.Self | Execute$ Animate | TriggerDescription$ When CARDNAME blocks, it becomes a Bird Giant, and it loses defender. +SVar:Animate:DB$ Animate | Defined$ TriggeredBlocker | Types$ Bird,Giant | RemoveCreatureTypes$ True | RemoveKeywords$ Defender | Permanent$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/ageless_sentinels.jpg Oracle:Defender (This creature can't attack.)\nFlying\nWhen Ageless Sentinels blocks, it becomes a Bird Giant, and it loses defender. (It's no longer a Wall. This effect lasts indefinitely.) diff --git a/forge-gui/res/cardsfolder/a/agent_of_masks.txt b/forge-gui/res/cardsfolder/a/agent_of_masks.txt index ceb1848ced6..3943bbc6976 100644 --- a/forge-gui/res/cardsfolder/a/agent_of_masks.txt +++ b/forge-gui/res/cardsfolder/a/agent_of_masks.txt @@ -8,4 +8,4 @@ SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ AFLifeLost SVar:AFLifeLost:Number$0 #AFLifeLost will be set by LoseLife SVar:Picture:http://www.wizards.com/global/images/magic/general/agent_of_masks.jpg -Oracle:At the beginning of your upkeep, each opponent loses 1 life. You gain life equal to the life lost this way. \ No newline at end of file +Oracle:At the beginning of your upkeep, each opponent loses 1 life. You gain life equal to the life lost this way. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/aggressive_instinct.txt b/forge-gui/res/cardsfolder/a/aggressive_instinct.txt new file mode 100644 index 00000000000..cd0229f81cd --- /dev/null +++ b/forge-gui/res/cardsfolder/a/aggressive_instinct.txt @@ -0,0 +1,7 @@ +Name:Aggressive Instinct +ManaCost:1 G +Types:Sorcery +A:SP$ Pump | Cost$ 1 G | ValidTgts$ Creature.YouCtrl | AILogic$ PowerDmg | TgtPrompt$ Select target creature you control | SubAbility$ SoulsDamage | StackDescription$ None | SpellDescription$ Target creature you control deals damage equal to its power to target creature you don't control +SVar:SoulsDamage:DB$ DealDamage | ValidTgts$ Creature.YouDontCtrl | AILogic$ PowerDmg | TgtPrompt$ Select target creature you don't control | NumDmg$ X | References$ X | ConditionDefined$ Targeted | ConditionPresent$ Creature | ConditionCompare$ EQ1 | DamageSource$ ParentTarget +SVar:X:ParentTargeted$CardPower +Oracle:Target creature you control deals damage equal to its power to target creature you don't control. diff --git a/forge-gui/res/cardsfolder/a/aggressive_mammoth.txt b/forge-gui/res/cardsfolder/a/aggressive_mammoth.txt new file mode 100644 index 00000000000..cfe7c612832 --- /dev/null +++ b/forge-gui/res/cardsfolder/a/aggressive_mammoth.txt @@ -0,0 +1,7 @@ +Name:Aggressive Mammoth +ManaCost:3 G G G +Types:Creature Elephant +K:Trample +S:Mode$ Continuous | Affected$ Creature.Other+YouCtrl | AddKeyword$ Trample | Description$ Other creatures you control have trample. +Oracle:Trample (This creature can deal excess combat damage to the player or planeswalker it’s attacking.)\nOther creatures you control have trample. +PT:8/8 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/agonizing_demise.txt b/forge-gui/res/cardsfolder/a/agonizing_demise.txt index 503cff35d2e..6e953d042d3 100644 --- a/forge-gui/res/cardsfolder/a/agonizing_demise.txt +++ b/forge-gui/res/cardsfolder/a/agonizing_demise.txt @@ -7,4 +7,4 @@ SVar:DBDamage:DB$ DealDamage | Defined$ TargetedController | NumDmg$ X | Referen SVar:X:Targeted$CardPower DeckHints:Color$Red SVar:Picture:http://www.wizards.com/global/images/magic/general/agonizing_demise.jpg -Oracle:Kicker {1}{R} (You may pay an additional {1}{R} as you cast this spell.)\nDestroy target nonblack creature. It can't be regenerated. If Agonizing Demise was kicked, it deals damage equal to that creature's power to the creature's controller. +Oracle:Kicker {1}{R} (You may pay an additional {1}{R} as you cast this spell.)\nDestroy target nonblack creature. It can't be regenerated. If this spell was kicked, Agonizing Demise deals damage equal to that creature's power to the creature's controller. diff --git a/forge-gui/res/cardsfolder/a/airdrop_aeronauts.txt b/forge-gui/res/cardsfolder/a/airdrop_aeronauts.txt index 4c578a42a74..934dd50be54 100644 --- a/forge-gui/res/cardsfolder/a/airdrop_aeronauts.txt +++ b/forge-gui/res/cardsfolder/a/airdrop_aeronauts.txt @@ -6,4 +6,4 @@ K:Flying T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigGainLife | Revolt$ True | TriggerDescription$ Revolt — When CARDNAME enters the battlefield, if a permanent you controlled left the battlefield this turn, you gain 5 life. SVar:TrigGainLife:DB$GainLife | LifeAmount$ 5 SVar:Picture:http://www.wizards.com/global/images/magic/general/airdrop_aeronauts.jpg -Oracle:Revolt — When Airdrop Aeronauts enters the battlefield, if a permanent you controlled left the battlefield this turn, you gain 5 life. \ No newline at end of file +Oracle:Flying\nRevolt — When Airdrop Aeronauts enters the battlefield, if a permanent you controlled left the battlefield this turn, you gain 5 life. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/airdrop_condor.txt b/forge-gui/res/cardsfolder/a/airdrop_condor.txt index 0c189c1498d..243e0471f2b 100644 --- a/forge-gui/res/cardsfolder/a/airdrop_condor.txt +++ b/forge-gui/res/cardsfolder/a/airdrop_condor.txt @@ -3,8 +3,8 @@ ManaCost:4 R Types:Creature Bird PT:2/2 K:Flying -A:AB$ DealDamage | Cost$ 1 R Sac<1/Creature.Goblin/Goblin creature> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to the sacrificed creature's power to target creature or player. +A:AB$ DealDamage | Cost$ 1 R Sac<1/Creature.Goblin/Goblin creature> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to the sacrificed creature's power to any target. SVar:X:Sacrificed$CardPower SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/airdrop_condor.jpg -Oracle:Flying\n{1}{R}, Sacrifice a Goblin creature: Airdrop Condor deals damage equal to the sacrificed creature's power to target creature or player. +Oracle:Flying\n{1}{R}, Sacrifice a Goblin creature: Airdrop Condor deals damage equal to the sacrificed creature's power to any target. diff --git a/forge-gui/res/cardsfolder/a/ajani_adversary_of_tyrants.txt b/forge-gui/res/cardsfolder/a/ajani_adversary_of_tyrants.txt new file mode 100644 index 00000000000..f23bec84e60 --- /dev/null +++ b/forge-gui/res/cardsfolder/a/ajani_adversary_of_tyrants.txt @@ -0,0 +1,11 @@ +Name:Ajani, Adversary of Tyrants +ManaCost:2 W W +Types:Legendary Planeswalker Ajani +A:AB$ PutCounter | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | CounterType$ P1P1 | CounterNum$ 1 | TargetMin$ 0 | TargetMax$ 2 | ValidTgts$ Creature | TgtPrompt$ Select target creature | SpellDescription$ Put a +1/+1 counter on each of up to two target creatures. +A:AB$ ChangeZone | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Card.Creature+cmcLE2+YouCtrl | TgtPrompt$ Select target creature card with converted mana cost 2 or less | SpellDescription$ Return target creature card with converted mana cost 2 or less from your graveyard to the battlefield. +A:AB$ Effect | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True | Name$ Emblem - Ajani, Adversary of Tyrants | Image$ emblem_ajani_adversary_of_tyrants | Triggers$ EffPhase | SVars$ EmblemTrigToken | Duration$ Permanent | SpellDescription$ You get an emblem with "At the beginning of your end step, create three 1/1 white Cat creature tokens with lifelink." +SVar:EffPhase:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | Execute$ EmblemTrigToken | TriggerDescription$ At the beginning of your end step, create three 1/1 white Cat creature tokens with lifelink. +SVar:EmblemTrigToken:DB$ Token | TokenOwner$ You | TokenAmount$ 3 | TokenPower$ 1 | TokenToughness$ 1 | TokenColors$ White | TokenTypes$ Cat,Creature | TokenKeywords$ Lifelink | TokenImage$ w 1 1 cat m19 +DeckHas:Ability$Counters & Ability$Token +Oracle:[+1]: Put a +1/+1 counter on each of up to two target creatures.\n[-2]: Return target creature card with converted mana cost 2 or less from your graveyard to the battlefield.\n[-7]: You get an emblem with "At the beginning of your end step, create three 1/1 white Cat creature tokens with lifelink." +Loyalty:4 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/ajani_caller_of_the_pride.txt b/forge-gui/res/cardsfolder/a/ajani_caller_of_the_pride.txt index 508c218c884..331eb690ebf 100644 --- a/forge-gui/res/cardsfolder/a/ajani_caller_of_the_pride.txt +++ b/forge-gui/res/cardsfolder/a/ajani_caller_of_the_pride.txt @@ -7,4 +7,4 @@ A:AB$ Pump | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | ValidTgts$ Creat A:AB$ Token | Cost$ SubCounter<8/LOYALTY> | Planeswalker$ True | TokenAmount$ X | References$ X | TokenName$ Cat | TokenTypes$ Creature,Cat | TokenOwner$ You | TokenColors$ White | TokenPower$ 2 | TokenToughness$ 2 | TokenImage$ w 2 2 cat M13 | Ultimate$ True | SpellDescription$ Create X 2/2 white Cat creature tokens, where X is your life total. SVar:X:Count$YourLifeTotal SVar:Picture:http://www.wizards.com/global/images/magic/general/ajani_caller_of_the_pride.jpg -Oracle:[+1]: Put a +1/+1 counter on up to one target creature.\n[-3]: Target creature gains flying and double strike until end of turn.\n[-8]: Create X 2/2 white Cat creature tokens, where X is your life total. +Oracle:+1: Put a +1/+1 counter on up to one target creature.\n−3: Target creature gains flying and double strike until end of turn.\n−8: Create X 2/2 white Cat creature tokens, where X is your life total. diff --git a/forge-gui/res/cardsfolder/a/ajani_goldmane.txt b/forge-gui/res/cardsfolder/a/ajani_goldmane.txt index f1d69f2cde6..32f6bbbca7e 100644 --- a/forge-gui/res/cardsfolder/a/ajani_goldmane.txt +++ b/forge-gui/res/cardsfolder/a/ajani_goldmane.txt @@ -9,4 +9,4 @@ A:AB$ Token | Cost$ SubCounter<6/LOYALTY> | TokenAmount$ 1 | TokenName$ Avatar | SVar:Static:Mode$ Continuous | SetPower$ X | SetToughness$ X | CharacteristicDefining$ True | Description$ This creature's power and toughness are each equal to your life total. SVar:X:Count$YourLifeTotal SVar:Picture:http://www.wizards.com/global/images/magic/general/ajani_goldmane.jpg -Oracle:[+1]: You gain 2 life.\n[-1]: Put a +1/+1 counter on each creature you control. Those creatures gain vigilance until end of turn.\n[-6]: Create a white Avatar creature token. It has "This creature's power and toughness are each equal to your life total." +Oracle:+1: You gain 2 life.\n−1: Put a +1/+1 counter on each creature you control. Those creatures gain vigilance until end of turn.\n−6: Create a white Avatar creature token. It has "This creature's power and toughness are each equal to your life total." diff --git a/forge-gui/res/cardsfolder/a/ajani_mentor_of_heroes.txt b/forge-gui/res/cardsfolder/a/ajani_mentor_of_heroes.txt index 63a284589fd..41b22b0974b 100644 --- a/forge-gui/res/cardsfolder/a/ajani_mentor_of_heroes.txt +++ b/forge-gui/res/cardsfolder/a/ajani_mentor_of_heroes.txt @@ -6,4 +6,4 @@ A:AB$ PutCounter | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | ValidTgts$ A:AB$ Dig | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | DigNum$ 4 | ChangeNum$ 1 | Optional$ True | ChangeValid$ Aura,Creature,Planeswalker | SpellDescription$ Look at the top four cards of your library. You may reveal an Aura, creature, or planeswalker card from among them and put that card into your hand. Put the rest on the bottom of your library in any order. A:AB$ GainLife | Cost$ SubCounter<8/LOYALTY> | Planeswalker$ True | Ultimate$ True | LifeAmount$ 100 | SpellDescription$ You gain 100 life. SVar:Picture:http://www.wizards.com/global/images/magic/general/ajani_mentor_of_heroes.jpg -Oracle:[+1]: Distribute three +1/+1 counters among one, two, or three target creatures you control.\n[+1]: Look at the top four cards of your library. You may reveal an Aura, creature, or planeswalker card from among them and put it into your hand. Put the rest on the bottom of your library in any order.\n[-8]: You gain 100 life. +Oracle:+1: Distribute three +1/+1 counters among one, two, or three target creatures you control.\n+1: Look at the top four cards of your library. You may reveal an Aura, creature, or planeswalker card from among them and put it into your hand. Put the rest on the bottom of your library in any order.\n−8: You gain 100 life. diff --git a/forge-gui/res/cardsfolder/a/ajani_steadfast.txt b/forge-gui/res/cardsfolder/a/ajani_steadfast.txt index 9fdd176d8e4..d5bedbb06ad 100644 --- a/forge-gui/res/cardsfolder/a/ajani_steadfast.txt +++ b/forge-gui/res/cardsfolder/a/ajani_steadfast.txt @@ -9,4 +9,4 @@ A:AB$ Effect | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True SVar:RPreventDamage:Event$ DamageDone | ValidTarget$ You,Planeswalker.YouCtrl | ReplaceWith$ PreventDmg | PreventionEffect$ True | Description$ If a source would deal damage to you or a planeswalker you control, prevent all but 1 of that damage. SVar:PreventDmg:DB$ ReplaceEffect | VarName$ DamageAmount | VarValue$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/ajani_steadfast.jpg -Oracle:[+1]: Until end of turn, up to one target creature gets +1/+1 and gains first strike, vigilance, and lifelink.\n[-2]: Put a +1/+1 counter on each creature you control and a loyalty counter on each other planeswalker you control.\n[-7]: You get an emblem with "If a source would deal damage to you or a planeswalker you control, prevent all but 1 of that damage." +Oracle:+1: Until end of turn, up to one target creature gets +1/+1 and gains first strike, vigilance, and lifelink.\n−2: Put a +1/+1 counter on each creature you control and a loyalty counter on each other planeswalker you control.\n−7: You get an emblem with "If a source would deal damage to you or a planeswalker you control, prevent all but 1 of that damage." diff --git a/forge-gui/res/cardsfolder/a/ajani_unyielding.txt b/forge-gui/res/cardsfolder/a/ajani_unyielding.txt index 05a6e006379..1cf03ca0462 100644 --- a/forge-gui/res/cardsfolder/a/ajani_unyielding.txt +++ b/forge-gui/res/cardsfolder/a/ajani_unyielding.txt @@ -10,4 +10,4 @@ SVar:X:RememberedLKI$CardPower A:AB$ PutCounterAll | Cost$ SubCounter<9/LOYALTY> | ValidCards$ Creature.YouCtrl | CounterType$ P1P1 | CounterNum$ 5 | Planeswalker$ True | Ultimate$ True | SubAbility$ DBPutCounterAll | SpellDescription$ Put five +1/+1 counters on each creature you control and five loyalty counters on each other planeswalker you control. SVar:DBPutCounterAll:DB$ PutCounterAll | ValidCards$ Planeswalker.YouCtrl+Other | CounterType$ LOYALTY | CounterNum$ 5 SVar:Picture:http://www.wizards.com/global/images/magic/general/ajani_unyielding.jpg -Oracle:[+2]: Reveal the top three cards of your library. Put all nonland permanent cards revealed this way into your hand and the rest on the bottom of your library in any order.\n[-2]: Exile target creature. Its controller gains life equal to its power.\n[-9]: Put five +1/+1 counters on each creature you control and five loyalty counters on each other planeswalker you control. +Oracle:+2: Reveal the top three cards of your library. Put all nonland permanent cards revealed this way into your hand and the rest on the bottom of your library in any order.\n−2: Exile target creature. Its controller gains life equal to its power.\n−9: Put five +1/+1 counters on each creature you control and five loyalty counters on each other planeswalker you control. diff --git a/forge-gui/res/cardsfolder/a/ajani_valiant_protector.txt b/forge-gui/res/cardsfolder/a/ajani_valiant_protector.txt index e4cdf822ec2..bd8e59409eb 100644 --- a/forge-gui/res/cardsfolder/a/ajani_valiant_protector.txt +++ b/forge-gui/res/cardsfolder/a/ajani_valiant_protector.txt @@ -9,4 +9,4 @@ SVar:DBPump:DB$ Pump | Defined$ Targeted | KW$ Trample SVar:X:Count$YourLifeTotal DeckHints:Name$Ajani's Aid SVar:Picture:http://www.wizards.com/global/images/magic/general/ajani_valiant_protector.jpg -Oracle:[+2]: Put two +1/+1 counters on up to one target creature.\n[+1]: Reveal cards from the top of your library until you reveal a creature card. Put that card into your hand and the rest on the bottom of your library in a random order.\n[-11]: Put X +1/+1 counters on target creature, where X is your life total. That creature gains trample until end of turn. +Oracle:+2: Put two +1/+1 counters on up to one target creature.\n+1: Reveal cards from the top of your library until you reveal a creature card. Put that card into your hand and the rest on the bottom of your library in a random order.\n−11: Put X +1/+1 counters on target creature, where X is your life total. That creature gains trample until end of turn. diff --git a/forge-gui/res/cardsfolder/a/ajani_vengeant.txt b/forge-gui/res/cardsfolder/a/ajani_vengeant.txt index 02699657fa1..b893f3015b4 100644 --- a/forge-gui/res/cardsfolder/a/ajani_vengeant.txt +++ b/forge-gui/res/cardsfolder/a/ajani_vengeant.txt @@ -3,8 +3,8 @@ ManaCost:2 R W Types:Legendary Planeswalker Ajani Loyalty:3 A:AB$ Pump | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | KW$ HIDDEN This card doesn't untap during your next untap step. | ValidTgts$ Permanent | Permanent$ True | IsCurse$ True | SpellDescription$ Target permanent doesn't untap during its controller's next untap step. -A:AB$ DealDamage | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 3 damage to target creature or player and you gain 3 life. +A:AB$ DealDamage | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 3 damage to any target and you gain 3 life. SVar:DBGainLife:DB$GainLife | LifeAmount$ 3 A:AB$ DestroyAll | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True | ValidTgts$ Player | TgtPrompt$ Select target player | ValidCards$ Land | SpellDescription$ Destroy all lands target player controls. SVar:Picture:http://www.wizards.com/global/images/magic/general/ajani_vengeant.jpg -Oracle:[+1]: Target permanent doesn't untap during its controller's next untap step.\n[-2]: Ajani Vengeant deals 3 damage to target creature or player and you gain 3 life.\n[-7]: Destroy all lands target player controls. +Oracle:+1: Target permanent doesn't untap during its controller's next untap step.\n−2: Ajani Vengeant deals 3 damage to any target and you gain 3 life.\n−7: Destroy all lands target player controls. diff --git a/forge-gui/res/cardsfolder/a/ajani_wise_counselor.txt b/forge-gui/res/cardsfolder/a/ajani_wise_counselor.txt new file mode 100644 index 00000000000..45c338f7781 --- /dev/null +++ b/forge-gui/res/cardsfolder/a/ajani_wise_counselor.txt @@ -0,0 +1,12 @@ +Name:Ajani, Wise Counselor +Types:Legendary Planeswalker Ajani +ManaCost:3 W W +A:AB$ GainLife | Cost$ AddCounter<2/LOYALTY> | Planeswalker$ True | Defined$ You | References$ Y | LifeAmount$ Y | SpellDescription$ You gain 1 life for each creature you control. +SVar:Y:Count$Valid Creature.YouCtrl +A:AB$ PumpAll | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | ValidCards$ Creature.YouCtrl | NumAtt$ +2 | NumDef$ +2 | SpellDescription$ Creatures you control get +2/+2 until end of turn. +SVar:PlayMain1:TRUE +A:AB$ PutCounter | Cost$ SubCounter<9/LOYALTY> | Planeswalker$ True | Ultimate$ True | CounterNum$ X | CounterType$ P1P1 | ValidTgts$ Creature | TgtPrompt$ Select target creature | SpellDescription$ Put X +1/+1 counters on target creature, where X is your life total. +SVar:X:Count$YourLifeTotal +DeckHas:Ability$Counters +Oracle:[+2]: You gain 1 life for each creature you control.\n[-3]: Creatures you control get +2/+2 until end of turn.\n[-9]: Put X +1/+1 counters on target creature, where X is your life total. +Loyalty:5 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/ajanis_influence.txt b/forge-gui/res/cardsfolder/a/ajanis_influence.txt new file mode 100644 index 00000000000..c61d3844120 --- /dev/null +++ b/forge-gui/res/cardsfolder/a/ajanis_influence.txt @@ -0,0 +1,7 @@ +Name:Ajani's Influence +ManaCost:2 W W +Types:Sorcery +A:SP$ PutCounter | Cost$ 2 W W | ValidTgts$ Creature | TgtPrompt$ Select target creature | CounterType$ P1P1 | CounterNum$ 2 | SpellDescription$ Put two +1/+1 counters on target creature.\nLook at the top five cards of your library. You may reveal a white card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. | SubAbility$ DBDig +SVar:DBDig:DB$ Dig | DigNum$ 5 | ChangeNum$ 1 | Optional$ True | ForceRevealToController$ True | ChangeValid$ Card.White | RestRandomOrder$ True +DeckHas:Ability$Counters +Oracle:Put two +1/+1 counters on target creature.\nLook at the top five cards of your library. You may reveal a white card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/ajanis_last_stand.txt b/forge-gui/res/cardsfolder/a/ajanis_last_stand.txt new file mode 100644 index 00000000000..24dc2c0bd80 --- /dev/null +++ b/forge-gui/res/cardsfolder/a/ajanis_last_stand.txt @@ -0,0 +1,8 @@ +Name:Ajani's Last Stand +ManaCost:2 W W +Types:Enchantment +T:Mode$ ChangesZone | ValidCard$ Creature.YouCtrl,Planeswalker.YouCtrl | Origin$ Battlefield | Destination$ Graveyard | Execute$ TrigDiesToken | TriggerZones$ Battlefield | TriggerDescription$ Whenever a creature or planeswalker you control dies, you may sacrifice CARDNAME. If you do, create a 4/4 white Avatar creature token with flying. +SVar:TrigDiesToken:AB$ Token | Cost$ Sac<1/CARDNAME> | TokenOwner$ You | TokenAmount$ 1 | TokenPower$ 4 | TokenToughness$ 4 | TokenColors$ White | TokenTypes$ Avatar,Creature | TokenKeywords$ Flying | TokenImage$ w 4 4 avatar +T:Mode$ Discarded | ValidCard$ Card.Self | ValidCause$ Card.OppCtrl | Execute$ TrigDiscardedToken | TriggerZones$ Battlefield | TriggerDescription$ When a spell or ability an opponent controls causes you to discard this card, if you control a Plains, create a 4/4 white Avatar creature token with flying. +SVar:TrigDiscardedToken:DB$ Token | ConditionPresent$ Plains.YouCtrl | ConditionCompare$ GE1 | TokenOwner$ You | TokenAmount$ 1 | TokenPower$ 4 | TokenToughness$ 4 | TokenColors$ White | TokenTypes$ Avatar,Creature | TokenKeywords$ Flying | TokenImage$ w 4 4 avatar +Oracle:Whenever a creature or planeswalker you control dies, you may sacrifice Ajani's Last Stand. If you do, create a 4/4 white Avatar creature token with flying.\nWhen a spell or ability an opponent controls causes you to discard this card, if you control a Plains, create a 4/4 white Avatar creature token with flying. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/ajanis_presence.txt b/forge-gui/res/cardsfolder/a/ajanis_presence.txt index 31fb6bf998f..369e87682dd 100644 --- a/forge-gui/res/cardsfolder/a/ajanis_presence.txt +++ b/forge-gui/res/cardsfolder/a/ajanis_presence.txt @@ -5,4 +5,4 @@ K:Strive:2 W A:SP$ Pump | Cost$ W | ValidTgts$ Creature | KW$ Indestructible | NumAtt$ +1 | NumDef$ +1 | TargetMin$ 0 | TargetMax$ MaxTargets | References$ MaxTargets | SpellDescription$ Any number of target creatures each get +1/+1 and gain indestructible until end of turn. SVar:MaxTargets:Count$Valid Creature SVar:Picture:http://www.wizards.com/global/images/magic/general/ajanis_presence.jpg -Oracle:Strive — Ajani's Presence costs {2}{W} more to cast for each target beyond the first.\nAny number of target creatures each get +1/+1 and gain indestructible until end of turn. (Damage and effects that say "destroy" don't destroy them.) +Oracle:Strive — This spell costs {2}{W} more to cast for each target beyond the first.\nAny number of target creatures each get +1/+1 and gain indestructible until end of turn. (Damage and effects that say "destroy" don't destroy them.) diff --git a/forge-gui/res/cardsfolder/a/ajanis_pridemate.txt b/forge-gui/res/cardsfolder/a/ajanis_pridemate.txt index 5d7153c6c80..41409051805 100644 --- a/forge-gui/res/cardsfolder/a/ajanis_pridemate.txt +++ b/forge-gui/res/cardsfolder/a/ajanis_pridemate.txt @@ -5,4 +5,6 @@ PT:2/2 T:Mode$ LifeGained | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | OptionalDecider$ You | TriggerDescription$ Whenever you gain life, you may put a +1/+1 counter on CARDNAME. SVar:TrigPutCounter:DB$PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/ajanis_pridemate.jpg +DeckHints:Ability$LifeGain +DeckHas:Ability$Counters Oracle:Whenever you gain life, you may put a +1/+1 counter on Ajani's Pridemate. diff --git a/forge-gui/res/cardsfolder/a/ajanis_welcome.txt b/forge-gui/res/cardsfolder/a/ajanis_welcome.txt new file mode 100644 index 00000000000..21dd08c4849 --- /dev/null +++ b/forge-gui/res/cardsfolder/a/ajanis_welcome.txt @@ -0,0 +1,6 @@ +Name:Ajani's Welcome +ManaCost:W +Types:Enchantment +T:Mode$ ChangesZone | TriggerZones$ Battlefield | ValidCard$ Creature.YouCtrl | Origin$ Any | Destination$ Battlefield | Execute$ TrigGainLife | TriggerDescription$ Whenever a creature enters the battlefield under your control, you gain 1 life. +SVar:TrigGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 1 +Oracle:Whenever a creature enters the battlefield under your control, you gain 1 life. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/akoum_boulderfoot.txt b/forge-gui/res/cardsfolder/a/akoum_boulderfoot.txt index 7a19c97a5c9..c9df933082a 100644 --- a/forge-gui/res/cardsfolder/a/akoum_boulderfoot.txt +++ b/forge-gui/res/cardsfolder/a/akoum_boulderfoot.txt @@ -2,7 +2,7 @@ Name:Akoum Boulderfoot ManaCost:4 R R Types:Creature Giant Warrior PT:4/5 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 1 damage to target creature or player. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 1 damage to any target. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/akoum_boulderfoot.jpg -Oracle:When Akoum Boulderfoot enters the battlefield, it deals 1 damage to target creature or player. +Oracle:When Akoum Boulderfoot enters the battlefield, it deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/a/akoum_hellkite.txt b/forge-gui/res/cardsfolder/a/akoum_hellkite.txt index 610fdd2507a..d887365b3ba 100644 --- a/forge-gui/res/cardsfolder/a/akoum_hellkite.txt +++ b/forge-gui/res/cardsfolder/a/akoum_hellkite.txt @@ -3,8 +3,8 @@ ManaCost:4 R R Types:Creature Dragon PT:4/4 K:Flying -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Land.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Landfall — CARDNAME deals 1 damage to target creature or player. If that land was a mountain, CARDNAME deals 2 damage instead. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Land.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Landfall — Whenever a land enters the battlefield under your control, CARDNAME deals 1 damage to any target. If that land was a mountain, CARDNAME deals 2 damage to that permanent or player instead. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | TgtPrompt$ Select any target | NumDmg$ X | References$ X SVar:X:TriggeredCard$Valid Mountain/Plus.1 SVar:Picture:http://www.wizards.com/global/images/magic/general/akoum_hellkite.jpg -Oracle:Flying\nLandfall — Akoum Hellkite deals 1 damage to target creature or player. If that land was a mountain, Akoum Hellkite deals 2 damage instead. \ No newline at end of file +Oracle:Flying\nLandfall — Whenever a land enters the battlefield under your control, Akoum Hellkite deals 1 damage to any target. If that land is a Mountain, Akoum Hellkite deals 2 damage to that permanent or player instead. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/akroan_jailer.txt b/forge-gui/res/cardsfolder/a/akroan_jailer.txt index 02c4dd6de94..fbea54629fb 100644 --- a/forge-gui/res/cardsfolder/a/akroan_jailer.txt +++ b/forge-gui/res/cardsfolder/a/akroan_jailer.txt @@ -5,4 +5,4 @@ PT:1/1 A:AB$ Tap | Cost$ 2 W T | ValidTgts$ Creature | TgtPrompt$ Select target creature | SpellDescription$ Tap target creature. SVar:NonCombatPriority:5 SVar:Picture:http://www.wizards.com/global/images/magic/general/akroan_jailer.jpg -Oracle:{2}{W}, {T}: Tap target creature. \ No newline at end of file +Oracle:{2}{W}, {T}: Tap target creature. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/akroan_line_breaker.txt b/forge-gui/res/cardsfolder/a/akroan_line_breaker.txt index b6f9a5bdf86..90c69c5aaee 100644 --- a/forge-gui/res/cardsfolder/a/akroan_line_breaker.txt +++ b/forge-gui/res/cardsfolder/a/akroan_line_breaker.txt @@ -5,4 +5,4 @@ PT:2/1 T:Mode$ SpellCast | ValidActivatingPlayer$ You | TargetsValid$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Heroic — Whenever you cast a spell that targets CARDNAME, CARDNAME gets +2/+0 and gains intimidate until end of turn. SVar:TrigPump:DB$ Pump | Defined$ Self | NumAtt$ +2 | KW$ Intimidate SVar:Picture:http://www.wizards.com/global/images/magic/general/akroan_line_breaker.jpg -Oracle:Heroic — Whenever you cast a spell that targets Akroan Line Breaker, Akroan Line Breaker gets +2/+0 and gains intimidate until end of turn. +Oracle:Heroic — Whenever you cast a spell that targets Akroan Line Breaker, Akroan Line Breaker gets +2/+0 and gains intimidate until end of turn. (It can't be blocked except by artifact creatures and/or creatures that share a color with it.) diff --git a/forge-gui/res/cardsfolder/a/akroma_angel_of_fury.txt b/forge-gui/res/cardsfolder/a/akroma_angel_of_fury.txt index 4f29c78e65a..7d8a8b4bad3 100644 --- a/forge-gui/res/cardsfolder/a/akroma_angel_of_fury.txt +++ b/forge-gui/res/cardsfolder/a/akroma_angel_of_fury.txt @@ -10,4 +10,4 @@ A:AB$ Pump | Cost$ R | NumAtt$ 1 | SpellDescription$ CARDNAME gets +1/+0 until e K:Morph:3 R R R K:CARDNAME can't be countered. SVar:Picture:http://resources.wizards.com/magic/cards/plc/en-us/card122432.jpg -Oracle:Akroma, Angel of Fury can't be countered.\nFlying, trample, protection from white and from blue\n{R}: Akroma, Angel of Fury gets +1/+0 until end of turn.\nMorph {3}{R}{R}{R} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.) +Oracle:This spell can't be countered.\nFlying, trample, protection from white and from blue\n{R}: Akroma, Angel of Fury gets +1/+0 until end of turn.\nMorph {3}{R}{R}{R} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.) diff --git a/forge-gui/res/cardsfolder/a/akroma_angel_of_wrath_avatar.txt b/forge-gui/res/cardsfolder/a/akroma_angel_of_wrath_avatar.txt index 34084f83682..f2f082249d6 100644 --- a/forge-gui/res/cardsfolder/a/akroma_angel_of_wrath_avatar.txt +++ b/forge-gui/res/cardsfolder/a/akroma_angel_of_wrath_avatar.txt @@ -5,4 +5,4 @@ HandLifeModifier:+1/+7 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | TriggerZones$ Command | ValidCard$ Creature.YouCtrl | Execute$ PumpRandom | TriggerDescription$ Whenever a creature enters the battlefield under your control, it gains two abilities chosen at random from flying, first strike, trample, haste, protection from black, protection from red, and vigilance. SVar:PumpRandom:DB$ Pump | Defined$ TriggeredCard | Permanent$ True | KW$ Flying & First Strike & Trample & Haste & Protection from black & Protection from red & Vigilance | RandomKeyword$ True | RandomKWNum$ 2 SVar:Picture:https://downloads.cardforge.org/images/cards/VAN/Akroma, Angel of Wrath Avatar.full.jpg -Oracle:Hand +1, life +7\nWhenever a creature enters the battlefield under your control, it gains two abilities chosen at random from flying, first strike, trample, haste, protection from black, protection from red, and vigilance. +Oracle:Whenever a creature enters the battlefield under your control, it gains two abilities chosen at random from flying, first strike, trample, haste, protection from black, protection from red, and vigilance. diff --git a/forge-gui/res/cardsfolder/a/alabaster_potion.txt b/forge-gui/res/cardsfolder/a/alabaster_potion.txt index e3658359336..72114b687f8 100644 --- a/forge-gui/res/cardsfolder/a/alabaster_potion.txt +++ b/forge-gui/res/cardsfolder/a/alabaster_potion.txt @@ -3,7 +3,7 @@ ManaCost:X W W Types:Instant A:SP$ Charm | Cost$ X W W | Choices$ DBGainLife,DBPreventDamage SVar:DBGainLife:DB$ GainLife | ValidTgts$ Player | TgtPrompt$ Select target player | LifeAmount$ X | References$ X | SpellDescription$ Target player gains X life. -SVar:DBPreventDamage:DB$ PreventDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ X | References$ X | SpellDescription$ Prevent the next X damage that would be dealt to target creature or player this turn. +SVar:DBPreventDamage:DB$ PreventDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ X | References$ X | SpellDescription$ Prevent the next X damage that would be dealt to any target this turn. SVar:X:Count$xPaid SVar:Picture:http://www.wizards.com/global/images/magic/general/alabaster_potion.jpg -Oracle:Choose one —\n• Target player gains X life.\n• Prevent the next X damage that would be dealt to target creature or player this turn. +Oracle:Choose one —\n• Target player gains X life.\n• Prevent the next X damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/a/alabaster_wall.txt b/forge-gui/res/cardsfolder/a/alabaster_wall.txt index fd382f1c6f2..c383bb54a0c 100644 --- a/forge-gui/res/cardsfolder/a/alabaster_wall.txt +++ b/forge-gui/res/cardsfolder/a/alabaster_wall.txt @@ -3,6 +3,6 @@ ManaCost:2 W Types:Creature Wall PT:0/4 K:Defender -A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to any target this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/alabaster_wall.jpg -Oracle:Defender (This creature can't attack.)\n{T}: Prevent the next 1 damage that would be dealt to target creature or player this turn. +Oracle:Defender (This creature can't attack.)\n{T}: Prevent the next 1 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/a/aladdins_ring.txt b/forge-gui/res/cardsfolder/a/aladdins_ring.txt index 0056694cc52..f7503c26945 100644 --- a/forge-gui/res/cardsfolder/a/aladdins_ring.txt +++ b/forge-gui/res/cardsfolder/a/aladdins_ring.txt @@ -1,6 +1,6 @@ Name:Aladdin's Ring ManaCost:8 Types:Artifact -A:AB$ DealDamage | Cost$ 8 T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target creature or player. +A:AB$ DealDamage | Cost$ 8 T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/aladdins_ring.jpg -Oracle:{8}, {T}: Aladdin's Ring deals 4 damage to target creature or player. +Oracle:{8}, {T}: Aladdin's Ring deals 4 damage to any target. diff --git a/forge-gui/res/cardsfolder/a/aleatory.txt b/forge-gui/res/cardsfolder/a/aleatory.txt index 7fe8640d661..96e6ad3e7cf 100644 --- a/forge-gui/res/cardsfolder/a/aleatory.txt +++ b/forge-gui/res/cardsfolder/a/aleatory.txt @@ -8,4 +8,4 @@ SVar:DelTrigSlowtrip:DB$ DelayedTrigger | Mode$ Phase | Phase$ Upkeep | ValidPla SVar:DrawSlowtrip:DB$ Draw | NumCards$ 1 | Defined$ You SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/aleatory.jpg -Oracle:Cast Aleatory only during combat after blockers are declared.\nFlip a coin. If you win the flip, target creature gets +1/+1 until end of turn.\nDraw a card at the beginning of the next turn's upkeep. +Oracle:Cast this spell only during combat after blockers are declared.\nFlip a coin. If you win the flip, target creature gets +1/+1 until end of turn.\nDraw a card at the beginning of the next turn's upkeep. diff --git a/forge-gui/res/cardsfolder/a/alhammarret_high_arbiter.txt b/forge-gui/res/cardsfolder/a/alhammarret_high_arbiter.txt index 92034f7045d..9598b3b7cd5 100644 --- a/forge-gui/res/cardsfolder/a/alhammarret_high_arbiter.txt +++ b/forge-gui/res/cardsfolder/a/alhammarret_high_arbiter.txt @@ -8,5 +8,5 @@ SVar:RevealHand:DB$ RevealHand | Defined$ Player.Opponent | RememberRevealed$ Tr SVar:DBNameCard:DB$ NameCard | Defined$ You | ValidCards$ Card.nonLand | ChooseFromDefinedCards$ Remembered | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True S:Mode$ CantBeCast | ValidCard$ Card.NamedCard | Caster$ Player.Opponent | Description$ Your opponents can't cast spells with the chosen name (as long as this creature is on the battlefield). -SVar:Picture:http://www.wizards.com/global/images/magic/general/alhammaret_high_arbiter.jpg -Oracle:Flying\nAs Alhammaret, High Arbiter enters the battlefield, each opponent reveals their hand. You choose the name of a nonland card revealed this way.\nYour opponents can't cast spells with the chosen name (as long as this creature is on the battlefield). +SVar:Picture:http://www.wizards.com/global/images/magic/general/alhammarret_high_arbiter.jpg +Oracle:Flying\nAs Alhammarret, High Arbiter enters the battlefield, each opponent reveals their hand. You choose the name of a nonland card revealed this way.\nYour opponents can't cast spells with the chosen name (as long as this creature is on the battlefield). diff --git a/forge-gui/res/cardsfolder/a/allosaurus_rider.txt b/forge-gui/res/cardsfolder/a/allosaurus_rider.txt index 0da1e86af23..b7362115849 100644 --- a/forge-gui/res/cardsfolder/a/allosaurus_rider.txt +++ b/forge-gui/res/cardsfolder/a/allosaurus_rider.txt @@ -6,4 +6,4 @@ S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ SVar:X:Count$Valid Land.YouCtrl/Plus.1 SVar:AltCost:Cost$ ExileFromHand<2/Card.Green> | Description$ You may exile two green cards from your hand rather than pay CARDNAME's mana cost. SVar:Picture:http://www.wizards.com/global/images/magic/general/allosaurus_rider.jpg -Oracle:You may exile two green cards from your hand rather than pay Allosaurus Rider's mana cost.\nAllosaurus Rider's power and toughness are each equal to 1 plus the number of lands you control. +Oracle:You may exile two green cards from your hand rather than pay this spell's mana cost.\nAllosaurus Rider's power and toughness are each equal to 1 plus the number of lands you control. diff --git a/forge-gui/res/cardsfolder/a/alpine_moon.txt b/forge-gui/res/cardsfolder/a/alpine_moon.txt new file mode 100644 index 00000000000..18a35f87130 --- /dev/null +++ b/forge-gui/res/cardsfolder/a/alpine_moon.txt @@ -0,0 +1,8 @@ +Name:Alpine Moon +ManaCost:R +Types:Enchantment +K:ETBReplacement:Other:DBNameCard +SVar:DBNameCard:DB$ NameCard | Defined$ You | ValidCards$ Card.Land+nonBasic | ValidDesc$ nonbasic land | SpellDescription$ As CARDNAME enters the battlefield, choose a nonbasic land card name. +S:Mode$ Continuous | Affected$ Land.NamedCard+OppCtrl | AffectedZones$ All | RemoveAllAbilities$ True | RemoveCardTypes$ True | AddType$ Land | AddAbility$ ABMana | Description$ Lands your opponents control with the chosen name lose all land types and abilities, and they gain "{T}: Add one mana of any color." +SVar:ABMana:AB$ Mana | Cost$ T | Produced$ Any | Amount$ 1 | SpellDescription$ Add one mana of any color. +Oracle:As Alpine Moon enters the battlefield, choose a nonbasic land card name.\nLands your opponents control with the chosen name lose all land types and abilities, and they gain "{T}: Add one mana of any color." \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/altar_of_bone.txt b/forge-gui/res/cardsfolder/a/altar_of_bone.txt index 7e5ccd910e7..ed9af35099c 100644 --- a/forge-gui/res/cardsfolder/a/altar_of_bone.txt +++ b/forge-gui/res/cardsfolder/a/altar_of_bone.txt @@ -4,4 +4,4 @@ Types:Sorcery A:SP$ ChangeZone | Cost$ G W Sac<1/Creature> | Origin$ Library | Destination$ Hand | ChangeType$ Creature | ChangeNum$ 1 | AILogic$ SacAndUpgrade+SacWorst | SpellDescription$ Search your library for a creature card, reveal that card, and put it into your hand. Then shuffle your library. SVar:AIPreference:SacCost$Creature SVar:Picture:http://www.wizards.com/global/images/magic/general/altar_of_bone.jpg -Oracle:As an additional cost to cast Altar of Bone, sacrifice a creature.\nSearch your library for a creature card, reveal that card, and put it into your hand. Then shuffle your library. +Oracle:As an additional cost to cast this spell, sacrifice a creature.\nSearch your library for a creature card, reveal that card, and put it into your hand. Then shuffle your library. diff --git a/forge-gui/res/cardsfolder/a/altar_of_shadows.txt b/forge-gui/res/cardsfolder/a/altar_of_shadows.txt index bb9cb893f77..2ed3f0b5997 100644 --- a/forge-gui/res/cardsfolder/a/altar_of_shadows.txt +++ b/forge-gui/res/cardsfolder/a/altar_of_shadows.txt @@ -2,7 +2,7 @@ Name:Altar of Shadows ManaCost:7 Types:Artifact T:Mode$ Phase | Phase$ Main1 | PreCombatMain$ True | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigGetMana | TriggerDescription$ At the beginning of your precombat main phase, add {B} for each charge counter on CARDNAME. -SVar:TrigGetMana:DB$ Mana | Produced$ B | Amount$ X | References$ X | SpellDescription$ Add {X}{B} +SVar:TrigGetMana:DB$ Mana | Produced$ B | Amount$ X | References$ X | SpellDescription$ Add {B} for each charge counter on CARDNAME. A:AB$ Destroy | Cost$ 7 T | ValidTgts$ Creature | TgtPrompt$ Select target creature | SubAbility$ DBPutCounter | SpellDescription$ Destroy target creature. Then put a charge counter on CARDNAME. SVar:DBPutCounter:DB$PutCounter | Defined$ Self | CounterType$ CHARGE | CounterNum$ 1 SVar:X:Count$CardCounters.CHARGE diff --git a/forge-gui/res/cardsfolder/a/altars_reap.txt b/forge-gui/res/cardsfolder/a/altars_reap.txt index 1aa9f60bd74..4da7d0e631e 100644 --- a/forge-gui/res/cardsfolder/a/altars_reap.txt +++ b/forge-gui/res/cardsfolder/a/altars_reap.txt @@ -4,4 +4,4 @@ Types:Instant A:SP$ Draw | Cost$ 1 B Sac<1/Creature> | NumCards$ 2 | SpellDescription$ Draw two cards. SVar:AIPreference:SacCost$Creature.token+powerLE2+toughnessLE2,Creature.cmcLE2+powerLE1+toughnessLE2+inZoneBattlefield SVar:Picture:http://www.wizards.com/global/images/magic/general/altars_reap.jpg -Oracle:As an additional cost to cast Altar's Reap, sacrifice a creature.\nDraw two cards. +Oracle:As an additional cost to cast this spell, sacrifice a creature.\nDraw two cards. diff --git a/forge-gui/res/cardsfolder/a/alter_reality.txt b/forge-gui/res/cardsfolder/a/alter_reality.txt index 7e929d7f51c..309a7c02897 100644 --- a/forge-gui/res/cardsfolder/a/alter_reality.txt +++ b/forge-gui/res/cardsfolder/a/alter_reality.txt @@ -1,7 +1,7 @@ Name:Alter Reality ManaCost:1 U Types:Instant -K:Flashback 1 U +K:Flashback:1 U A:SP$ ChangeText | Cost$ 1 U | ValidTgts$ Card | TgtZone$ Stack,Battlefield | TgtPrompt$ Choose target spell or permanent | Permanent$ True | ChangeColorWord$ Choose Choose | SpellDescription$ Change the text of target spell or permanent by replacing all instances of one color word with another. (This effect lasts indefinitely.) SVar:RemRandomDeck:True SVar:RemAIDeck:True diff --git a/forge-gui/res/cardsfolder/a/altered_ego.txt b/forge-gui/res/cardsfolder/a/altered_ego.txt index 1c111a9a06c..2abb7970b14 100644 --- a/forge-gui/res/cardsfolder/a/altered_ego.txt +++ b/forge-gui/res/cardsfolder/a/altered_ego.txt @@ -3,10 +3,10 @@ ManaCost:X 2 G U Types:Creature Shapeshifter PT:0/0 K:CARDNAME can't be countered. -K:ETBReplacement:Copy:ChooseCreature:Optional -SVar:ChooseCreature:DB$ ChooseCard | Defined$ You | Amount$ 1 | Choices$ Creature.Other | SubAbility$ DBCopy | AILogic$ Clone | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of any creature on the battlefield, except it enters with X additional +1/+1 counters on it. -SVar:DBCopy:DB$ Clone | Defined$ ChosenCard | SubAbility$ DBAddCounter +K:ETBReplacement:Copy:DBCopy:Optional +SVar:DBCopy:DB$ Clone | Choices$ Creature.Other | SubAbility$ DBAddCounter | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of any creature on the battlefield, except it enters with X additional +1/+1 counters on it. SVar:DBAddCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | ETB$ True | CounterNum$ X | References$ X SVar:X:Count$xPaid +DeckHas:Ability$Counter SVar:Picture:http://www.wizards.com/global/images/magic/general/altered_ego.jpg -Oracle:Altered Ego can't be countered.\n You may have Altered Ego enter the battlefield as a copy of any creature on the battlefield, except it enters with X additional +1/+1 counters on it. \ No newline at end of file +Oracle:This spell can't be countered.\nYou may have Altered Ego enter the battlefield as a copy of any creature on the battlefield, except it enters with X additional +1/+1 counters on it. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/aminatous_augury.txt b/forge-gui/res/cardsfolder/a/aminatous_augury.txt new file mode 100644 index 00000000000..e36a1622dd1 --- /dev/null +++ b/forge-gui/res/cardsfolder/a/aminatous_augury.txt @@ -0,0 +1,17 @@ +Name:Aminatou's Augury +ManaCost:6 U U +Types:Sorcery +A:SP$ Mill | Cost$ 6 U U | Defined$ You | NumCards$ 8 | Destination$ Exile | RememberMilled$ True | SubAbility$ DBChooseLand | SpellDescription$ Exile the top eight cards of your library. You may put a land card from among them onto the battlefield. Until end of turn, for each nonland card type, you may cast a card of that type from among the exiled cards without paying its mana cost. +SVar:DBChooseLand:DB$ ChooseCard | Defined$ You | Choices$ Land.IsRemembered | Mandatory$ True | Amount$ 1 | ChoiceZone$ Exile | SubAbility$ DBChangeZone +SVar:DBChangeZone:DB$ ChangeZone | Optional$ True | Defined$ ChosenCard | Origin$ Exile | Destination$ Battlefield | ChangeNum$ 1 | ForgetChanged$ True | SubAbility$ DBCleanupChosen +SVar:DBCleanupChosen:DB$ Cleanup | ClearChosenCard$ True | SubAbility$ DBEffect +SVar:DBEffect:DB$Effect | RememberObjects$ RememberedCard | StaticAbilities$ PlayCr,PlayPl,PlayAr,PlayEn,PlayIn,PlaySo,PlayTr | SubAbility$ DBCleanup | ForgetOnMoved$ Exile +SVar:PlayCr:Mode$ Continuous | Affected$ Creature.YouCtrl+IsRemembered | MayPlay$ True | MayPlayWithoutManaCost$ True | MayPlayLimit$ 1 | MayPlayText$ Creature | EffectZone$ Command | AffectedZone$ Exile +SVar:PlayPl:Mode$ Continuous | Affected$ Planeswalker.YouCtrl+IsRemembered | MayPlay$ True | MayPlayWithoutManaCost$ True | MayPlayLimit$ 1 | MayPlayText$ Planeswalker | EffectZone$ Command | AffectedZone$ Exile +SVar:PlayAr:Mode$ Continuous | Affected$ Artifact.YouCtrl+IsRemembered | MayPlay$ True | MayPlayWithoutManaCost$ True | MayPlayLimit$ 1 | MayPlayText$ Artifact | EffectZone$ Command | AffectedZone$ Exile +SVar:PlayEn:Mode$ Continuous | Affected$ Enchantment.YouCtrl+IsRemembered | MayPlay$ True | MayPlayWithoutManaCost$ True | MayPlayLimit$ 1 | MayPlayText$ Enchantment | EffectZone$ Command | AffectedZone$ Exile +SVar:PlayIn:Mode$ Continuous | Affected$ Instant.YouCtrl+IsRemembered | MayPlay$ True | MayPlayWithoutManaCost$ True | MayPlayLimit$ 1 | MayPlayText$ Instant | EffectZone$ Command | AffectedZone$ Exile +SVar:PlaySo:Mode$ Continuous | Affected$ Sorcery.YouCtrl+IsRemembered | MayPlay$ True | MayPlayWithoutManaCost$ True | MayPlayLimit$ 1 | MayPlayText$ Sorcery | EffectZone$ Command | AffectedZone$ Exile +SVar:PlayTr:Mode$ Continuous | Affected$ Tribal.YouCtrl+IsRemembered | MayPlay$ True | MayPlayWithoutManaCost$ True | MayPlayLimit$ 1 | MayPlayText$ Tribal | EffectZone$ Command | AffectedZone$ Exile +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:Exile the top eight cards of your library. You may put a land card from among them onto the battlefield. Until end of turn, for each nonland card type, you may cast a card of that type from among the exiled cards without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/a/ammit_eternal.txt b/forge-gui/res/cardsfolder/a/ammit_eternal.txt index fca0a89eaec..4dcc40269e2 100644 --- a/forge-gui/res/cardsfolder/a/ammit_eternal.txt +++ b/forge-gui/res/cardsfolder/a/ammit_eternal.txt @@ -2,7 +2,7 @@ Name:Ammit Eternal ManaCost:2 B Types:Creature Zombie Crocodile Demon PT:5/5 -K:Afflict 3 +K:Afflict:3 T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ Opponent | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever an opponent casts a spell, put a -1/-1 counter on CARDNAME. T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigRemoveCounter | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, remove all -1/-1 counters from it. SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ M1M1 | CounterNum$ 1 diff --git a/forge-gui/res/cardsfolder/a/amulet_of_kroog.txt b/forge-gui/res/cardsfolder/a/amulet_of_kroog.txt index fbc738570b8..4a649f44c98 100644 --- a/forge-gui/res/cardsfolder/a/amulet_of_kroog.txt +++ b/forge-gui/res/cardsfolder/a/amulet_of_kroog.txt @@ -1,6 +1,6 @@ Name:Amulet of Kroog ManaCost:2 Types:Artifact -A:AB$ PreventDamage | Cost$ 2 T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ 2 T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to any target this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/amulet_of_kroog.jpg -Oracle:{2}, {T}: Prevent the next 1 damage that would be dealt to target creature or player this turn. +Oracle:{2}, {T}: Prevent the next 1 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/a/amulet_of_safekeeping.txt b/forge-gui/res/cardsfolder/a/amulet_of_safekeeping.txt new file mode 100644 index 00000000000..def487acbc1 --- /dev/null +++ b/forge-gui/res/cardsfolder/a/amulet_of_safekeeping.txt @@ -0,0 +1,9 @@ +Name:Amulet of Safekeeping +ManaCost:2 +Types:Artifact +T:Mode$ BecomesTarget | ValidSource$ Card.OppCtrl | ValidTarget$ You | TriggerZones$ Battlefield | Execute$ TrigCounter | TriggerDescription$ Whenever you become the target of a spell or ability an opponent controls, counter that spell or ability unless its controller pays {1}. +SVar:TrigCounter:DB$ Counter | Defined$ TriggeredSourceSA | UnlessCost$ 1 | UnlessPayer$ TriggeredSourceSAController +S:Mode$ Continuous | Affected$ Creature.token | AddPower$ -1 | Description$ Creature tokens get -1/-0. +SVar:PlayMain1:TRUE +SVar:Picture:http://www.wizards.com/global/images/magic/general/amulet_of_safekeeping.jpg +Oracle:Whenever you become the target of a spell or ability an opponent controls, counter that spell or ability unless its controller pays {1}.\nCreature tokens get -1/-0. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/anaba_bodyguard.txt b/forge-gui/res/cardsfolder/a/anaba_bodyguard.txt index 6f1ff2d4324..13dbc662660 100644 --- a/forge-gui/res/cardsfolder/a/anaba_bodyguard.txt +++ b/forge-gui/res/cardsfolder/a/anaba_bodyguard.txt @@ -4,4 +4,4 @@ Types:Creature Minotaur PT:2/3 K:First Strike SVar:Picture:http://www.wizards.com/global/images/magic/general/anaba_bodyguard.jpg -Oracle:First strike \ No newline at end of file +Oracle:First strike (This creature deals combat damage before creatures without first strike.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/anaba_shaman.txt b/forge-gui/res/cardsfolder/a/anaba_shaman.txt index 77007441661..874fe0ac4aa 100644 --- a/forge-gui/res/cardsfolder/a/anaba_shaman.txt +++ b/forge-gui/res/cardsfolder/a/anaba_shaman.txt @@ -2,6 +2,6 @@ Name:Anaba Shaman ManaCost:3 R Types:Creature Minotaur Shaman PT:2/2 -A:AB$ DealDamage | Cost$ R T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ R T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/anaba_shaman.jpg -Oracle:{R}, {T}: Anaba Shaman deals 1 damage to target creature or player. +Oracle:{R}, {T}: Anaba Shaman deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/a/ancestor_dragon.txt b/forge-gui/res/cardsfolder/a/ancestor_dragon.txt new file mode 100644 index 00000000000..13219856cea --- /dev/null +++ b/forge-gui/res/cardsfolder/a/ancestor_dragon.txt @@ -0,0 +1,10 @@ +Name:Ancestor Dragon +ManaCost:4 W W +Types:Creature Dragon +K:Flying +T:Mode$ AttackersDeclared | AttackingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigGainLife | TriggerDescription$ Whenever one or more creatures you control attack, you gain 1 life for each attacking creature. +SVar:TrigGainLife:DB$ GainLife | Defined$ You | LifeAmount$ X | References$ X +SVar:X:Count$Valid Creature.attacking +SVar:HasAttackEffect:TRUE +Oracle:Flying\nWhenever one or more creatures you control attack, you gain 1 life for each attacking creature. +PT:5/6 diff --git a/forge-gui/res/cardsfolder/a/ancestors_chosen.txt b/forge-gui/res/cardsfolder/a/ancestors_chosen.txt index affa384720f..cda04fdb6ad 100644 --- a/forge-gui/res/cardsfolder/a/ancestors_chosen.txt +++ b/forge-gui/res/cardsfolder/a/ancestors_chosen.txt @@ -7,4 +7,4 @@ T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.S SVar:TrigGainLife:DB$GainLife | Defined$ You | LifeAmount$ X | References$ X SVar:X:Count$InYourYard SVar:Picture:http://www.wizards.com/global/images/magic/general/ancestors_chosen.jpg -Oracle:First strike\nWhen Ancestor's Chosen enters the battlefield, you gain 1 life for each card in your graveyard. +Oracle:First strike (This creature deals combat damage before creatures without first strike.)\nWhen Ancestor's Chosen enters the battlefield, you gain 1 life for each card in your graveyard. diff --git a/forge-gui/res/cardsfolder/a/ancestral_tribute.txt b/forge-gui/res/cardsfolder/a/ancestral_tribute.txt index 8a1b62bb2b1..ca146393e8b 100644 --- a/forge-gui/res/cardsfolder/a/ancestral_tribute.txt +++ b/forge-gui/res/cardsfolder/a/ancestral_tribute.txt @@ -1,7 +1,7 @@ Name:Ancestral Tribute ManaCost:5 W W Types:Sorcery -K:Flashback 9 W W W +K:Flashback:9 W W W A:SP$ GainLife | Cost$ 5 W W | LifeAmount$ X | References$ X | SpellDescription$ You gain 2 life for each card in your graveyard. SVar:X:Count$InYourYard/Times.2 SVar:Picture:http://www.wizards.com/global/images/magic/general/ancestral_tribute.jpg diff --git a/forge-gui/res/cardsfolder/a/anchor_to_the_aether.txt b/forge-gui/res/cardsfolder/a/anchor_to_the_aether.txt index 1cb610b4bbd..b139cd8e9fa 100644 --- a/forge-gui/res/cardsfolder/a/anchor_to_the_aether.txt +++ b/forge-gui/res/cardsfolder/a/anchor_to_the_aether.txt @@ -4,4 +4,4 @@ Types:Sorcery A:SP$ ChangeZone | Cost$ 2 U | ValidTgts$ Creature | TgtPrompt$ Select target creature | Origin$ Battlefield | Destination$ Library | LibraryPosition$ 0 | SubAbility$ DBScry | SpellDescription$ Put target creature on top of its owner's library. Scry 1. SVar:DBScry:DB$ Scry | ScryNum$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/anchor_to_the_aether.jpg -Oracle:Put target creature on top of its owner's library. Scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) +Oracle:Put target creature on top of its owner's library. Scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) diff --git a/forge-gui/res/cardsfolder/a/ancient_den.txt b/forge-gui/res/cardsfolder/a/ancient_den.txt index 55eb606000e..cea59ec508b 100644 --- a/forge-gui/res/cardsfolder/a/ancient_den.txt +++ b/forge-gui/res/cardsfolder/a/ancient_den.txt @@ -3,4 +3,4 @@ ManaCost:no cost Types:Artifact Land A:AB$ Mana | Cost$ T | Produced$ W | SpellDescription$ Add {W}. SVar:Picture:http://www.wizards.com/global/images/magic/general/ancient_den.jpg -Oracle:{T}: Add {W}. +Oracle:(Ancient Den isn't a spell.)\n{T}: Add {W}. diff --git a/forge-gui/res/cardsfolder/a/ancient_grudge.txt b/forge-gui/res/cardsfolder/a/ancient_grudge.txt index 72b8da679b8..92394cb7e30 100644 --- a/forge-gui/res/cardsfolder/a/ancient_grudge.txt +++ b/forge-gui/res/cardsfolder/a/ancient_grudge.txt @@ -1,7 +1,7 @@ Name:Ancient Grudge ManaCost:1 R Types:Instant -K:Flashback G +K:Flashback:G A:SP$ Destroy | Cost$ 1 R | ValidTgts$ Artifact | TgtPrompt$ Select target artifact. | SpellDescription$ Destroy target artifact. SVar:Picture:http://www.wizards.com/global/images/magic/general/ancient_grudge.jpg Oracle:Destroy target artifact.\nFlashback {G} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/a/ancient_hydra.txt b/forge-gui/res/cardsfolder/a/ancient_hydra.txt index 0d4766845bb..b4a76bf2acb 100644 --- a/forge-gui/res/cardsfolder/a/ancient_hydra.txt +++ b/forge-gui/res/cardsfolder/a/ancient_hydra.txt @@ -3,6 +3,6 @@ ManaCost:4 R Types:Creature Hydra PT:5/1 K:Fading:5 -A:AB$ DealDamage | Cost$ 1 SubCounter<1/FADE> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ 1 SubCounter<1/FADE> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/ancient_hydra.jpg -Oracle:Fading 5 (This creature enters the battlefield with five fade counters on it. At the beginning of your upkeep, remove a fade counter from it. If you can't, sacrifice it.)\n{1}, Remove a fade counter from Ancient Hydra: Ancient Hydra deals 1 damage to target creature or player. +Oracle:Fading 5 (This creature enters the battlefield with five fade counters on it. At the beginning of your upkeep, remove a fade counter from it. If you can't, sacrifice it.)\n{1}, Remove a fade counter from Ancient Hydra: Ancient Hydra deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/a/ancient_spider.txt b/forge-gui/res/cardsfolder/a/ancient_spider.txt index 2f73645dc96..f4bacc1f2fe 100644 --- a/forge-gui/res/cardsfolder/a/ancient_spider.txt +++ b/forge-gui/res/cardsfolder/a/ancient_spider.txt @@ -5,4 +5,4 @@ PT:2/5 K:First Strike K:Reach SVar:Picture:http://www.wizards.com/global/images/magic/general/ancient_spider.jpg -Oracle:First strike, reach (This creature can block creatures with flying.) +Oracle:First strike; reach (This creature can block creatures with flying.) diff --git a/forge-gui/res/cardsfolder/a/ancient_stone_idol.txt b/forge-gui/res/cardsfolder/a/ancient_stone_idol.txt new file mode 100644 index 00000000000..5a6864a92ca --- /dev/null +++ b/forge-gui/res/cardsfolder/a/ancient_stone_idol.txt @@ -0,0 +1,12 @@ +Name:Ancient Stone Idol +ManaCost:10 +Types:Artifact Creature Golem +PT:12/12 +K:Flash +S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ X | EffectZone$ All | Description$ CARDNAME costs {1} less to cast for each attacking creature. +SVar:X:Count$Valid Creature.attacking +K:Trample +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigToken | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, create a 6/12 colorless Construct artifact creature token with trample. +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenName$ Construct | TokenTypes$ Artifact,Creature,Construct | TokenOwner$ You | TokenColors$ Colorless | TokenPower$ 6 | TokenToughness$ 12 | TokenKeywords$ Trample +SVar:SacMe:4 +Oracle:Flash\nThis spell costs {1} less to cast for each attacking creature.\nTrample\nWhen Ancient Stone Idol dies, create a 6/12 colorless Construct artifact creature token with trample. diff --git a/forge-gui/res/cardsfolder/a/angel_of_salvation.txt b/forge-gui/res/cardsfolder/a/angel_of_salvation.txt index dd70da82958..5f770aaa2e6 100644 --- a/forge-gui/res/cardsfolder/a/angel_of_salvation.txt +++ b/forge-gui/res/cardsfolder/a/angel_of_salvation.txt @@ -5,9 +5,9 @@ PT:5/5 K:Flash K:Convoke K:Flying -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Self | Execute$ AngelicSalvation | TriggerDescription$ When CARDNAME enters the battlefield, prevent the next 5 damage that would be dealt this turn to any number of target creatures and/or players, divided as you choose. -SVar:AngelicSalvation:DB$ PreventDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to prevent damage to | Amount$ 5 | TargetMin$ 1 | TargetMax$ 5 | DividedAsYouChoose$ 5 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Self | Execute$ AngelicSalvation | TriggerDescription$ When CARDNAME enters the battlefield, prevent the next 5 damage that would be dealt this turn to any number of targets, divided as you choose. +SVar:AngelicSalvation:DB$ PreventDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select targets to prevent damage to | Amount$ 5 | TargetMin$ 1 | TargetMax$ 5 | DividedAsYouChoose$ 5 SVar:RemAIDeck:True SVar:AmbushAI:True SVar:Picture:http://www.wizards.com/global/images/magic/general/angel_of_salvation.jpg -Oracle:Flash, convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for {1} or one mana of that creature's color.)\nFlying\nWhen Angel of Salvation enters the battlefield, prevent the next 5 damage that would be dealt this turn to any number of target creatures and/or players, divided as you choose. +Oracle:Flash; convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for {1} or one mana of that creature's color.)\nFlying\nWhen Angel of Salvation enters the battlefield, prevent the next 5 damage that would be dealt this turn to any number of targets, divided as you choose. diff --git a/forge-gui/res/cardsfolder/a/angel_of_the_dawn.txt b/forge-gui/res/cardsfolder/a/angel_of_the_dawn.txt new file mode 100644 index 00000000000..bedf33b0e4e --- /dev/null +++ b/forge-gui/res/cardsfolder/a/angel_of_the_dawn.txt @@ -0,0 +1,9 @@ +Name:Angel of the Dawn +ManaCost:4 W +Types:Creature Angel +K:Flying +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigPumpAll | TriggerDescription$ When CARDNAME enters the battlefield, creatures you control get +1/+1 and gain vigilance until end of turn. +SVar:TrigPumpAll:DB$ PumpAll | ValidCards$ Creature.YouCtrl | NumAtt$ 1 | NumDef$ 1 | KW$ Vigilance +Oracle:Flying\nWhen Angel of the Dawn enters the battlefield, creatures you control get +1/+1 and gain vigilance until end of turn. (Attacking doesn't cause them to tap.) +SVar:PlayMain1:TRUE +PT:3/3 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/angelic_blessing.txt b/forge-gui/res/cardsfolder/a/angelic_blessing.txt index c8ceff91996..4ad5b0f079c 100644 --- a/forge-gui/res/cardsfolder/a/angelic_blessing.txt +++ b/forge-gui/res/cardsfolder/a/angelic_blessing.txt @@ -3,4 +3,4 @@ ManaCost:2 W Types:Sorcery A:SP$ Pump | Cost$ 2 W | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ 3 | NumDef$ 3 | KW$ Flying | SpellDescription$ Target creature gets +3/+3 and gains flying until end of turn. SVar:Picture:http://resources.wizards.com/magic/cards/po/en-us/card4370.jpg -Oracle:Target creature gets +3/+3 and gains flying until end of turn. +Oracle:Target creature gets +3/+3 and gains flying until end of turn. (It can't be blocked except by creatures with flying or reach.) diff --git a/forge-gui/res/cardsfolder/a/angelic_favor.txt b/forge-gui/res/cardsfolder/a/angelic_favor.txt index c783f3f87cc..230f4b25814 100644 --- a/forge-gui/res/cardsfolder/a/angelic_favor.txt +++ b/forge-gui/res/cardsfolder/a/angelic_favor.txt @@ -6,4 +6,4 @@ SVar:AngelicFavorEOT:SVar:EndOfTurnLeavePlay:True SVar:AltCost:Cost$ tapXType<1/Creature> | IsPresent$ Plains.YouCtrl | Description$ If you control a Plains, you may tap an untapped creature you control rather than pay CARDNAME's mana cost. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/angelic_favor.jpg -Oracle:If you control a Plains, you may tap an untapped creature you control rather than pay Angelic Favor's mana cost.\nCast Angelic Favor only during combat.\nCreate a 4/4 white Angel creature token with flying. Exile it at the beginning of the next end step. +Oracle:If you control a Plains, you may tap an untapped creature you control rather than pay this spell's mana cost.\nCast this spell only during combat.\nCreate a 4/4 white Angel creature token with flying. Exile it at the beginning of the next end step. diff --git a/forge-gui/res/cardsfolder/a/angelic_purge.txt b/forge-gui/res/cardsfolder/a/angelic_purge.txt index 92e6974b6d2..4a61d7e1f18 100644 --- a/forge-gui/res/cardsfolder/a/angelic_purge.txt +++ b/forge-gui/res/cardsfolder/a/angelic_purge.txt @@ -3,4 +3,4 @@ ManaCost:2 W Types:Sorcery A:SP$ ChangeZone | Cost$ 2 W Sac<1/Permanent> | ValidTgts$ Artifact,Creature,Enchantment | TgtPrompt$ Select target artifact, creature or enchantment | Origin$ Battlefield | Destination$ Exile | SpellDescription$ Exile target artifact, creature or enchantment. SVar:Picture:http://www.wizards.com/global/images/magic/general/angelic_purge.jpg -Oracle:As an additional cost to cast Angelic Purge, sacrifice a permanent.\nExile target artifact, creature or enchantment. +Oracle:As an additional cost to cast this spell, sacrifice a permanent.\nExile target artifact, creature, or enchantment. diff --git a/forge-gui/res/cardsfolder/a/angelic_wall.txt b/forge-gui/res/cardsfolder/a/angelic_wall.txt index 8849f7eba3f..43290eaec4b 100644 --- a/forge-gui/res/cardsfolder/a/angelic_wall.txt +++ b/forge-gui/res/cardsfolder/a/angelic_wall.txt @@ -5,4 +5,4 @@ PT:0/4 K:Flying K:Defender SVar:Picture:http://resources.wizards.com/magic/cards/10e/en/card129671.jpg -Oracle:Defender, flying +Oracle:Defender (This creature can't attack.)\nFlying diff --git a/forge-gui/res/cardsfolder/a/angrath_minotaur_pirate.txt b/forge-gui/res/cardsfolder/a/angrath_minotaur_pirate.txt index 470a24bc4b0..3f63ecfedf5 100644 --- a/forge-gui/res/cardsfolder/a/angrath_minotaur_pirate.txt +++ b/forge-gui/res/cardsfolder/a/angrath_minotaur_pirate.txt @@ -1,11 +1,13 @@ Name:Angrath, Minotaur Pirate ManaCost:4 B R Types:Legendary Planeswalker Angrath -A:AB$ DamageAll | Cost$ AddCounter<2/LOYALTY> | Planeswalker$ True | NumDmg$ 1 | ValidTgts$ Opponent | TgtPrompt$ Select an opponent | ValidCards$ Creature | ValidPlayers$ Targeted | ValidDescription$ target opponent and each creature they control. | SpellDescription$ CARDNAME deals 1 damage to target opponent and each creature they control. +Loyalty:5 +A:AB$ DealDamage | Cost$ AddCounter<2/LOYALTY> | Planeswalker$ True | NumDmg$ 1 | ValidTgts$ Opponent,Planeswalker | TgtPrompt$ Select an opponent or planeswalker | SubAbility$ DmgAll | DamageMap$ True | SpellDescription$ CARDNAME deals 1 damage to target opponent or planeswalker and each creature that player or that planeswalker's controller controls. +SVar:DmgAll:DB$ DamageAll | NumDmg$ 1 | ValidCards$ Creature.ControlledBy TargetedOrController | SubAbility$ DBDamageResolve +SVar:DBDamageResolve:DB$ DamageResolve A:AB$ ChangeZone | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Card.Pirate+YouCtrl | TgtPrompt$ Select target Pirate card in your graveyard. | SpellDescription$ Return target Pirate card from your graveyard to the battlefield. A:AB$ DestroyAll | Cost$ SubCounter<11/LOYALTY> | Planeswalker$ True | Ultimate$ True | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | ValidCards$ Creature | ValidDescription$ all creatures targeted opponent controls | RememberAllObjects$ True | SubAbility$ DBDealDamage | SpellDescription$ Destroy all creatures target opponent controls. CARDNAME deals damage to that player equal to their total power. SVar:DBDealDamage:DB$ DealDamage | Defined$ Targeted | NumDmg$ X | References$ X SVar:X:RememberedLKI$ CardPower SVar:Animate:DB$Animate | Defined$ Targeted | Types$ Zombie | Colors$ Black | Permanent$ True -Oracle:[+2]: Angrath, Minotaur Pirate deals 1 damage to target opponent and each creature that player controls.\n[-3]: Return target Pirate card from your graveyard to the battlefield.\n[-11]: Destroy all creatures target opponent controls. Angrath, Minotaur Pirate deals damage to that player equal to their total power. -Loyalty:5 \ No newline at end of file +Oracle:+2: Angrath, Minotaur Pirate deals 1 damage to target opponent or planeswalker and each creature that player or that planeswalker's controller controls.\n−3: Return target Pirate card from your graveyard to the battlefield.\n−11: Destroy all creatures target opponent controls. Angrath, Minotaur Pirate deals damage to that player equal to their total power. diff --git a/forge-gui/res/cardsfolder/a/angrath_the_flame_chained.txt b/forge-gui/res/cardsfolder/a/angrath_the_flame_chained.txt index f15baece8c9..ca059aef43b 100644 --- a/forge-gui/res/cardsfolder/a/angrath_the_flame_chained.txt +++ b/forge-gui/res/cardsfolder/a/angrath_the_flame_chained.txt @@ -12,4 +12,4 @@ SVar:DBLoseLife2:DB$ LoseLife | Defined$ Player.IsRemembered | LifeAmount$ X | R SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Count$ValidGraveyard Card.RememberedPlayerCtrl SVar:Picture:http://www.wizards.com/global/images/magic/general/angrath_the_flame_chained.jpg -Oracle:[+1]: Each opponent discards a card and loses 2 life.\n[-3]: Gain control of target creature until end of turn. Untap it. It gains haste until end of turn. Sacrifice it at the beginning of the next end step if it has converted mana cost 3 or less.\n[-8]: Each opponent loses life equal to the number of cards in their graveyard. +Oracle:+1: Each opponent discards a card and loses 2 life.\n−3: Gain control of target creature until end of turn. Untap it. It gains haste until end of turn. Sacrifice it at the beginning of the next end step if it has converted mana cost 3 or less.\n−8: Each opponent loses life equal to the number of cards in their graveyard. diff --git a/forge-gui/res/cardsfolder/a/angraths_fury.txt b/forge-gui/res/cardsfolder/a/angraths_fury.txt index ad6641bd287..54c273e75fc 100644 --- a/forge-gui/res/cardsfolder/a/angraths_fury.txt +++ b/forge-gui/res/cardsfolder/a/angraths_fury.txt @@ -1,9 +1,9 @@ Name:Angrath's Fury ManaCost:3 B R Types:Sorcery -A:SP$ Destroy | Cost$ 3 B R | ValidTgts$ Creature | TgtPrompt$ Select target creature | SubAbility$ DBDealDamage | SpellDescription$ Destroy target creature. CARDNAME deals 3 damage to target player. You may search your library and/or graveyard for a card named Angrath, Minotaur Pirate, reveal it, and put it into your hand. If you search your library this way, shuffle it. -SVar:DBDealDamage:DB$ DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 3 | SubAbility$ DBSearch +A:SP$ Destroy | Cost$ 3 B R | ValidTgts$ Creature | TgtPrompt$ Select target creature | SubAbility$ DBDealDamage | SpellDescription$ Destroy target creature. CARDNAME deals 3 damage to target player or planeswalker. You may search your library and/or graveyard for a card named Angrath, Minotaur Pirate, reveal it, and put it into your hand. If you search your library this way, shuffle it. +SVar:DBDealDamage:DB$ DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 3 | SubAbility$ DBSearch SVar:DBSearch:DB$ ChangeZone | Origin$ Library,Graveyard | Destination$ Hand | ChangeType$ Card.namedAngrath; Minotaur Pirate | ChangeNum$ 1 | Optional$ True DeckNeeds:Name$Angrath, Minotaur Pirate SVar:Picture:http://www.wizards.com/global/images/magic/general/angraths_fury.jpg -Oracle:Destroy target creature. Angrath's Fury deals 3 damage to target player. You may search your library and/or graveyard for a card named Angrath, Minotaur Pirate, reveal it, and put it into your hand. If you search your library this way, shuffle it. \ No newline at end of file +Oracle:Destroy target creature. Angrath's Fury deals 3 damage to target player or planeswalker. You may search your library and/or graveyard for a card named Angrath, Minotaur Pirate, reveal it, and put it into your hand. If you search your library this way, shuffle it. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/animists_awakening.txt b/forge-gui/res/cardsfolder/a/animists_awakening.txt index 84a7a4f3083..b07533d9557 100644 --- a/forge-gui/res/cardsfolder/a/animists_awakening.txt +++ b/forge-gui/res/cardsfolder/a/animists_awakening.txt @@ -1,9 +1,9 @@ Name:Animist's Awakening ManaCost:X G Types:Sorcery -A:SP$ Dig | Cost$ X G | DigNum$ X | Reveal$ True | ChangeNum$ All | ChangeValid$ Land | DestinationZone$ Battlefield | Tapped$ True | RememberChanged$ True | RestRandomOrder$ True | SubAbility$ DBUntap | References$ X | SpellDescription$ Reveal the top X cards of your library. Put all land cards revealed this way onto the battlefield tapped and the rest on the bottom of your library in a random order. Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, untap those lands. +A:SP$ Dig | Cost$ X G | DigNum$ X | Reveal$ True | ChangeNum$ All | ChangeValid$ Land | DestinationZone$ Battlefield | Tapped$ True | RememberChanged$ True | RestRandomOrder$ True | SubAbility$ DBUntap | References$ X | SpellDescription$ Reveal the top X cards of your library. Put all land cards from among them onto the battlefield tapped and the rest on the bottom of your library in a random order. Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, untap those lands. SVar:DBUntap:DB$ Untap | Defined$ Remembered | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE2 | References$ Y SVar:X:Count$xPaid SVar:Y:Count$ValidGraveyard Instant.YouOwn,Sorcery.YouOwn SVar:Picture:http://www.wizards.com/global/images/magic/general/animists_awakening.jpg -Oracle:Reveal the top X cards of your library. Put all land cards revealed this way onto the battlefield tapped and the rest on the bottom of your library in a random order.\nSpell mastery — If there are two or more instant and/or sorcery cards in your graveyard, untap those lands. +Oracle:Reveal the top X cards of your library. Put all land cards from among them onto the battlefield tapped and the rest on the bottom of your library in a random order.\nSpell mastery — If there are two or more instant and/or sorcery cards in your graveyard, untap those lands. diff --git a/forge-gui/res/cardsfolder/a/annihilating_fire.txt b/forge-gui/res/cardsfolder/a/annihilating_fire.txt index 864fc31daa8..be7fba89a5a 100644 --- a/forge-gui/res/cardsfolder/a/annihilating_fire.txt +++ b/forge-gui/res/cardsfolder/a/annihilating_fire.txt @@ -1,7 +1,7 @@ Name:Annihilating Fire ManaCost:1 R R Types:Instant -A:SP$ DealDamage | Cost$ 1 R R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | RememberDamaged$ True | ReplaceDyingDefined$ Remembered | SubAbility$ DBCleanup | SpellDescription$ CARDNAME deals 3 damage to target creature or player. If a creature dealt damage this way would die this turn, exile it instead. +A:SP$ DealDamage | Cost$ 1 R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | RememberDamaged$ True | ReplaceDyingDefined$ Remembered | SubAbility$ DBCleanup | SpellDescription$ CARDNAME deals 3 damage to any target. If a creature dealt damage this way would die this turn, exile it instead. SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/annihilating_fire.jpg -Oracle:Annihilating Fire deals 3 damage to target creature or player. If a creature dealt damage this way would die this turn, exile it instead. +Oracle:Annihilating Fire deals 3 damage to any target. If a creature dealt damage this way would die this turn, exile it instead. diff --git a/forge-gui/res/cardsfolder/a/anthem_of_rakdos.txt b/forge-gui/res/cardsfolder/a/anthem_of_rakdos.txt index 0d9a73c3424..8746b4bb56d 100644 --- a/forge-gui/res/cardsfolder/a/anthem_of_rakdos.txt +++ b/forge-gui/res/cardsfolder/a/anthem_of_rakdos.txt @@ -4,11 +4,11 @@ Types:Enchantment T:Mode$ Attacks | ValidCard$ Creature.YouCtrl | TriggerZones$ Battlefield | Execute$ AnthemPump | TriggerDescription$ Whenever a creature you control attacks, it gets +2/+0 until end of turn and CARDNAME deals 1 damage to you. SVar:AnthemPump:DB$ Pump | Defined$ TriggeredAttacker | NumAtt$ 2 | SubAbility$ RakdosBurn SVar:RakdosBurn:DB$ DealDamage | Defined$ You | NumDmg$ 1 -R:Event$ DamageDone | ActiveZones$ Battlefield | ValidSource$ Card.YouCtrl,Emblem.YouCtrl | ValidTarget$ Creature,Player | Hellbent$ True | ReplaceWith$ DmgTwice | Description$ Hellbent — As long as you have no cards in hand, if a source you control would deal damage to a creature or player, it deals double that damage to that creature or player instead. +R:Event$ DamageDone | ActiveZones$ Battlefield | ValidSource$ Card.YouCtrl,Emblem.YouCtrl | ValidTarget$ Permanent,Player | Hellbent$ True | ReplaceWith$ DmgTwice | Description$ Hellbent — As long as you have no cards in hand, if a source you control would deal damage to a permanent or player, it deals double that damage to that permanent or player instead. SVar:DmgTwice:DB$ ReplaceEffect | VarName$ DamageAmount | VarValue$ X | References$ X SVar:X:ReplaceCount$DamageAmount/Twice SVar:PlayMain1:TRUE SVar:BuffedBy:Card DeckHints:Ability$Discard SVar:Picture:http://www.wizards.com/global/images/magic/general/anthem_of_rakdos.jpg -Oracle:Whenever a creature you control attacks, it gets +2/+0 until end of turn and Anthem of Rakdos deals 1 damage to you.\nHellbent — As long as you have no cards in hand, if a source you control would deal damage to a creature or player, it deals double that damage to that creature or player instead. +Oracle:Whenever a creature you control attacks, it gets +2/+0 until end of turn and Anthem of Rakdos deals 1 damage to you.\nHellbent — As long as you have no cards in hand, if a source you control would deal damage to a permanent or player, it deals double that damage to that permanent or player instead. diff --git a/forge-gui/res/cardsfolder/a/anurid_murkdiver.txt b/forge-gui/res/cardsfolder/a/anurid_murkdiver.txt index 03d0d867f09..dc8b85ad0cb 100644 --- a/forge-gui/res/cardsfolder/a/anurid_murkdiver.txt +++ b/forge-gui/res/cardsfolder/a/anurid_murkdiver.txt @@ -4,4 +4,4 @@ Types:Creature Zombie Frog Beast PT:4/3 K:Swampwalk SVar:Picture:http://resources.wizards.com/magic/cards/ons/en-us/card43638.jpg -Oracle:Swampwalk +Oracle:Swampwalk (This creature can't be blocked as long as defending player controls a Swamp.) diff --git a/forge-gui/res/cardsfolder/a/apathy.txt b/forge-gui/res/cardsfolder/a/apathy.txt index 7133e08820a..f1925df0573 100644 --- a/forge-gui/res/cardsfolder/a/apathy.txt +++ b/forge-gui/res/cardsfolder/a/apathy.txt @@ -3,11 +3,11 @@ ManaCost:U Types:Enchantment Aura K:Enchant creature A:SP$ Attach | Cost$ U | ValidTgts$ Creature | AILogic$ Curse -S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddHiddenKeyword$ CARDNAME doesn't untap during your untap step. | Description$ Enchanted creature doesn't untap during its controller's untap step. At the beginning of the upkeep of enchanted creature's controller, that player may discard a card at random. If they do, untap that creature. -T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ EnchantedController | TriggerZones$ Battlefield | OptionalDecider$ EnchantedController | Execute$ ApathyDiscard | TriggerDescription$ At the beginning of the upkeep of enchanted creature's controller, that player may discard a card at random. If they do, untap that creature. +S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddHiddenKeyword$ CARDNAME doesn't untap during your untap step. | Description$ Enchanted creature doesn't untap during its controller's untap step. At the beginning of the upkeep of enchanted creature's controller, that player may discard a card at random. If the player does, untap that creature. +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ EnchantedController | TriggerZones$ Battlefield | OptionalDecider$ EnchantedController | Execute$ ApathyDiscard | TriggerDescription$ At the beginning of the upkeep of enchanted creature's controller, that player may discard a card at random. If the player does, untap that creature. SVar:ApathyDiscard:DB$ Discard | Defined$ TriggeredPlayer | NumCards$ 1 | Mode$ Random | RememberDiscarded$ True | SubAbility$ ApathyUntap | References$ X SVar:ApathyUntap:DB$ Untap | Defined$ Enchanted | SpellDescription$ Untap enchanted creature | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ1 | References$ X | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Remembered$Amount SVar:Picture:http://www.wizards.com/global/images/magic/general/apathy.jpg -Oracle:Enchant creature\nEnchanted creature doesn't untap during its controller's untap step.\nAt the beginning of the upkeep of enchanted creature's controller, that player may discard a card at random. If they do, untap that creature. +Oracle:Enchant creature\nEnchanted creature doesn't untap during its controller's untap step.\nAt the beginning of the upkeep of enchanted creature's controller, that player may discard a card at random. If the player does, untap that creature. diff --git a/forge-gui/res/cardsfolder/a/apex_of_power.txt b/forge-gui/res/cardsfolder/a/apex_of_power.txt new file mode 100644 index 00000000000..a10faab3ab4 --- /dev/null +++ b/forge-gui/res/cardsfolder/a/apex_of_power.txt @@ -0,0 +1,9 @@ +Name:Apex of Power +ManaCost:7 R R R +Types:Sorcery +A:SP$ Mill | Cost$ 7 R R R | Origin$ Library | Destination$ Exile | NumCards$ 7 | RememberMilled$ True | SubAbility$ DBEffect | Exile the top seven cards from your library. Until end of turn, you may cast nonland cards exiled this way.\nIf this spell was cast from your hand, add ten mana of any one color. +SVar:DBEffect:DB$ Effect | RememberObjects$ RememberedCard | StaticAbilities$ EffSModeContinuous | SubAbility$ DBCleanup | ForgetOnMoved$ Exile +SVar:EffSModeContinuous:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.nonLand+IsRemembered | AffectedZone$ Exile | Description$ You may cast nonland cards exiled this way. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | SubAbility$ DBMana +SVar:DBMana:DB$ Mana | Produced$ Any | Amount$ 10 | ConditionPresent$ Card.wasCastFromHand+Self | ConditionCompare$ EQ1 +Oracle:Exile the top seven cards of your library. Until end of turn, you may cast nonland cards exiled this way.\nIf this spell was cast from your hand, add ten mana of any one color. diff --git a/forge-gui/res/cardsfolder/a/apocalypse_chime.txt b/forge-gui/res/cardsfolder/a/apocalypse_chime.txt index aa282b70388..f6b8fad525d 100644 --- a/forge-gui/res/cardsfolder/a/apocalypse_chime.txt +++ b/forge-gui/res/cardsfolder/a/apocalypse_chime.txt @@ -1,7 +1,7 @@ Name:Apocalypse Chime ManaCost:2 Types:Artifact -A:AB$DestroyAll | Cost$ 2 T Sac<1/CARDNAME> | ValidCards$ Permanent.nonToken+setHML | NoRegen$ True | SpellDescription$ Destroy all nontoken permanents originally printed in the Homelands expansion. They can't be regenerated. +A:AB$DestroyAll | Cost$ 2 T Sac<1/CARDNAME> | ValidCards$ Permanent.nonToken+setHML | NoRegen$ True | SpellDescription$ Destroy all nontoken permanents with a name originally printed in the Homelands expansion. They can't be regenerated. SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/apocalypse_chime.jpg -Oracle:{2}, {T}, Sacrifice Apocalypse Chime: Destroy all nontoken permanents originally printed in the Homelands expansion. They can't be regenerated. +Oracle:{2}, {T}, Sacrifice Apocalypse Chime: Destroy all nontoken permanents with a name originally printed in the Homelands expansion. They can't be regenerated. diff --git a/forge-gui/res/cardsfolder/a/apocalypse_hydra.txt b/forge-gui/res/cardsfolder/a/apocalypse_hydra.txt index 9dab86e7953..e1cb9fa451e 100644 --- a/forge-gui/res/cardsfolder/a/apocalypse_hydra.txt +++ b/forge-gui/res/cardsfolder/a/apocalypse_hydra.txt @@ -3,10 +3,10 @@ ManaCost:X R G Types:Creature Hydra PT:0/0 K:etbCounter:P1P1:Y:no condition:CARDNAME enters the battlefield with X +1/+1 counters on it. If X is 5 or more, it enters the battlefield with an additional X +1/+1 counters on it. -A:AB$ DealDamage | Cost$ 1 R SubCounter<1/P1P1> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ 1 R SubCounter<1/P1P1> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. # This xPaid doesn't do anything, it's just needed to make Cost work properly SVar:X:Count$xPaid SVar:Y:Count$Compare X LT5.X.Z SVar:Z:Count$xPaid/Twice SVar:Picture:http://www.wizards.com/global/images/magic/general/apocalypse_hydra.jpg -Oracle:Apocalypse Hydra enters the battlefield with X +1/+1 counters on it. If X is 5 or more, it enters the battlefield with an additional X +1/+1 counters on it.\n{1}{R}, Remove a +1/+1 counter from Apocalypse Hydra: Apocalypse Hydra deals 1 damage to target creature or player. +Oracle:Apocalypse Hydra enters the battlefield with X +1/+1 counters on it. If X is 5 or more, it enters the battlefield with an additional X +1/+1 counters on it.\n{1}{R}, Remove a +1/+1 counter from Apocalypse Hydra: Apocalypse Hydra deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/a/apostles_blessing.txt b/forge-gui/res/cardsfolder/a/apostles_blessing.txt index 55d593d4aa2..f7df63073bf 100644 --- a/forge-gui/res/cardsfolder/a/apostles_blessing.txt +++ b/forge-gui/res/cardsfolder/a/apostles_blessing.txt @@ -3,4 +3,4 @@ ManaCost:1 PW Types:Instant A:SP$ Protection | Cost$ 1 PW | ValidTgts$ Creature.YouCtrl,Artifact.YouCtrl | TgtPrompt$ Select target artifact or creature you control | Gains$ Choice | Choices$ AnyColor,artifacts | SpellDescription$ Target artifact or creature you control gains protection from artifacts or from the color of your choice until end of turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/apostles_blessing.jpg -Oracle:({P/W} can be paid with either {W} or 2 life.)\nTarget artifact or creature you control gains protection from artifacts or from the color of your choice until end of turn. +Oracle:({W/P} can be paid with either {W} or 2 life.)\nTarget artifact or creature you control gains protection from artifacts or from the color of your choice until end of turn. diff --git a/forge-gui/res/cardsfolder/a/apprentice_sorcerer.txt b/forge-gui/res/cardsfolder/a/apprentice_sorcerer.txt index cfe024b1aa2..a49863a7f38 100644 --- a/forge-gui/res/cardsfolder/a/apprentice_sorcerer.txt +++ b/forge-gui/res/cardsfolder/a/apprentice_sorcerer.txt @@ -2,6 +2,6 @@ Name:Apprentice Sorcerer ManaCost:2 U Types:Creature Human Wizard PT:1/1 -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | PlayerTurn$ True | ActivationPhases$ Upkeep,Draw,Main1,BeginCombat | SpellDescription$ CARDNAME deals 1 damage to target creature or player. Activate this ability only during your turn, before attackers are declared. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | PlayerTurn$ True | ActivationPhases$ Upkeep,Draw,Main1,BeginCombat | SpellDescription$ CARDNAME deals 1 damage to any target. Activate this ability only during your turn, before attackers are declared. SVar:Picture:http://www.wizards.com/global/images/magic/general/apprentice_sorcerer.jpg -Oracle:{T}: Apprentice Sorcerer deals 1 damage to target creature or player. Activate this ability only during your turn, before attackers are declared. +Oracle:{T}: Apprentice Sorcerer deals 1 damage to any target. Activate this ability only during your turn, before attackers are declared. diff --git a/forge-gui/res/cardsfolder/a/araba_mothrider.txt b/forge-gui/res/cardsfolder/a/araba_mothrider.txt index 71fca37e3c1..1437d130ca0 100644 --- a/forge-gui/res/cardsfolder/a/araba_mothrider.txt +++ b/forge-gui/res/cardsfolder/a/araba_mothrider.txt @@ -3,6 +3,6 @@ ManaCost:1 W Types:Creature Human Samurai PT:1/1 K:Flying -K:Bushido 1 +K:Bushido:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/araba_mothrider.jpg -Oracle:Flying\nBushido 1 (When this blocks or becomes blocked, it gets +1/+1 until end of turn.) +Oracle:Flying\nBushido 1 (Whenever this creature blocks or becomes blocked, it gets +1/+1 until end of turn.) diff --git a/forge-gui/res/cardsfolder/a/arc_blade.txt b/forge-gui/res/cardsfolder/a/arc_blade.txt index e774ce54f28..e256a923f09 100644 --- a/forge-gui/res/cardsfolder/a/arc_blade.txt +++ b/forge-gui/res/cardsfolder/a/arc_blade.txt @@ -2,9 +2,9 @@ Name:Arc Blade ManaCost:3 R R Types:Sorcery K:Suspend:3:2 R -A:SP$ DealDamage | Cost$ 3 R R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SubAbility$ DBChange | SpellDescription$ CARDNAME deals 2 damage to target creature or player. Exile CARDNAME with three time counters on it. +A:SP$ DealDamage | Cost$ 3 R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SubAbility$ DBChange | SpellDescription$ CARDNAME deals 2 damage to any target. Exile CARDNAME with three time counters on it. SVar:DBChange:DB$ChangeZone | Origin$ Stack | Destination$ Exile | RememberChanged$ True | SubAbility$ DBPutCounter SVar:DBPutCounter:DB$PutCounter | Defined$ Remembered | CounterType$ TIME | CounterNum$ 3 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/arc_blade.jpg -Oracle:Arc Blade deals 2 damage to target creature or player. Exile Arc Blade with three time counters on it.\nSuspend 3—{2}{R} (Rather than cast this card from your hand, you may pay {2}{R} and exile it with three time counters on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost.) +Oracle:Arc Blade deals 2 damage to any target. Exile Arc Blade with three time counters on it.\nSuspend 3—{2}{R} (Rather than cast this card from your hand, you may pay {2}{R} and exile it with three time counters on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost.) diff --git a/forge-gui/res/cardsfolder/a/arc_lightning.txt b/forge-gui/res/cardsfolder/a/arc_lightning.txt index 297572b9a39..f0ffcdb91c5 100644 --- a/forge-gui/res/cardsfolder/a/arc_lightning.txt +++ b/forge-gui/res/cardsfolder/a/arc_lightning.txt @@ -1,6 +1,6 @@ Name:Arc Lightning ManaCost:2 R Types:Sorcery -A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to distribute damage to | NumDmg$ 3 | TargetMin$ 1 | TargetMax$ 3 | DividedAsYouChoose$ 3 | SpellDescription$ CARDNAME deals 3 damage divided as you choose among one, two, or three target creatures and/or players. +A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to distribute damage to | NumDmg$ 3 | TargetMin$ 1 | TargetMax$ 3 | DividedAsYouChoose$ 3 | SpellDescription$ CARDNAME deals 3 damage divided as you choose among one, two, or three targets. SVar:Picture:http://www.wizards.com/global/images/magic/general/arc_lightning.jpg -Oracle:Arc Lightning deals 3 damage divided as you choose among one, two, or three target creatures and/or players. +Oracle:Arc Lightning deals 3 damage divided as you choose among one, two, or three targets. diff --git a/forge-gui/res/cardsfolder/a/arc_mage.txt b/forge-gui/res/cardsfolder/a/arc_mage.txt index d36c0fa762c..97385a14e4b 100644 --- a/forge-gui/res/cardsfolder/a/arc_mage.txt +++ b/forge-gui/res/cardsfolder/a/arc_mage.txt @@ -2,6 +2,6 @@ Name:Arc Mage ManaCost:2 R Types:Creature Human Spellshaper PT:2/2 -A:AB$ DealDamage | Cost$ 2 R T Discard<1/Card> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to distribute damage to | NumDmg$ 2 | TargetMin$ 1 | TargetMax$ 2 | DividedAsYouChoose$ 2 | SpellDescription$ CARDNAME deals 2 damage divided as you choose among any number of target creatures and/or players. +A:AB$ DealDamage | Cost$ 2 R T Discard<1/Card> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to distribute damage to | NumDmg$ 2 | TargetMin$ 1 | TargetMax$ 2 | DividedAsYouChoose$ 2 | SpellDescription$ CARDNAME deals 2 damage divided as you choose among one or two targets. SVar:Picture:http://www.wizards.com/global/images/magic/general/arc_mage.jpg -Oracle:{2}{R}, {T}, Discard a card: Arc Mage deals 2 damage divided as you choose among one or two target creatures and/or players. +Oracle:{2}{R}, {T}, Discard a card: Arc Mage deals 2 damage divided as you choose among one or two targets. diff --git a/forge-gui/res/cardsfolder/a/arc_slogger.txt b/forge-gui/res/cardsfolder/a/arc_slogger.txt index 08ced6dd6c5..e119c3515b3 100644 --- a/forge-gui/res/cardsfolder/a/arc_slogger.txt +++ b/forge-gui/res/cardsfolder/a/arc_slogger.txt @@ -2,6 +2,6 @@ Name:Arc-Slogger ManaCost:3 R R Types:Creature Beast PT:4/5 -A:AB$ DealDamage | Cost$ R ExileFromTop<10/Card> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:AB$ DealDamage | Cost$ R ExileFromTop<10/Card> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/arc_slogger.jpg -Oracle:{R}, Exile the top ten cards of your library: Arc-Slogger deals 2 damage to target creature or player. +Oracle:{R}, Exile the top ten cards of your library: Arc-Slogger deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/a/arc_trail.txt b/forge-gui/res/cardsfolder/a/arc_trail.txt index 1c98a17b99e..3ac3d18e3c7 100644 --- a/forge-gui/res/cardsfolder/a/arc_trail.txt +++ b/forge-gui/res/cardsfolder/a/arc_trail.txt @@ -1,8 +1,8 @@ Name:Arc Trail ManaCost:1 R Types:Sorcery -A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player (2 damage) | NumDmg$ 2 | DamageMap$ True | SubAbility$ DBDealDamage | SpellDescription$ CARDNAME deals 2 damage to target creature or player and 1 damage to another target creature or player. -SVar:DBDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player (1 damage) | TargetUnique$ True | NumDmg$ 1 | SubAbility$ DBDamageResolve +A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target (2 damage) | NumDmg$ 2 | DamageMap$ True | SubAbility$ DBDealDamage | SpellDescription$ CARDNAME deals 2 damage to any target and 1 damage to another target. +SVar:DBDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target (1 damage) | TargetUnique$ True | NumDmg$ 1 | SubAbility$ DBDamageResolve SVar:DBDamageResolve:DB$ DamageResolve SVar:Picture:http://www.wizards.com/global/images/magic/general/arc_trail.jpg -Oracle:Arc Trail deals 2 damage to target creature or player and 1 damage to another target creature or player. +Oracle:Arc Trail deals 2 damage to any target and 1 damage to another target. diff --git a/forge-gui/res/cardsfolder/a/arcades_the_strategist.txt b/forge-gui/res/cardsfolder/a/arcades_the_strategist.txt new file mode 100644 index 00000000000..3bbc10a851a --- /dev/null +++ b/forge-gui/res/cardsfolder/a/arcades_the_strategist.txt @@ -0,0 +1,10 @@ +Name:Arcades, the Strategist +ManaCost:1 G W U +Types:Legendary Creature Elder Dragon +PT:3/5 +K:Flying +K:Vigilance +S:Mode$ Continuous | Affected$ Creature.withDefender+YouCtrl | AddHiddenKeyword$ CARDNAME assigns combat damage equal to its toughness rather than its power & CARDNAME can attack as though it didn't have defender. | Description$ Each creature you control assigns combat damage equal to its toughness rather than its power and can attack as though it didn’t have defender. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.withDefender+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever a creature with defender enters the battlefield under your control, draw a card. +SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1 +Oracle:Flying, vigilance\nWhenever a creature with defender enters the battlefield under your control, draw a card.\nEach creature you control with defender assigns combat damage equal to its toughness rather than its power and can attack as though it didn’t have defender. diff --git a/forge-gui/res/cardsfolder/a/arcane_artisan.txt b/forge-gui/res/cardsfolder/a/arcane_artisan.txt new file mode 100644 index 00000000000..7c0af7442f4 --- /dev/null +++ b/forge-gui/res/cardsfolder/a/arcane_artisan.txt @@ -0,0 +1,12 @@ +Name:Arcane Artisan +ManaCost:2 U +Types:Creature Human Wizard +PT:0/3 +A:AB$ Draw | Cost$ 2 U T | ValidTgts$ Player | TgtPrompt$ Select target player | NumCards$ 1 | SubAbility$ DBExile | SpellDescription$ Target player draws a card, then exiles a card from their hand. If a creature card is exiled this way, that player creates a token that's a copy of that card. +SVar:DBExile:DB$ ChangeZone | Origin$ Hand | Destination$ Exile | ChangeType$ Card | ChangeNum$ 1 | Mandatory$ True | RememberChanged$ True | DefinedPlayer$ Targeted | SubAbility$ DBToken +SVar:DBToken:DB$ CopyPermanent | Defined$ Remembered | Controller$ Targeted | ConditionDefined$ Remembered | ConditionPresent$ Creature | RememberCopied$ True +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | Static$ True | ValidCard$ Card.Self | Execute$ DelTrigLeaves | TriggerDescription$ When CARDNAME leaves the battlefield, exile all tokens created with it at the beginning of the next end step. +SVar:DelTrigLeaves:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigExileAll | TriggerController$ TriggeredCardController | TriggerDescription$ Exile all tokens created with CARDNAME at the beginning of the next end step. +SVar:TrigExileAll:DB$ ChangeZoneAll | ChangeType$ Card.IsRemembered | Origin$ Battlefield | Destination$ Exile | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:{2}{U}, {T}: Target player draws a card, then exiles a card from their hand. If a creature card is exiled this way, that player creates a token that's a copy of that card.\nWhen Arcane Artisan leaves the battlefield, exile all tokens created with it at the beginning of the next end step.\n \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/arcane_encyclopedia.txt b/forge-gui/res/cardsfolder/a/arcane_encyclopedia.txt new file mode 100644 index 00000000000..620685c542c --- /dev/null +++ b/forge-gui/res/cardsfolder/a/arcane_encyclopedia.txt @@ -0,0 +1,6 @@ +Name:Arcane Encyclopedia +ManaCost:3 +Types:Artifact +A:AB$ Draw | Cost$ 3 T | NumCards$ 1 | SpellDescription$ Draw a card. +SVar:Picture:http://www.wizards.com/global/images/magic/general/arcane_encyclopedia.jpg +Oracle:{3}, {T}: Draw a card. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/arcane_teachings.txt b/forge-gui/res/cardsfolder/a/arcane_teachings.txt index eb3cf9cb1c9..ada7a41b45c 100644 --- a/forge-gui/res/cardsfolder/a/arcane_teachings.txt +++ b/forge-gui/res/cardsfolder/a/arcane_teachings.txt @@ -3,7 +3,7 @@ ManaCost:2 R Types:Enchantment Aura K:Enchant creature A:SP$ Attach | Cost$ 2 R | ValidTgts$ Creature | AILogic$ Pump -S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 2 | AddToughness$ 2 | AddAbility$ Damage | Description$ Enchanted creature gets +2/+2 and has "{T}: This creature deals 1 damage to target creature or player." -SVar:Damage:AB$DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 2 | AddToughness$ 2 | AddAbility$ Damage | Description$ Enchanted creature gets +2/+2 and has "{T}: This creature deals 1 damage to any target." +SVar:Damage:AB$DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/arcane_teachings.jpg -Oracle:Enchant creature (Target a creature as you cast this. This card enters the battlefield attached to that creature.)\nEnchanted creature gets +2/+2 and has "{T}: This creature deals 1 damage to target creature or player." +Oracle:Enchant creature (Target a creature as you cast this. This card enters the battlefield attached to that creature.)\nEnchanted creature gets +2/+2 and has "{T}: This creature deals 1 damage to any target." diff --git a/forge-gui/res/cardsfolder/a/archangel_of_thune.txt b/forge-gui/res/cardsfolder/a/archangel_of_thune.txt index 12b15de7f1e..d057a40be74 100644 --- a/forge-gui/res/cardsfolder/a/archangel_of_thune.txt +++ b/forge-gui/res/cardsfolder/a/archangel_of_thune.txt @@ -7,4 +7,4 @@ K:Lifelink T:Mode$ LifeGained | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever you gain life, put a +1/+1 counter on each creature you control. SVar:TrigPutCounter:DB$ PutCounterAll | ValidCards$ Creature.YouCtrl | CounterType$ P1P1 | CounterNum$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/archangel_of_thune.jpg -Oracle:Flying, lifelink\nWhenever you gain life, put a +1/+1 counter on each creature you control. +Oracle:Flying\nLifelink (Damage dealt by this creature also causes you to gain that much life.)\nWhenever you gain life, put a +1/+1 counter on each creature you control. diff --git a/forge-gui/res/cardsfolder/a/archfiend_of_depravity.txt b/forge-gui/res/cardsfolder/a/archfiend_of_depravity.txt index c27984a8366..c58d7e1da74 100644 --- a/forge-gui/res/cardsfolder/a/archfiend_of_depravity.txt +++ b/forge-gui/res/cardsfolder/a/archfiend_of_depravity.txt @@ -3,7 +3,7 @@ ManaCost:3 B B Types:Creature Demon PT:5/4 K:Flying -T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ Opponent | TriggerZones$ Battlefield | Execute$ TrigChoose | TriggerDescription$ At the beginning of each opponent's end step, that player chooses up to two creature they control and sacrifices the rest. +T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ Opponent | TriggerZones$ Battlefield | Execute$ TrigChoose | TriggerDescription$ At the beginning of each opponent's end step, that player chooses up to two creature they control, then sacrifices the rest. SVar:TrigChoose:DB$ ChooseCard | Defined$ TriggeredPlayer | Amount$ 2 | TargetControls$ True | Choices$ Creature | ChoiceTitle$ Choose up to two creatures | SubAbility$ DBSacrificeAll | RememberChosen$ True SVar:DBSacrificeAll:DB$ SacrificeAll | ValidCards$ Creature.IsNotRemembered | Controller$ TriggeredPlayer | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True diff --git a/forge-gui/res/cardsfolder/a/archfiend_of_despair.txt b/forge-gui/res/cardsfolder/a/archfiend_of_despair.txt new file mode 100644 index 00000000000..55da4ac35fd --- /dev/null +++ b/forge-gui/res/cardsfolder/a/archfiend_of_despair.txt @@ -0,0 +1,11 @@ +Name:Archfiend of Despair +ManaCost:6 B B +Types:Creature Demon +PT:6/6 +K:Flying +S:Mode$ Continuous | Affected$ Player.Opponent | AddKeyword$ You can't gain life. | Description$ Your opponents can't gain life. +T:Mode$ Phase | Phase$ End of Turn | TriggerZones$ Battlefield | Execute$ RepeatOpps | TriggerDescription$ At the beginning of each end step, each opponent loses life equal to the life they lost this turn. (Damage causes loss of life.) +SVar:RepeatOpps:DB$ RepeatEach | RepeatPlayers$ Player.Opponent | RepeatSubAbility$ TrigLoseLife +SVar:TrigLoseLife:DB$ LoseLife | Defined$ Remembered | LifeAmount$ X | References$ X +SVar:X:PlayerCountRemembered$LifeLostThisTurn +Oracle:Flying\nYour opponents can't gain life.\nAt the beginning of each end step, each opponent loses life equal to the life that player lost this turn. (Damage causes loss of life.) diff --git a/forge-gui/res/cardsfolder/a/archfiend_of_ifnir.txt b/forge-gui/res/cardsfolder/a/archfiend_of_ifnir.txt index f718f9fef3f..bb6e7df8538 100644 --- a/forge-gui/res/cardsfolder/a/archfiend_of_ifnir.txt +++ b/forge-gui/res/cardsfolder/a/archfiend_of_ifnir.txt @@ -8,4 +8,4 @@ SVar:TrigPutCounter:DB$ PutCounterAll | ValidCards$ Creature.OppCtrl | CounterTy K:Cycling:2 DeckHas:Ability$Counters SVar:Picture:http://www.wizards.com/global/images/magic/general/archfiend_of_ifnir.jpg -Oracle:Flying\nWhenever you cycle or discard another card, put a -1/-1 counter on each creature your opponents control.\nCycling {2} ({2} , Discard this card: Draw a card.) +Oracle:Flying\nWhenever you cycle or discard another card, put a -1/-1 counter on each creature your opponents control.\nCycling {2} ({2}, Discard this card: Draw a card.) diff --git a/forge-gui/res/cardsfolder/a/architect_of_the_untamed.txt b/forge-gui/res/cardsfolder/a/architect_of_the_untamed.txt index d3aa3874e47..bca7d60a746 100644 --- a/forge-gui/res/cardsfolder/a/architect_of_the_untamed.txt +++ b/forge-gui/res/cardsfolder/a/architect_of_the_untamed.txt @@ -2,8 +2,8 @@ Name:Architect of the Untamed ManaCost:2 G Types:Creature Elf Artificer Druid PT:2/3 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | TriggerZones$ Battlefield | ValidCard$ Land.YouCtrl | Execute$ TrigEnergy | TriggerDescription$ Whenever a land enters the battlefiend under your control, you get {E} (an energy counter). +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | TriggerZones$ Battlefield | ValidCard$ Land.YouCtrl | Execute$ TrigEnergy | TriggerDescription$ Whenever a land enters the battlefield under your control, you get {E} (an energy counter). SVar:TrigEnergy:DB$ PutCounter | Defined$ You | CounterType$ ENERGY | CounterNum$ 1 A:AB$ Token | Cost$ PayEnergy<8> | TokenAmount$ 1 | TokenName$ Beast | TokenTypes$ Artifact,Creature,Beast | TokenOwner$ You | TokenColors$ Colorless | TokenPower$ 6 | TokenToughness$ 6 | TokenImage$ c 6 6 beast | SpellDescription$ Create a 6/6 colorless Beast artifact creature token. SVar:Picture:http://www.wizards.com/global/images/magic/general/architect_of_the_untamed.jpg -Oracle:Whenever a land enters the battlefiend under your control, you get {E} (an energy counter).\nPay {E}{E}{E}{E}{E}{E}{E}{E}: Create a 6/6 colorless Beast artifact creature token. +Oracle:Whenever a land enters the battlefield under your control, you get {E} (an energy counter).\nPay {E}{E}{E}{E}{E}{E}{E}{E}: Create a 6/6 colorless Beast artifact creature token. diff --git a/forge-gui/res/cardsfolder/a/archive_trap.txt b/forge-gui/res/cardsfolder/a/archive_trap.txt index eb525927d69..34e42e8d297 100644 --- a/forge-gui/res/cardsfolder/a/archive_trap.txt +++ b/forge-gui/res/cardsfolder/a/archive_trap.txt @@ -1,8 +1,8 @@ Name:Archive Trap ManaCost:3 U U Types:Instant Trap -A:SP$ Mill | Cost$ 3 U U | NumCards$ 13 | ValidTgts$ Opponent | TgtPrompt$ Choose an opponent | SpellDescription$ Target opponent puts the top thirteen cards of their library into their graveyard. +A:SP$ Mill | Cost$ 3 U U | NumCards$ 13 | ValidTgts$ Opponent | TgtPrompt$ Choose an opponent | SpellDescription$ Target opponent puts the top thirteen cards of their library into his or her graveyard. A:SP$ Mill | Cost$ 0 | CheckSVar$ TrapTrigger | NumCards$ 13 | ValidTgts$ Opponent | TgtPrompt$ Choose an opponent | CostDesc$ If an opponent searched their library this turn, you may pay {0} rather than pay CARDNAME's mana cost. | References$ TrapTrigger | SpellDescription$ SVar:TrapTrigger:Count$SearchedLibrary.Opponent SVar:Picture:http://www.wizards.com/global/images/magic/general/archive_trap.jpg -Oracle:If an opponent searched their library this turn, you may pay {0} rather than pay Archive Trap's mana cost.\nTarget opponent puts the top thirteen cards of their library into their graveyard. +Oracle:If an opponent searched their library this turn, you may pay {0} rather than pay this spell's mana cost.\nTarget opponent puts the top thirteen cards of their library into their graveyard. diff --git a/forge-gui/res/cardsfolder/a/archon_of_valors_reach.txt b/forge-gui/res/cardsfolder/a/archon_of_valors_reach.txt new file mode 100644 index 00000000000..6cd4f46f2d3 --- /dev/null +++ b/forge-gui/res/cardsfolder/a/archon_of_valors_reach.txt @@ -0,0 +1,13 @@ +Name:Archon of Valor's Reach +ManaCost:4 G W +Types:Creature Archon +PT:5/6 +K:Flying +K:Vigilance +K:Trample +K:ETBReplacement:Other:ChooseT +SVar:ChooseT:DB$ ChooseType | Type$ Card | ValidTypes$ Artifact,Enchantment,Instant,Sorcery,Planeswalker | SpellDescription$ As CARDNAME enters the battlefield, choose artifact, enchantment, instant, sorcery, or planeswalker. +S:Mode$ CantBeCast | ValidCard$ Card.ChosenType | Description$ Players can't cast spells of the chosen type. +SVar:RemAIDeck:True +SVar:RemRandomDeck:True +Oracle:Flying, vigilance, trample\nAs Archon of Valor's Reach enters the battlefield, choose artifact, enchantment, instant, sorcery, or planeswalker.\nPlayers can't cast spells of the chosen type. diff --git a/forge-gui/res/cardsfolder/a/arcums_whistle.txt b/forge-gui/res/cardsfolder/a/arcums_whistle.txt index e738b124924..d586cb22f9c 100644 --- a/forge-gui/res/cardsfolder/a/arcums_whistle.txt +++ b/forge-gui/res/cardsfolder/a/arcums_whistle.txt @@ -1,10 +1,10 @@ Name:Arcum's Whistle ManaCost:3 Types:Artifact -A:AB$ Pump | Cost$ 3 T | ActivationPhases$ Upkeep->BeginCombat | ValidTgts$ Creature.nonWall+ActivePlayerCtrl+notFirstTurnControlled | TgtPrompt$ Select target non-Wall creature the active player has controlled continuously since the beginning of the turn. | IsCurse$ True | KW$ HIDDEN CARDNAME attacks each combat if able. | UnlessCost$ X | UnlessPayer$ TargetedController | References$ X | UnlessResolveSubs$ WhenNotPaid | SubAbility$ DestroyPacifist | SpellDescription$ Choose target non-Wall creature the active player has controlled continuously since the beginning of the turn. That player may pay {X}, where X is that creature's converted mana cost. If they don't, the creature attacks this turn if able, and at the beginning of the next end step, destroy it if it didn't attack. Activate this ability only before attackers are declared. +A:AB$ Pump | Cost$ 3 T | ActivationPhases$ Upkeep->BeginCombat | ValidTgts$ Creature.nonWall+ActivePlayerCtrl+notFirstTurnControlled | TgtPrompt$ Select target non-Wall creature the active player has controlled continuously since the beginning of the turn. | IsCurse$ True | KW$ HIDDEN CARDNAME attacks each combat if able. | UnlessCost$ X | UnlessPayer$ TargetedController | References$ X | UnlessResolveSubs$ WhenNotPaid | SubAbility$ DestroyPacifist | SpellDescription$ Choose target non-Wall creature the active player has controlled continuously since the beginning of the turn. That player may pay {X}, where X is that creature's converted mana cost. If they don't, the creature attacks this turn if able, and at the beginning of the next end step, destroy it if it didn't attack this turn. Activate this ability only before attackers are declared. SVar:DestroyPacifist:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigDestroy | RememberObjects$ ParentTarget | TriggerDescription$ At the beginning of the end step, destroy that creature if it didn't attack this turn. SVar:TrigDestroy:DB$ Destroy | Defined$ DelayTriggerRemembered | ConditionDefined$ DelayTriggerRemembered | ConditionPresent$ Creature.notAttackedThisTurn | ConditionCompare$ GE1 SVar:X:Targeted$CardManaCost SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/arcums_whistle.jpg -Oracle:{3}, {T}: Choose target non-Wall creature the active player has controlled continuously since the beginning of the turn. That player may pay {X}, where X is that creature's converted mana cost. If they don't, the creature attacks this turn if able, and at the beginning of the next end step, destroy it if it didn't attack. Activate this ability only before attackers are declared. +Oracle:{3}, {T}: Choose target non-Wall creature the active player has controlled continuously since the beginning of the turn. That player may pay {X}, where X is that creature's converted mana cost. If they don't pay, the creature attacks this turn if able, and at the beginning of the next end step, destroy it if it didn't attack this turn. Activate this ability only before attackers are declared. diff --git a/forge-gui/res/cardsfolder/a/ardent_plea.txt b/forge-gui/res/cardsfolder/a/ardent_plea.txt index c4adb5769d8..7a0d02184c4 100644 --- a/forge-gui/res/cardsfolder/a/ardent_plea.txt +++ b/forge-gui/res/cardsfolder/a/ardent_plea.txt @@ -4,4 +4,4 @@ Types:Enchantment K:Exalted K:Cascade SVar:Picture:http://www.wizards.com/global/images/magic/general/ardent_plea.jpg -Oracle:Exalted (Whenever a creature you control attacks alone, that creature gets +1/+1 until end of turn.)\nCascade (When you cast this spell, exile cards from the top of your library until you exile a nonland card that costs less. You may cast it without paying its mana cost. Put the exiled cards on the bottom in a random order.) +Oracle:Exalted (Whenever a creature you control attacks alone, that creature gets +1/+1 until end of turn.)\nCascade (When you cast this spell, exile cards from the top of your library until you exile a nonland card that costs less. You may cast it without paying its mana cost. Put the exiled cards on the bottom of your library in a random order.) diff --git a/forge-gui/res/cardsfolder/a/arena_rector.txt b/forge-gui/res/cardsfolder/a/arena_rector.txt new file mode 100644 index 00000000000..7033368ff34 --- /dev/null +++ b/forge-gui/res/cardsfolder/a/arena_rector.txt @@ -0,0 +1,11 @@ +Name:Arena Rector +ManaCost:3 W +Types:Creature Human Cleric +PT:1/2 +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Battlefield | Destination$ Graveyard | Execute$ TrigExile | OptionalDecider$ TriggeredCardController | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, you may exile it. If you do, search your library for a planeswalker card, put that card onto the battlefield, then shuffle your library. +SVar:TrigExile:DB$ ChangeZone | Origin$ Graveyard | Destination$ Exile | Defined$ TriggeredCard | SubAbility$ DBReturn +SVar:DBReturn:DB$ ChangeZone | Origin$ Library | Destination$ Battlefield | ChangeType$ Planeswalker.YouOwn | ChangeNum$ 1 +SVar:SacMe:4 +SVar:RemRandomDeck:True +DeckNeeds:Type$Planeswalker +Oracle:When Arena Rector dies, you may exile it. If you do, search your library for a planeswalker card, put that card onto the battlefield, then shuffle your library. diff --git a/forge-gui/res/cardsfolder/a/arisen_gorgon.txt b/forge-gui/res/cardsfolder/a/arisen_gorgon.txt new file mode 100644 index 00000000000..2a87d8ff138 --- /dev/null +++ b/forge-gui/res/cardsfolder/a/arisen_gorgon.txt @@ -0,0 +1,6 @@ +Name:Arisen Gorgon +ManaCost:1 B B +Types:Creature Zombie Gorgon +PT:3/3 +S:Mode$ Continuous | Affected$ Card.Self | AddKeyword$ Deathtouch | IsPresent$ Planeswalker.Liliana+YouCtrl | Description$ Arisen Gorgon has deathtouch as long as you control a Liliana planeswalker. +Oracle:Arisen Gorgon has deathtouch as long as you control a Liliana planeswalker. (Any amount of damage this deals to a creature is enough to destroy it.) diff --git a/forge-gui/res/cardsfolder/a/arixmethes_slumbering_isle.txt b/forge-gui/res/cardsfolder/a/arixmethes_slumbering_isle.txt new file mode 100644 index 00000000000..c52e81e481f --- /dev/null +++ b/forge-gui/res/cardsfolder/a/arixmethes_slumbering_isle.txt @@ -0,0 +1,12 @@ +Name:Arixmethes, Slumbering Isle +ManaCost:2 G U +Types:Legendary Creature Kraken +PT:12/12 +K:ETBReplacement:Other:LandTapped +SVar:LandTapped:DB$ Tap | Defined$ Self | SubAbility$ DBAddCounter | ETB$ True | SpellDescription$ CARDNAME enters the battlefield tapped with five slumber counters on it. +SVar:DBAddCounter:DB$ PutCounter | Defined$ Self | ETB$ True | CounterType$ SLUMBER | CounterNum$ 5 +S:Mode$ Continuous | Affected$ Card.Self+counters_GE1_SLUMBER | AddType$ Land | RemoveCardTypes$ True | Description$ As long as CARDNAME has a slumber counter on it, it's a land. (It's not a creature.) +T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ You | Execute$ TrigRemoveCounter | TriggerZones$ Battlefield | OptionalDecider$ You | TriggerDescription$ Whenever you cast a spell, you may remove a slumber counter from CARDNAME. +SVar:TrigRemoveCounter:DB$RemoveCounter | Defined$ Self | CounterType$ SLUMBER | CounterNum$ 1 +A:AB$ Mana | Cost$ T | Produced$ G U | SpellDescription$ Add {G}{U}. +Oracle:Arixmethes, Slumbering Isle enters the battlefield tapped with five slumber counters on it.\nAs long as Arixmethes has a slumber counter on it, it's a land. (It's not a creature.)\nWhenever you cast a spell, you may remove a slumber counter from Arixmethes.\n{T}: Add {G}{U}. diff --git a/forge-gui/res/cardsfolder/a/arlinn_kord_arlinn_embraced_by_the_moon.txt b/forge-gui/res/cardsfolder/a/arlinn_kord_arlinn_embraced_by_the_moon.txt index ed793704b70..4bac6f9cd3e 100644 --- a/forge-gui/res/cardsfolder/a/arlinn_kord_arlinn_embraced_by_the_moon.txt +++ b/forge-gui/res/cardsfolder/a/arlinn_kord_arlinn_embraced_by_the_moon.txt @@ -8,7 +8,7 @@ SVar:DBTransform:DB$ SetState | Defined$ Self | Mode$ Transform AlternateMode:DoubleFaced SVar:PlayMain1:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/arlinn_kord.jpg -Oracle:[+1]: Until end of turn, up to one target creature gets +2/+2 and gains vigilance and haste.\n[0]: Create a 2/2 green Wolf creature token. Transform Arlinn Kord. +Oracle:+1: Until end of turn, up to one target creature gets +2/+2 and gains vigilance and haste.\n0: Create a 2/2 green Wolf creature token. Transform Arlinn Kord. ALTERNATE @@ -18,11 +18,11 @@ Colors:red,green Types:Legendary Planeswalker Arlinn Loyalty:0 A:AB$ PumpAll | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | ValidCards$ Creature.YouCtrl | NumAtt$ +1 | NumDef$ +1 | KW$ Trample | SpellDescription$ Creatures you control get +1/+1 and gain trample until end of turn. -A:AB$ DealDamage | Cost$ SubCounter<1/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SubAbility$ DBTransform | SpellDescription$ CARDNAME deals 3 damage to target creature or player. Transform CARDNAME. +A:AB$ DealDamage | Cost$ SubCounter<1/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SubAbility$ DBTransform | SpellDescription$ CARDNAME deals 3 damage to any target. Transform CARDNAME. SVar:DBTransform:DB$ SetState | Defined$ Self | Mode$ Transform -A:AB$ Effect | Cost$ SubCounter<6/LOYALTY> | Name$ Emblem - Arlinn, Embraced by the Moon | Image$ emblem_arlinn_embraced_by_the_moon | StaticAbilities$ STArlinn | SVars$ ArlinnX,ArlinnDealDamage | Planeswalker$ True | Ultimate$ True | Stackable$ False | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "Creatures you control have haste and '{T}: This creature deals damage equal to its power to target creature or player.'" -SVar:STArlinn:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.YouCtrl | AffectedZone$ Battlefield | AddKeyword$ Haste | AddAbility$ ArlinnDealDamage | AddSVar$ ArlinnX | Description$ Creatures you control have haste and "{T}: This creature deals damage equal to its power to target creature or player." -SVar:ArlinnDealDamage:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ ArlinnX | References$ ArlinnX | SpellDescription$ This creature deals damage equal to its power to target creature or player. +A:AB$ Effect | Cost$ SubCounter<6/LOYALTY> | Name$ Emblem - Arlinn, Embraced by the Moon | Image$ emblem_arlinn_embraced_by_the_moon | StaticAbilities$ STArlinn | SVars$ ArlinnX,ArlinnDealDamage | Planeswalker$ True | Ultimate$ True | Stackable$ False | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "Creatures you control have haste and '{T}: This creature deals damage equal to its power to any target.'" +SVar:STArlinn:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.YouCtrl | AffectedZone$ Battlefield | AddKeyword$ Haste | AddAbility$ ArlinnDealDamage | AddSVar$ ArlinnX | Description$ Creatures you control have haste and "{T}: This creature deals damage equal to its power to any target." +SVar:ArlinnDealDamage:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ ArlinnX | References$ ArlinnX | SpellDescription$ This creature deals damage equal to its power to any target. SVar:ArlinnX:Count$CardPower SVar:Picture:http://www.wizards.com/global/images/magic/general/arlinn_embraced_by_the_moon.jpg -Oracle:[+1]: Creatures you control get +1/+1 and gain trample until end of turn.\n[-1]: Arlinn, Embraced by the Moon deals 3 damage to target creature or player. Transform Arlinn, Embraced by the Moon.\n[-6]: You get an emblem with "Creatures you control have haste and '{T}: This creature deals damage equal to its power to target creature or player.'" \ No newline at end of file +Oracle:[+1]: Creatures you control get +1/+1 and gain trample until end of turn.\n[-1]: Arlinn, Embraced by the Moon deals 3 damage to any target. Transform Arlinn, Embraced by the Moon.\n[-6]: You get an emblem with "Creatures you control have haste and '{T}: This creature deals damage equal to its power to any target.'" diff --git a/forge-gui/res/cardsfolder/a/arm_with_aether.txt b/forge-gui/res/cardsfolder/a/arm_with_aether.txt index 37971bcad48..21d66774026 100644 --- a/forge-gui/res/cardsfolder/a/arm_with_aether.txt +++ b/forge-gui/res/cardsfolder/a/arm_with_aether.txt @@ -5,4 +5,4 @@ A:SP$ AnimateAll | Cost$ 2 U | ValidCards$ Creature.YouCtrl | Triggers$ Trig | s SVar:Trig:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Opponent | OptionalDecider$ You | Execute$ Eff | TriggerDescription$ Whenever this creature deals damage to an opponent, you may return target creature that player controls to its owner's hand. SVar:Eff:DB$ ChangeZone | ValidTgts$ Creature | TargetsWithDefinedController$ TriggeredTarget | TgtPrompt$ Select target creature that player controls. | Origin$ Battlefield | Destination$ Hand SVar:Picture:http://www.wizards.com/global/images/magic/general/arm_with_aether.jpg -Oracle:Until end of turn, creatures you control gain "Whenever this creature deals damage to an opponent, you may return target creature that player controls to its owner's hand." \ No newline at end of file +Oracle:Until end of turn, creatures you control gain "Whenever this creature deals damage to an opponent, you may return target creature that player controls to its owner's hand." \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/armored_whirl_turtle.txt b/forge-gui/res/cardsfolder/a/armored_whirl_turtle.txt new file mode 100644 index 00000000000..e2ac8a30b9b --- /dev/null +++ b/forge-gui/res/cardsfolder/a/armored_whirl_turtle.txt @@ -0,0 +1,5 @@ +Name:Armored Whirl Turtle +ManaCost:2 U +Types:Creature Turtle +Oracle: +PT:0/5 diff --git a/forge-gui/res/cardsfolder/a/army_of_the_damned.txt b/forge-gui/res/cardsfolder/a/army_of_the_damned.txt index 575dde97a85..de9f36a250f 100644 --- a/forge-gui/res/cardsfolder/a/army_of_the_damned.txt +++ b/forge-gui/res/cardsfolder/a/army_of_the_damned.txt @@ -1,7 +1,7 @@ Name:Army of the Damned ManaCost:5 B B B Types:Sorcery -K:Flashback 7 B B B +K:Flashback:7 B B B A:SP$ Token | Cost$ 5 B B B | TokenImage$ b 2 2 zombie ISD | TokenAltImages$ b_2_2_zombie2_ISD,b_2_2_zombie3_ISD | TokenAmount$ 13 | TokenName$ Zombie | TokenTypes$ Creature,Zombie | TokenOwner$ You | TokenPower$ 2 | TokenToughness$ 2 | TokenColors$ Black | TokenTapped$ True | SpellDescription$ Create thirteen tapped 2/2 black Zombie creature tokens. SVar:Picture:http://www.wizards.com/global/images/magic/general/army_of_the_damned.jpg Oracle:Create thirteen tapped 2/2 black Zombie creature tokens.\nFlashback {7}{B}{B}{B} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/a/arrow_storm.txt b/forge-gui/res/cardsfolder/a/arrow_storm.txt index 16d570a02f1..f99e9f22fd0 100644 --- a/forge-gui/res/cardsfolder/a/arrow_storm.txt +++ b/forge-gui/res/cardsfolder/a/arrow_storm.txt @@ -1,8 +1,8 @@ Name:Arrow Storm ManaCost:3 R R Types:Sorcery -A:SP$ DealDamage | Cost$ 3 R R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 4 | ConditionCheckSVar$ RaidTest | ConditionSVarCompare$ EQ0 | References$ RaidTest | SubAbility$ DBDmg | SpellDescription$ CARDNAME deals 4 damage to target creature or player. Raid — If you attacked with a creature this turn, instead CARDNAME deals 5 damage to that creature or player and the damage can't be prevented. +A:SP$ DealDamage | Cost$ 3 R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 4 | ConditionCheckSVar$ RaidTest | ConditionSVarCompare$ EQ0 | References$ RaidTest | SubAbility$ DBDmg | SpellDescription$ CARDNAME deals 4 damage to any target. Raid — If you attacked with a creature this turn, instead CARDNAME deals 5 damage to that permanent or player and the damage can't be prevented. SVar:DBDmg:DB$ DealDamage | Defined$ Targeted | NumDmg$ 5 | NoPrevention$ True | ConditionCheckSVar$ RaidTest | ConditionSVarCompare$ GE1 | References$ RaidTest | StackDescription$ Raid — If you attacked with a creature this turn, instead CARDNAME deals 5 damage to {Targeted} and the damage can't be prevented. SVar:RaidTest:Count$AttackersDeclared SVar:Picture:http://www.wizards.com/global/images/magic/general/arrow_storm.jpg -Oracle:Arrow Storm deals 4 damage to target creature or player.\nRaid — If you attacked with a creature this turn, instead Arrow Storm deals 5 damage to that creature or player and the damage can't be prevented. \ No newline at end of file +Oracle:Arrow Storm deals 4 damage to any target.\nRaid — If you attacked with a creature this turn, instead Arrow Storm deals 5 damage to that permanent or player and the damage can't be prevented. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/arrow_volley_trap.txt b/forge-gui/res/cardsfolder/a/arrow_volley_trap.txt index c5e584d08a6..0708984f932 100644 --- a/forge-gui/res/cardsfolder/a/arrow_volley_trap.txt +++ b/forge-gui/res/cardsfolder/a/arrow_volley_trap.txt @@ -4,4 +4,4 @@ Types:Instant Trap A:SP$ DealDamage | Cost$ 3 W W | ValidTgts$ Creature.attacking | TgtPrompt$ Select target attacking creature to distribute damage to | NumDmg$ 5 | TargetMin$ 1 | TargetMax$ 5 | DividedAsYouChoose$ 5 | SpellDescription$ CARDNAME deals 5 damage divided as you choose among any number of target attacking creatures. A:SP$ DealDamage | Cost$ 1 W | ValidTgts$ Creature.attacking | TgtPrompt$ Select target attacking creature to distribute damage to | NumDmg$ 5 | TargetMin$ 1 | TargetMax$ 5 | DividedAsYouChoose$ 5 | IsPresent$ Creature.attacking | PresentCompare$ GE4 | CostDesc$ If four or more creatures are attacking, you may pay {1}{W} rather than pay CARDNAME's mana cost. | SpellDescription$ SVar:Picture:http://www.wizards.com/global/images/magic/general/arrow_volley_trap.jpg -Oracle:If four or more creatures are attacking, you may pay {1}{W} rather than pay Arrow Volley Trap's mana cost.\nArrow Volley Trap deals 5 damage divided as you choose among any number of target attacking creatures. +Oracle:If four or more creatures are attacking, you may pay {1}{W} rather than pay this spell's mana cost.\nArrow Volley Trap deals 5 damage divided as you choose among any number of target attacking creatures. diff --git a/forge-gui/res/cardsfolder/a/artful_dodge.txt b/forge-gui/res/cardsfolder/a/artful_dodge.txt index e77c3315dc2..724e050cdd5 100644 --- a/forge-gui/res/cardsfolder/a/artful_dodge.txt +++ b/forge-gui/res/cardsfolder/a/artful_dodge.txt @@ -1,7 +1,7 @@ Name:Artful Dodge ManaCost:U Types:Sorcery -K:Flashback U +K:Flashback:U A:SP$ Pump | Cost$ U | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ HIDDEN Unblockable | SpellDescription$ Target creature can't be blocked this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/artful_dodge.jpg Oracle:Target creature can't be blocked this turn.\nFlashback {U} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/a/artificers_assistant.txt b/forge-gui/res/cardsfolder/a/artificers_assistant.txt index c5c2f92ce1f..c3b55971dac 100644 --- a/forge-gui/res/cardsfolder/a/artificers_assistant.txt +++ b/forge-gui/res/cardsfolder/a/artificers_assistant.txt @@ -5,4 +5,4 @@ PT:1/1 K:Flying T:Mode$ SpellCast | ValidCard$ Card.Historic | ValidActivatingPlayer$ You | Execute$ TrigScry | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast a historic spell, scry 1. (Artifacts, legendaries, and Sagas are historic.) SVar:TrigScry:DB$ Scry | ScryNum$ 1 -Oracle:Flying\nWhenever you cast a historic spell, scry 1. (Artifacts, legendaries, and Sagas are historic.) +Oracle:Flying\nWhenever you cast a historic spell, scry 1. (Artifacts, legendaries, and Sagas are historic. To scry 1, look at the top card of your library, then you may put that card on the bottom of your library.) diff --git a/forge-gui/res/cardsfolder/a/artillerize.txt b/forge-gui/res/cardsfolder/a/artillerize.txt index 5290d9121cf..8e42599fa7f 100644 --- a/forge-gui/res/cardsfolder/a/artillerize.txt +++ b/forge-gui/res/cardsfolder/a/artillerize.txt @@ -1,7 +1,7 @@ Name:Artillerize ManaCost:3 R Types:Instant -A:SP$ DealDamage | Cost$ 3 R Sac<1/Artifact;Creature/artifact or creature> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 5 | SpellDescription$ CARDNAME deals 5 damage to target creature or player. +A:SP$ DealDamage | Cost$ 3 R Sac<1/Artifact;Creature/artifact or creature> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 5 | SpellDescription$ CARDNAME deals 5 damage to any target. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/artillerize.jpg -Oracle:As an additional cost to cast Artillerize, sacrifice an artifact or creature.\nArtillerize deals 5 damage to target creature or player. +Oracle:As an additional cost to cast this spell, sacrifice an artifact or creature.\nArtillerize deals 5 damage to any target. diff --git a/forge-gui/res/cardsfolder/a/artisan_of_kozilek.txt b/forge-gui/res/cardsfolder/a/artisan_of_kozilek.txt index 100335fec05..c2394701c51 100644 --- a/forge-gui/res/cardsfolder/a/artisan_of_kozilek.txt +++ b/forge-gui/res/cardsfolder/a/artisan_of_kozilek.txt @@ -6,4 +6,4 @@ K:Annihilator:2 T:Mode$ SpellCast | ValidCard$ Card.Self | Execute$ TrigReturn | OptionalDecider$ You | TriggerDescription$ When you cast CARDNAME, you may return target creature card from your graveyard to the battlefield. SVar:TrigReturn:DB$ChangeZone | ValidTgts$ Creature.YouOwn | TgtPrompt$ Select target creature in your graveyard | Origin$ Graveyard | Destination$ Battlefield SVar:Picture:http://www.wizards.com/global/images/magic/general/artisan_of_kozilek.jpg -Oracle:When you cast Artisan of Kozilek, you may return target creature card from your graveyard to the battlefield.\nAnnihilator 2 (Whenever this creature attacks, defending player sacrifices two permanents.) +Oracle:When you cast this spell, you may return target creature card from your graveyard to the battlefield.\nAnnihilator 2 (Whenever this creature attacks, defending player sacrifices two permanents.) diff --git a/forge-gui/res/cardsfolder/a/aryel_knight_of_windgrace.txt b/forge-gui/res/cardsfolder/a/aryel_knight_of_windgrace.txt index 061362b590a..20d58c628ae 100644 --- a/forge-gui/res/cardsfolder/a/aryel_knight_of_windgrace.txt +++ b/forge-gui/res/cardsfolder/a/aryel_knight_of_windgrace.txt @@ -9,4 +9,4 @@ SVar:X:XChoice DeckHas:Ability$Token DeckHints:Type$Knight SVar:Picture:http://www.wizards.com/global/images/magic/general/aryel_knight_of_windgrace.jpg -Oracle:Vigilance\n{2}{W}, T: Create a 2/2 white Knight creature token with vigilance.\n{B}, {T}, Tap X untapped Knights you control: Destroy target creature with power X or less. +Oracle:Vigilance\n{2}{W}, {T}: Create a 2/2 white Knight creature token with vigilance.\n{B}, {T}, Tap X untapped Knights you control: Destroy target creature with power X or less. diff --git a/forge-gui/res/cardsfolder/a/ascendant_evincar.txt b/forge-gui/res/cardsfolder/a/ascendant_evincar.txt index 9e178cb54e2..ab306a0ecc6 100644 --- a/forge-gui/res/cardsfolder/a/ascendant_evincar.txt +++ b/forge-gui/res/cardsfolder/a/ascendant_evincar.txt @@ -7,4 +7,4 @@ S:Mode$ Continuous | Affected$ Creature.Black+Other | AddPower$ 1 | AddToughness S:Mode$ Continuous | Affected$ Creature.nonBlack | AddPower$ -1 | AddToughness$ -1 | Description$ Nonblack creatures get -1/-1. SVar:PlayMain1:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/ascendant_evincar.jpg -Oracle:Flying\nOther black creatures get +1/+1.\nNonblack creatures get -1/-1. +Oracle:Flying (This creature can't be blocked except by creatures with flying or reach.)\nOther black creatures get +1/+1.\nNonblack creatures get -1/-1. diff --git a/forge-gui/res/cardsfolder/a/ascended_lawmage.txt b/forge-gui/res/cardsfolder/a/ascended_lawmage.txt index f1d96a561df..c28501687df 100644 --- a/forge-gui/res/cardsfolder/a/ascended_lawmage.txt +++ b/forge-gui/res/cardsfolder/a/ascended_lawmage.txt @@ -5,4 +5,4 @@ PT:3/2 K:Flying K:Hexproof SVar:Picture:http://www.wizards.com/global/images/magic/general/ascended_lawmage.jpg -Oracle:Flying, hexproof +Oracle:Flying\nHexproof (This creature can't be the target of spells or abilities your opponents control.) diff --git a/forge-gui/res/cardsfolder/a/ash_barrens.txt b/forge-gui/res/cardsfolder/a/ash_barrens.txt index 5b297e3c16c..01e1760bd18 100644 --- a/forge-gui/res/cardsfolder/a/ash_barrens.txt +++ b/forge-gui/res/cardsfolder/a/ash_barrens.txt @@ -4,4 +4,4 @@ Types:Land A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}. K:TypeCycling:Basic:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/ash_barrens.jpg -Oracle:{T}: Add {C}.\nBasic landcycling {1} ({1}, Discard this card: Search your library for a basic land card, reveal it, put it into your hand, then shuffle your library.) +Oracle:{T}: Add {C}.\nBasic landcycling {1} ({1}, Discard this card: Search your library for a basic land card, reveal it, and put it into your hand, then shuffle your library.) diff --git a/forge-gui/res/cardsfolder/a/ashiok_nightmare_weaver.txt b/forge-gui/res/cardsfolder/a/ashiok_nightmare_weaver.txt index b2fd8e0e5de..558e3627c68 100644 --- a/forge-gui/res/cardsfolder/a/ashiok_nightmare_weaver.txt +++ b/forge-gui/res/cardsfolder/a/ashiok_nightmare_weaver.txt @@ -14,4 +14,4 @@ SVar:DBForget:DB$ Pump | ForgetObjects$ TriggeredCard T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | Static$ True | ValidCard$ Card.Self | Execute$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/ashiok_nightmare_weaver.jpg -Oracle:[+2]: Exile the top three cards of target opponent's library.\n[-X]: Put a creature card with converted mana cost X exiled with Ashiok, Nightmare Weaver onto the battlefield under your control. That creature is a Nightmare in addition to its other types.\n[-10]: Exile all cards from all opponents' hands and graveyards. +Oracle:+2: Exile the top three cards of target opponent's library.\n−X: Put a creature card with converted mana cost X exiled with Ashiok, Nightmare Weaver onto the battlefield under your control. That creature is a Nightmare in addition to its other types.\n−10: Exile all cards from all opponents' hands and graveyards. diff --git a/forge-gui/res/cardsfolder/a/ashling_the_extinguisher.txt b/forge-gui/res/cardsfolder/a/ashling_the_extinguisher.txt index ea5a3dd70dc..df9c3a7ef17 100644 --- a/forge-gui/res/cardsfolder/a/ashling_the_extinguisher.txt +++ b/forge-gui/res/cardsfolder/a/ashling_the_extinguisher.txt @@ -2,8 +2,8 @@ Name:Ashling, the Extinguisher ManaCost:2 B B Types:Legendary Creature Elemental Shaman PT:4/4 -T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | Execute$ TrigDestroy | CombatDamage$ True | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, choose target creature that player controls. They sacrifice that creature. +T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | Execute$ TrigDestroy | CombatDamage$ True | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, choose target creature that player controls. The player sacrifices that creature. SVar:TrigDestroy:DB$Destroy | ValidTgts$ Creature.DefenderCtrl | Sacrifice$ True | TgtPrompt$ Select target creature defending player controls SVar:MustBeBlocked:True SVar:Picture:http://serv3.tcgimages.eu/img/cards/Eventide/ashling_the_extinguisher.jpg -Oracle:Whenever Ashling, the Extinguisher deals combat damage to a player, choose target creature that player controls. They sacrifice that creature. +Oracle:Whenever Ashling, the Extinguisher deals combat damage to a player, choose target creature that player controls. The player sacrifices that creature. diff --git a/forge-gui/res/cardsfolder/a/ashmouth_hound.txt b/forge-gui/res/cardsfolder/a/ashmouth_hound.txt index 7c7dd11602e..ca3725f2850 100644 --- a/forge-gui/res/cardsfolder/a/ashmouth_hound.txt +++ b/forge-gui/res/cardsfolder/a/ashmouth_hound.txt @@ -4,7 +4,7 @@ Types:Creature Elemental Hound PT:2/1 T:Mode$ AttackerBlockedByCreature | ValidCard$ Creature | ValidBlocker$ Card.Self | Execute$ TrigDamageAttacker | TriggerDescription$ Whenever CARDNAME blocks or becomes blocked by a creature, CARDNAME deals 1 damage to that creature. T:Mode$ AttackerBlockedByCreature | ValidCard$ Card.Self | ValidBlocker$ Creature | Execute$ TrigDamageBlocker | Secondary$ True | TriggerDescription$ Whenever CARDNAME blocks or becomes blocked by a creature, CARDNAME deals 1 damage to that creature. -SVar:TrigDamageAttacker:DB$ DealDamage | Defined$ TriggeredAttacker | NumDmg$ 1 -SVar:TrigDamageBlocker:DB$ DealDamage | Defined$ TriggeredBlocker | NumDmg$ 1 +SVar:TrigDamageAttacker:DB$ DealDamage | Defined$ TriggeredAttackerLKICopy | NumDmg$ 1 +SVar:TrigDamageBlocker:DB$ DealDamage | Defined$ TriggeredBlockerLKICopy | NumDmg$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/ashmouth_hound.jpg Oracle:Whenever Ashmouth Hound blocks or becomes blocked by a creature, Ashmouth Hound deals 1 damage to that creature. diff --git a/forge-gui/res/cardsfolder/a/assassins_blade.txt b/forge-gui/res/cardsfolder/a/assassins_blade.txt index fa33dfc5496..fb9377a5a72 100644 --- a/forge-gui/res/cardsfolder/a/assassins_blade.txt +++ b/forge-gui/res/cardsfolder/a/assassins_blade.txt @@ -3,4 +3,4 @@ ManaCost:1 B Types:Instant A:SP$ Destroy | Cost$ 1 B | ValidTgts$ Creature.nonBlack+attacking | TgtPrompt$ Select target nonblack attacking creature | OpponentTurn$ True | ActivationPhases$ Declare Attackers | SpellDescription$ Cast CARDNAME only during the declare attackers step and only if you've been attacked this step. Destroy target nonblack attacking creature. SVar:Picture:http://www.wizards.com/global/images/magic/general/assassins_blade.jpg -Oracle:Cast Assassin's Blade only during the declare attackers step and only if you've been attacked this step.\nDestroy target nonblack attacking creature. +Oracle:Cast this spell only during the declare attackers step and only if you've been attacked this step.\nDestroy target nonblack attacking creature. diff --git a/forge-gui/res/cardsfolder/a/assault_battery.txt b/forge-gui/res/cardsfolder/a/assault_battery.txt index 29c02cac108..b40acb6de45 100644 --- a/forge-gui/res/cardsfolder/a/assault_battery.txt +++ b/forge-gui/res/cardsfolder/a/assault_battery.txt @@ -2,9 +2,9 @@ Name:Assault ManaCost:R AlternateMode: Split Types:Sorcery -A:SP$ DealDamage | Cost$ R | NumDmg$ 2 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | SpellDescription$ Assault deals 2 damage to target creature or player. +A:SP$ DealDamage | Cost$ R | NumDmg$ 2 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | SpellDescription$ Assault deals 2 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/assault_battery.jpg -Oracle:Assault deals 2 damage to target creature or player. +Oracle:Assault deals 2 damage to any target. ALTERNATE diff --git a/forge-gui/res/cardsfolder/a/assemble_the_rank_and_vile.txt b/forge-gui/res/cardsfolder/a/assemble_the_rank_and_vile.txt index 0ec48fa34db..1cd588a1d0b 100644 --- a/forge-gui/res/cardsfolder/a/assemble_the_rank_and_vile.txt +++ b/forge-gui/res/cardsfolder/a/assemble_the_rank_and_vile.txt @@ -7,4 +7,4 @@ SVar:AtRaVDie:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | SVar:AtRaVZombie:AB$ Token | Cost$ B | TokenAmount$ 1 | TokenName$ Zombie | TokenTypes$ Creature,Zombie | TokenOwner$ You | TokenColors$ Black | TokenPower$ 2 | TokenToughness$ 2 | TokenTapped$ True | TokenImage$ b 2 2 zombie CN2 SVar:AgendaLogic:BestCreatureInComputerDeck SVar:Picture:http://www.wizards.com/global/images/magic/general/assemble_the_rank_and_vile.jpg -Oracle:Hidden agenda (Start the game with this conspiracy face down in the command zone and secretly name a card. You may turn this conspiracy face up any time and reveal the chosen name.)\nCreatures you control with the chosen name have "When this creature dies, you may pay {B}. If you do, put a 2/2 black Zombie creature token onto the battlefield tapped." \ No newline at end of file +Oracle:Hidden agenda (Start the game with this conspiracy face down in the command zone and secretly choose a card name. You may turn this conspiracy face up any time and reveal that name.)\nCreatures you control with the chosen name have "When this creature dies, you may pay {B}. If you do, create a tapped 2/2 black Zombie creature token." \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/assembled_alphas.txt b/forge-gui/res/cardsfolder/a/assembled_alphas.txt index 2bc7e3150d6..cb51640928d 100644 --- a/forge-gui/res/cardsfolder/a/assembled_alphas.txt +++ b/forge-gui/res/cardsfolder/a/assembled_alphas.txt @@ -4,10 +4,10 @@ Types:Creature Wolf PT:5/5 T:Mode$ AttackerBlockedByCreature | ValidCard$ Creature | ValidBlocker$ Card.Self | Execute$ TrigDamageAttacker | TriggerDescription$ Whenever CARDNAME blocks or becomes blocked by a creature, CARDNAME deals 3 damage to that creature and 3 damage to that creature's controller. T:Mode$ AttackerBlockedByCreature | ValidCard$ Card.Self | ValidBlocker$ Creature | Execute$ TrigDamageBlocker | Secondary$ True | TriggerDescription$ Whenever CARDNAME blocks or becomes blocked by a creature, CARDNAME deals 3 damage to that creature and 3 damage to that creature's controller. -SVar:TrigDamageAttacker:DB$ DealDamage | Defined$ TriggeredAttacker | NumDmg$ 3 | SubAbility$ DBDamageAtk -SVar:TrigDamageBlocker:DB$ DealDamage | Defined$ TriggeredBlocker | NumDmg$ 3 | SubAbility$ DBDamageBlk +SVar:TrigDamageAttacker:DB$ DealDamage | Defined$ TriggeredAttackerLKICopy | NumDmg$ 3 | SubAbility$ DBDamageAtk +SVar:TrigDamageBlocker:DB$ DealDamage | Defined$ TriggeredBlockerLKICopy | NumDmg$ 3 | SubAbility$ DBDamageBlk SVar:DBDamageAtk:DB$ DealDamage | Defined$ TriggeredAttackerController | NumDmg$ 3 SVar:DBDamageBlk:DB$ DealDamage | Defined$ TriggeredBlockerController | NumDmg$ 3 SVar:HasCombatEffect:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/assembled_alphas.jpg -Oracle:Whenever Assembled Alphas blocks or becomes blocked by a creature, Assembled Alphas deals 3 damage to that creature and 3 damage to that creature's controller. \ No newline at end of file +Oracle:Whenever Assembled Alphas blocks or becomes blocked by a creature, Assembled Alphas deals 3 damage to that creature and 3 damage to that creature's controller. diff --git a/forge-gui/res/cardsfolder/a/atarka_efreet.txt b/forge-gui/res/cardsfolder/a/atarka_efreet.txt index 4c942a13308..54df50a5cc0 100644 --- a/forge-gui/res/cardsfolder/a/atarka_efreet.txt +++ b/forge-gui/res/cardsfolder/a/atarka_efreet.txt @@ -3,7 +3,7 @@ ManaCost:3 R Types:Creature Efreet Shaman PT:5/1 K:Megamorph:2 R -T:Mode$ TurnFaceUp | ValidCard$ Card.Self | Execute$ TrigDamage | TriggerZones$ Battlefield | TriggerDescription$ When CARDNAME is turned face up, it deals 1 damage to target creature or player. -SVar:TrigDamage:DB$DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 +T:Mode$ TurnFaceUp | ValidCard$ Card.Self | Execute$ TrigDamage | TriggerZones$ Battlefield | TriggerDescription$ When CARDNAME is turned face up, it deals 1 damage to any target. +SVar:TrigDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/atarka_efreet.jpg -Oracle:Megamorph {2}{R} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its megamorph cost and put a +1/+1 counter on it.)\nWhen Atarka Efreet is turned face up, it deals 1 damage to target creature or player. +Oracle:Megamorph {2}{R} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its megamorph cost and put a +1/+1 counter on it.)\nWhen Atarka Efreet is turned face up, it deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/a/atarka_world_render.txt b/forge-gui/res/cardsfolder/a/atarka_world_render.txt index fee08c7ab0a..36e515087d3 100644 --- a/forge-gui/res/cardsfolder/a/atarka_world_render.txt +++ b/forge-gui/res/cardsfolder/a/atarka_world_render.txt @@ -10,4 +10,4 @@ SVar:BuffedBy:Dragon SVar:PlayMain1:TRUE DeckHints:Type$Dragon SVar:Picture:http://www.wizards.com/global/images/magic/general/atarka_world_render.jpg -Oracle:Flying, trample\nWhenever a Dragon you control attacks, it gains double strike until end of turn. \ No newline at end of file +Oracle:Flying, trample\nWhenever a Dragon you control attacks, it gains double strike until end of turn. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/atzocan_archer.txt b/forge-gui/res/cardsfolder/a/atzocan_archer.txt index 567da6e4867..e013e61157a 100644 --- a/forge-gui/res/cardsfolder/a/atzocan_archer.txt +++ b/forge-gui/res/cardsfolder/a/atzocan_archer.txt @@ -4,6 +4,6 @@ Types:Creature Human Archer PT:1/4 K:Reach T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigFight | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters the battlefield, you may have it fight another target creature. (Each deals damage equal to its power to the other.) -SVar:TrigFight:DB$ Fight | Defined$ TriggeredCard | ValidTgts$ Creature.Other | TgtPrompt$ Select another target creature +SVar:TrigFight:DB$ Fight | Defined$ TriggeredCardLKICopy | ValidTgts$ Creature.Other | TgtPrompt$ Select another target creature SVar:Picture:http://www.wizards.com/global/images/magic/general/atzocan_archer.jpg -Oracle:Reach\nWhen Atzocan Archer enters the battlefield, you may have it fight another target creature. (Each deals damage equal to its power to the other.) \ No newline at end of file +Oracle:Reach\nWhen Atzocan Archer enters the battlefield, you may have it fight another target creature. (Each deals damage equal to its power to the other.) diff --git a/forge-gui/res/cardsfolder/a/augury_adept.txt b/forge-gui/res/cardsfolder/a/augury_adept.txt index a3bc81530ae..b0aafffbc45 100644 --- a/forge-gui/res/cardsfolder/a/augury_adept.txt +++ b/forge-gui/res/cardsfolder/a/augury_adept.txt @@ -8,4 +8,4 @@ SVar:DBGain:DB$GainLife | LifeAmount$ X | SubAbility$ DBCleanup | References$ X SVar:DBCleanup:DB$Cleanup | ClearRemembered$ True SVar:X:Remembered$CardManaCost SVar:Picture:http://www.wizards.com/global/images/magic/general/augury_adept.jpg -Oracle:Whenever Augury Adept deals combat damage to a player, reveal the top card of your library and put that card into your hand. You gain life equal to its converted mana cost. \ No newline at end of file +Oracle:Whenever Augury Adept deals combat damage to a player, reveal the top card of your library and put that card into your hand. You gain life equal to its converted mana cost. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/aunties_snitch.txt b/forge-gui/res/cardsfolder/a/aunties_snitch.txt index 9a100d89d0c..0557dc7778c 100644 --- a/forge-gui/res/cardsfolder/a/aunties_snitch.txt +++ b/forge-gui/res/cardsfolder/a/aunties_snitch.txt @@ -3,8 +3,9 @@ ManaCost:2 B Types:Creature Goblin Rogue PT:3/1 K:CARDNAME can't block. -SVar:AltCost:Cost$ 1 B | Activation$ ProwlGoblin | Description$ Prowl {1}{B} (You may cast this for its prowl cost if you dealt combat damage to a player this turn with a Goblin or Rogue.) +K:Prowl:1 B T:Mode$ DamageDone | ValidSource$ Goblin.YouCtrl,Rogue.YouCtrl | TriggerZones$ Graveyard | IsPresent$ Card.StrictlySelf | PresentZone$ Graveyard | ValidTarget$ Player | CombatDamage$ True | OptionalDecider$ You | Execute$ TrigChange | TriggerDescription$ Whenever a Goblin or Rogue you control deals combat damage to a player, if CARDNAME is in your graveyard, you may return CARDNAME to your hand. SVar:TrigChange:DB$ChangeZone | Origin$ Graveyard | Destination$ Hand | Defined$ Self +DeckNeeds:Type$Rogue SVar:Picture:http://www.wizards.com/global/images/magic/general/aunties_snitch.jpg Oracle:Auntie's Snitch can't block.\nProwl {1}{B} (You may cast this for its prowl cost if you dealt combat damage to a player this turn with a Goblin or Rogue.)\nWhenever a Goblin or Rogue you control deals combat damage to a player, if Auntie's Snitch is in your graveyard, you may return Auntie's Snitch to your hand. diff --git a/forge-gui/res/cardsfolder/a/aurelias_fury.txt b/forge-gui/res/cardsfolder/a/aurelias_fury.txt index 2f822ecbeb3..ff6f394f149 100644 --- a/forge-gui/res/cardsfolder/a/aurelias_fury.txt +++ b/forge-gui/res/cardsfolder/a/aurelias_fury.txt @@ -1,15 +1,15 @@ Name:Aurelia's Fury ManaCost:X R W Types:Instant -A:SP$ DealDamage | Cost$ X R W | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature and/or player to distribute damage to | NumDmg$ X | TargetMin$ Min | TargetMax$ MaxTgts | DividedAsYouChoose$ X | References$ X,Min,MaxTgts | RememberDamaged$ True | SubAbility$ CowedByAurelia | SpellDescription$ CARDNAME deals X damage divided as you choose among any number of target creatures and/or players. Tap each creature dealt damage this way. Players dealt damage this way can't cast noncreature spells this turn. +A:SP$ DealDamage | Cost$ X R W | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to distribute damage to | NumDmg$ X | TargetMin$ Min | TargetMax$ MaxTgts | DividedAsYouChoose$ X | References$ X,Min,MaxTgts | RememberDamaged$ True | SubAbility$ CowedByAurelia | SpellDescription$ CARDNAME deals X damage divided as you choose among any number of any targets. Tap each creature dealt damage this way. Players dealt damage this way can't cast noncreature spells this turn. SVar:CowedByAurelia:DB$ TapAll | ValidCards$ Creature.IsRemembered | SubAbility$ SpellLimitations SVar:SpellLimitations:DB$ Effect | StaticAbilities$ STCantBeCast | RememberObjects$ Player.IsRemembered | SubAbility$ DBCleanup SVar:STCantBeCast:Mode$ CantBeCast | EffectZone$ Command | ValidCard$ Card.nonCreature | Caster$ Player.IsRemembered | Description$ Players damaged by Aurelia's Fury can't cast creature spells this turn. SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:MaxTgts:PlayerCountPlayers$Amount/Plus.NumCreatures SVar:Min:SVar$X/LimitMax.1 -SVar:NumCreatures:Count$Valid Creature +SVar:NumCreatures:Count$Valid Creature,Planeswalker SVar:X:Count$xPaid #X Will get overwritten by Announce SVar:Picture:http://www.wizards.com/global/images/magic/general/aurelias_fury.jpg -Oracle:Aurelia's Fury deals X damage divided as you choose among any number of target creatures and/or players. Tap each creature dealt damage this way. Players dealt damage this way can't cast noncreature spells this turn. +Oracle:Aurelia's Fury deals X damage divided as you choose among any number of targets. Tap each creature dealt damage this way. Players dealt damage this way can't cast noncreature spells this turn. diff --git a/forge-gui/res/cardsfolder/a/aurora_champion.txt b/forge-gui/res/cardsfolder/a/aurora_champion.txt new file mode 100644 index 00000000000..13f0d2ae042 --- /dev/null +++ b/forge-gui/res/cardsfolder/a/aurora_champion.txt @@ -0,0 +1,8 @@ +Name:Aurora Champion +ManaCost:2 W +Types:Creature Elf Warrior +PT:3/2 +T:Mode$ Attacks | ValidCard$ Card.Self | IsPresent$ Warrior.Other+YourTeamCtrl | TriggerZones$ Battlefield | Execute$ TrigTap | TriggerDescription$ Whenever CARDNAME attacks, if your team controls another Warrior, tap target creature. +SVar:TrigTap:DB$ Tap | ValidTgts$ Creature | TgtPrompt$ Select target creature +SVar:BuffedBy:Warrior +Oracle:Whenever Aurora Champion attacks, if your team controls another Warrior, tap target creature. diff --git a/forge-gui/res/cardsfolder/a/aurora_eidolon.txt b/forge-gui/res/cardsfolder/a/aurora_eidolon.txt index b08873c803e..5eb749371b4 100644 --- a/forge-gui/res/cardsfolder/a/aurora_eidolon.txt +++ b/forge-gui/res/cardsfolder/a/aurora_eidolon.txt @@ -2,9 +2,9 @@ Name:Aurora Eidolon ManaCost:3 W Types:Creature Spirit PT:2/2 -A:AB$ PreventDamage | Cost$ W Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 3 | SpellDescription$ Prevent the next 3 damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ W Sac<1/CARDNAME> | ValidTgts$ Creature,Player,PlaneswalkerPlaneswalker | TgtPrompt$ Select any target | Amount$ 3 | SpellDescription$ Prevent the next 3 damage that would be dealt to any target this turn. T:Mode$ SpellCast | ValidCard$ Card.MultiColor | ValidActivatingPlayer$ You | TriggerZones$ Graveyard | OptionalDecider$ You | Execute$ TrigReturn | TriggerDescription$ Whenever you cast a multicolored spell, you may return CARDNAME from your graveyard to your hand. SVar:TrigReturn:DB$ChangeZone | Origin$ Graveyard | Destination$ Hand | Defined$ Self SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/aurora_eidolon.jpg -Oracle:{W}, Sacrifice Aurora Eidolon: Prevent the next 3 damage that would be dealt to target creature or player this turn.\nWhenever you cast a multicolored spell, you may return Aurora Eidolon from your graveyard to your hand. +Oracle:{W}, Sacrifice Aurora Eidolon: Prevent the next 3 damage that would be dealt to any target this turn.\nWhenever you cast a multicolored spell, you may return Aurora Eidolon from your graveyard to your hand. diff --git a/forge-gui/res/cardsfolder/a/autumns_veil.txt b/forge-gui/res/cardsfolder/a/autumns_veil.txt index 29443357f34..4fd77ce1d40 100644 --- a/forge-gui/res/cardsfolder/a/autumns_veil.txt +++ b/forge-gui/res/cardsfolder/a/autumns_veil.txt @@ -1,8 +1,8 @@ Name:Autumn's Veil ManaCost:G Types:Instant -A:SP$ Effect | Cost$ G | Name$ Autumn's Veil Effect | StaticAbilities$ AntiBlueBlack,STCantBeTarget | SpellDescription$ Spells you control can't be countered by blue or black spells this turn, and creatures you control can't be the targets of blue or black spells this turn. -SVar:AntiBlueBlack:Mode$ Continuous | Affected$ Card.YouCtrl | AffectedZone$ Stack | EffectZone$ Command | AddHiddenKeyword$ CARDNAME can't be countered by blue or black spells. | Description$ Spells you control can't be countered by blue or black spells this turn. +A:SP$ Effect | Cost$ G | Name$ Autumn's Veil Effect | StaticAbilities$ AntiMagic,STCantBeTarget | SpellDescription$ Spells you control can't be countered by blue or black spells this turn, and creatures you control can't be the targets of blue or black spells this turn. +SVar:AntiMagic:Mode$ Continuous | Affected$ Card.YouCtrl | AffectedZone$ Stack | EffectZone$ Command | AddHiddenKeyword$ CantBeCounteredBy:Spell.Blue,Spell.Black:CARDNAME can't be countered by blue or black spells. | Description$ Spells you control can't be countered by blue or black spells this turn. SVar:STCantBeTarget:Mode$ CantTarget | ValidCard$ Creature.YouCtrl | ValidSource$ Card.Blue,Card.Black | ValidSA$ Spell | EffectZone$ Command | Description$ Creatures you control can't be the targets of blue or black spells this turn. SVar:RemAIDeck:True SVar:RemRandomDeck:True diff --git a/forge-gui/res/cardsfolder/a/avacyn_guardian_angel.txt b/forge-gui/res/cardsfolder/a/avacyn_guardian_angel.txt index f3ca08a95f0..e050b02148d 100644 --- a/forge-gui/res/cardsfolder/a/avacyn_guardian_angel.txt +++ b/forge-gui/res/cardsfolder/a/avacyn_guardian_angel.txt @@ -7,9 +7,9 @@ K:Vigilance A:AB$ ChooseColor | Cost$ 1 W | Defined$ You | SubAbility$ DBEffect | SpellDescription$ Prevent all damage that would be dealt to another target creature this turn by sources of the color of your choice. SVar:DBEffect:DB$ Effect | ValidTgts$ Creature.Other | TgtPrompt$ Select another target creature | Name$ Avacyn, Guardian Angel Effect 1 | ReplacementEffects$ RPreventCreature | RememberObjects$ Targeted | ForgetOnMoved$ Battlefield SVar:RPreventCreature:Event$ DamageDone | Prevent$ True | ActiveZones$ Command | ValidTarget$ Card.IsRemembered | ValidSource$ Card.ChosenColor | Description$ Prevent all damage that would be dealt to another target creature this turn by sources of the color of your choice. -A:AB$ ChooseColor | Cost$ 5 W W | Defined$ You | SubAbility$ DBEffect2 | SpellDescription$ Prevent all damage that would be dealt to target player this turn by sources of the color of your choice. -SVar:DBEffect2:DB$ Effect | ValidTgts$ Player | Name$ Avacyn, Guardian Angel Effect 2 | ReplacementEffects$ RPreventPlayer | AILogic$ Fog | RememberObjects$ Targeted -SVar:RPreventPlayer:Event$ DamageDone | Prevent$ True | ActiveZones$ Command | ValidTarget$ Player.IsRemembered | ValidSource$ Card.ChosenColor | Description$ Prevent all damage that would be dealt to target player this turn by sources of the color of your choice. +A:AB$ ChooseColor | Cost$ 5 W W | Defined$ You | SubAbility$ DBEffect2 | SpellDescription$ Prevent all damage that would be dealt to target player or planeswalker this turn by sources of the color of your choice. +SVar:DBEffect2:DB$ Effect | ValidTgts$ Player,Planeswalker | Name$ Avacyn, Guardian Angel Effect 2 | ReplacementEffects$ RPreventPlayer | AILogic$ Fog | RememberObjects$ Targeted +SVar:RPreventPlayer:Event$ DamageDone | Prevent$ True | ActiveZones$ Command | ValidTarget$ Player.IsRemembered,Planeswalker.IsRemembered | ValidSource$ Card.ChosenColor | Description$ Prevent all damage that would be dealt to target player or planeswalker this turn by sources of the color of your choice. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/avacyn_guardian_angel.jpg -Oracle:Flying, vigilance\n{1}{W}: Prevent all damage that would be dealt to another target creature this turn by sources of the color of your choice.\n{5}{W}{W}: Prevent all damage that would be dealt to target player this turn by sources of the color of your choice. +Oracle:Flying, vigilance\n{1}{W}: Prevent all damage that would be dealt to another target creature this turn by sources of the color of your choice.\n{5}{W}{W}: Prevent all damage that would be dealt to target player or planeswalker this turn by sources of the color of your choice. diff --git a/forge-gui/res/cardsfolder/a/avacyns_judgment.txt b/forge-gui/res/cardsfolder/a/avacyns_judgment.txt index 73cf4217b9e..07ae3d4b375 100644 --- a/forge-gui/res/cardsfolder/a/avacyns_judgment.txt +++ b/forge-gui/res/cardsfolder/a/avacyns_judgment.txt @@ -2,12 +2,12 @@ Name:Avacyn's Judgment ManaCost:1 R Types:Sorcery K:Madness:X R -A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature and/or player to distribute damage to | NumDmg$ Y | TargetMin$ 1 | TargetMax$ MaxTgts | DividedAsYouChoose$ Y | References$ X,Y,MaxTgts | SpellDescription$ CARDNAME deals 2 damage divided as you choose among any number of target creatures and/or players. If CARDNAME's madness cost was paid, it deals X damage divided as you choose among those creatures and/or players instead. +A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to distribute damage to | NumDmg$ Y | TargetMin$ 1 | TargetMax$ MaxTgts | DividedAsYouChoose$ Y | References$ X,Y,MaxTgts | SpellDescription$ CARDNAME deals 2 damage divided as you choose among any number of targets. If CARDNAME's madness cost was paid, it deals X damage divided as you choose among those permanents and/or players instead. SVar:MaxTgts:PlayerCountPlayers$Amount/Plus.NumCreatures -SVar:NumCreatures:Count$Valid Creature +SVar:NumCreatures:Count$Valid Creature,Planeswalker SVar:Y:Count$Madness.X.2 SVar:X:Count$xPaid #X Will get overwritten by Announce DeckHints:Ability$Discard SVar:Picture:http://www.wizards.com/global/images/magic/general/avacyn's_judgment.jpg -Oracle:Madness {X}{R} (If you discard this card, discard it into exile. When you do, cast it for its madness cost or put it into your graveyard.)\nAvacyn's Judgment deals 2 damage divided as you choose among any number of target creatures and/or players. If Avacyn's Judgment's madness cost was paid, it deals X damage divided as you choose among those creatures and/or players instead. +Oracle:Madness {X}{R} (If you discard this card, discard it into exile. When you do, cast it for its madness cost or put it into your graveyard.)\nAvacyn's Judgment deals 2 damage divided as you choose among any number of targets. If Avacyn's Judgment's madness cost was paid, it deals X damage divided as you choose among those permanents and/or players instead. diff --git a/forge-gui/res/cardsfolder/a/avatar_of_discord.txt b/forge-gui/res/cardsfolder/a/avatar_of_discord.txt index a37b48c62b8..29f5f6abf3c 100644 --- a/forge-gui/res/cardsfolder/a/avatar_of_discord.txt +++ b/forge-gui/res/cardsfolder/a/avatar_of_discord.txt @@ -8,4 +8,4 @@ SVar:DBSacSelf:DB$ Sacrifice | Defined$ Self | UnlessCost$ Discard<2/Card> | Unl SVar:NeedsToPlayVar:Y GE3 SVar:Y:Count$InYourHand SVar:Picture:http://www.wizards.com/global/images/magic/general/avatar_of_discord.jpg -Oracle:Flying\nWhen Avatar of Discord enters the battlefield, sacrifice it unless you discard two cards. +Oracle:({B/R} can be paid with either {B} or {R}.)\nFlying\nWhen Avatar of Discord enters the battlefield, sacrifice it unless you discard two cards. diff --git a/forge-gui/res/cardsfolder/a/avatar_of_fury.txt b/forge-gui/res/cardsfolder/a/avatar_of_fury.txt index 7c68cf6afc2..032c124ff6f 100644 --- a/forge-gui/res/cardsfolder/a/avatar_of_fury.txt +++ b/forge-gui/res/cardsfolder/a/avatar_of_fury.txt @@ -7,4 +7,4 @@ A:AB$ Pump | Cost$ R | NumAtt$ 1 | SpellDescription$ CARDNAME gets +1/+0 until e S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 6 | EffectZone$ All | CheckSVar$ X | SVarCompare$ GE7 | Description$ If an opponent controls seven or more lands, CARDNAME costs {6} less to cast. SVar:X:PlayerCountOpponents$HighestValid Land.YouCtrl SVar:Picture:http://www.wizards.com/global/images/magic/general/avatar_of_fury.jpg -Oracle:If an opponent controls seven or more lands, Avatar of Fury costs {6} less to cast.\nFlying\n{R}: Avatar of Fury gets +1/+0 until end of turn. +Oracle:If an opponent controls seven or more lands, this spell costs {6} less to cast.\nFlying\n{R}: Avatar of Fury gets +1/+0 until end of turn. diff --git a/forge-gui/res/cardsfolder/a/avatar_of_hope.txt b/forge-gui/res/cardsfolder/a/avatar_of_hope.txt index ad8a5b7200e..9c647850ee1 100644 --- a/forge-gui/res/cardsfolder/a/avatar_of_hope.txt +++ b/forge-gui/res/cardsfolder/a/avatar_of_hope.txt @@ -7,4 +7,4 @@ K:Flying K:CARDNAME can block any number of creatures. SVar:NeedHope:Count$YourLifeTotal SVar:Picture:http://www.wizards.com/global/images/magic/general/avatar_of_hope.jpg -Oracle:If you have 3 or less life, Avatar of Hope costs {6} less to cast.\nFlying\nAvatar of Hope can block any number of creatures. +Oracle:If you have 3 or less life, this spell costs {6} less to cast.\nFlying\nAvatar of Hope can block any number of creatures. diff --git a/forge-gui/res/cardsfolder/a/avatar_of_might.txt b/forge-gui/res/cardsfolder/a/avatar_of_might.txt index 1c8bab633af..6f03fc9dd44 100644 --- a/forge-gui/res/cardsfolder/a/avatar_of_might.txt +++ b/forge-gui/res/cardsfolder/a/avatar_of_might.txt @@ -7,4 +7,4 @@ S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 6 | EffectZone SVar:X:Count$Valid Creature.YouCtrl/Plus.4 SVar:Y:PlayerCountOpponents$HighestValid Creature.YouCtrl SVar:Picture:http://www.wizards.com/global/images/magic/general/avatar_of_might.jpg -Oracle:If an opponent controls at least four more creatures than you, Avatar of Might costs {6} less to cast.\nTrample +Oracle:If an opponent controls at least four more creatures than you, this spell costs {6} less to cast.\nTrample (This creature can deal excess combat damage to the player or planeswalker it's attacking.) diff --git a/forge-gui/res/cardsfolder/a/avatar_of_will.txt b/forge-gui/res/cardsfolder/a/avatar_of_will.txt index 819415d6477..9d490624fab 100644 --- a/forge-gui/res/cardsfolder/a/avatar_of_will.txt +++ b/forge-gui/res/cardsfolder/a/avatar_of_will.txt @@ -6,4 +6,4 @@ K:Flying S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 6 | EffectZone$ All | CheckSVar$ X | SVarCompare$ EQ0 | Description$ If an opponent has no cards in hand, CARDNAME costs {6} less to cast. SVar:X:PlayerCountOpponents$LowestCardsInHand SVar:Picture:http://www.wizards.com/global/images/magic/general/avatar_of_will.jpg -Oracle:If an opponent has no cards in hand, Avatar of Will costs {6} less to cast.\nFlying +Oracle:If an opponent has no cards in hand, this spell costs {6} less to cast.\nFlying diff --git a/forge-gui/res/cardsfolder/a/avatar_of_woe.txt b/forge-gui/res/cardsfolder/a/avatar_of_woe.txt index 1baf9646c7e..7221572a0a5 100644 --- a/forge-gui/res/cardsfolder/a/avatar_of_woe.txt +++ b/forge-gui/res/cardsfolder/a/avatar_of_woe.txt @@ -7,4 +7,4 @@ A:AB$ Destroy | Cost$ T | ValidTgts$ Creature | TgtPrompt$ Select target creatur S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 6 | EffectZone$ All | CheckSVar$ X | SVarCompare$ GT9 | Description$ If there are ten or more creature cards total in all graveyards, CARDNAME costs {6} less to cast. SVar:X:Count$TypeInAllYards.Creature SVar:Picture:http://www.wizards.com/global/images/magic/general/avatar_of_woe.jpg -Oracle:If there are ten or more creature cards total in all graveyards, Avatar of Woe costs {6} less to cast.\nFear (This creature can't be blocked except by artifact creatures and/or black creatures.)\n{T}: Destroy target creature. It can't be regenerated. +Oracle:If there are ten or more creature cards total in all graveyards, this spell costs {6} less to cast.\nFear (This creature can't be blocked except by artifact creatures and/or black creatures.)\n{T}: Destroy target creature. It can't be regenerated. diff --git a/forge-gui/res/cardsfolder/a/aven_cloudchaser.txt b/forge-gui/res/cardsfolder/a/aven_cloudchaser.txt index ada8a0c3e38..3b6a152960b 100644 --- a/forge-gui/res/cardsfolder/a/aven_cloudchaser.txt +++ b/forge-gui/res/cardsfolder/a/aven_cloudchaser.txt @@ -6,4 +6,4 @@ K:Flying T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDestroy | TriggerDescription$ When CARDNAME enters the battlefield, destroy target enchantment. SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Enchantment | TgtPrompt$ Select target enchantment. SVar:Picture:http://www.wizards.com/global/images/magic/general/aven_cloudchaser.jpg -Oracle:Flying\nWhen Aven Cloudchaser enters the battlefield, destroy target enchantment. +Oracle:Flying (This creature can't be blocked except by creatures with flying or reach.)\nWhen Aven Cloudchaser enters the battlefield, destroy target enchantment. diff --git a/forge-gui/res/cardsfolder/a/aven_fisher.txt b/forge-gui/res/cardsfolder/a/aven_fisher.txt index 191767a8c49..daecdf2217a 100644 --- a/forge-gui/res/cardsfolder/a/aven_fisher.txt +++ b/forge-gui/res/cardsfolder/a/aven_fisher.txt @@ -7,4 +7,4 @@ T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ SVar:TrigDraw:DB$Draw | Defined$ You | NumCards$ 1 SVar:SacMe:1 SVar:Picture:http://resources.wizards.com/magic/cards/9ed/en-us/card82998.jpg -Oracle:Flying\nWhen Aven Fisher dies, you may draw a card. +Oracle:Flying (This creature can't be blocked except by creatures with flying or reach.)\nWhen Aven Fisher dies, you may draw a card. diff --git a/forge-gui/res/cardsfolder/a/aven_flock.txt b/forge-gui/res/cardsfolder/a/aven_flock.txt index 0431727aaae..473deb26788 100644 --- a/forge-gui/res/cardsfolder/a/aven_flock.txt +++ b/forge-gui/res/cardsfolder/a/aven_flock.txt @@ -5,4 +5,4 @@ PT:2/3 K:Flying A:AB$ Pump | Cost$ W | NumDef$ +1 | SpellDescription$ CARDNAME gets +0/+1 until end of turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/aven_flock.jpg -Oracle:Flying\n{W}: Aven Flock gets +0/+1 until end of turn. +Oracle:Flying (This creature can't be blocked except by creatures with flying or reach.)\n{W}: Aven Flock gets +0/+1 until end of turn. diff --git a/forge-gui/res/cardsfolder/a/aven_redeemer.txt b/forge-gui/res/cardsfolder/a/aven_redeemer.txt index 0c111094432..116ca6035cf 100644 --- a/forge-gui/res/cardsfolder/a/aven_redeemer.txt +++ b/forge-gui/res/cardsfolder/a/aven_redeemer.txt @@ -3,6 +3,6 @@ ManaCost:3 W Types:Creature Bird Cleric PT:2/2 K:Flying -A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 2 | SpellDescription$ Prevent the next 2 damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 2 | SpellDescription$ Prevent the next 2 damage that would be dealt to any target this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/aven_redeemer.jpg -Oracle:Flying\n{T}: Prevent the next 2 damage that would be dealt to target creature or player this turn. +Oracle:Flying\n{T}: Prevent the next 2 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/a/aven_wind_mage.txt b/forge-gui/res/cardsfolder/a/aven_wind_mage.txt new file mode 100644 index 00000000000..772de7e0d2e --- /dev/null +++ b/forge-gui/res/cardsfolder/a/aven_wind_mage.txt @@ -0,0 +1,9 @@ +Name:Aven Wind Mage +ManaCost:2 U +Types:Creature Bird Wizard +K:Flying +T:Mode$ SpellCast | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever you cast an instant or sorcery spell, CARDNAME gets +1/+1 until end of turn. +SVar:TrigPump:DB$ Pump | ValidCard$ Card.Self | NumAtt$ 1 | NumDef$ 1 +DeckHints:Type$Instant|Sorcery +Oracle:Flying\nWhenever you cast an instant or sorcery spell, Aven Wind Mage gets +1/+1 until end of turn. +PT:2/2 diff --git a/forge-gui/res/cardsfolder/a/aven_windreader.txt b/forge-gui/res/cardsfolder/a/aven_windreader.txt index 55bba98c603..00bf0efe63f 100644 --- a/forge-gui/res/cardsfolder/a/aven_windreader.txt +++ b/forge-gui/res/cardsfolder/a/aven_windreader.txt @@ -6,4 +6,4 @@ K:Flying A:AB$ Dig | Cost$ 1 U | DigNum$ 1 | ValidTgts$ Player | TgtPrompt$ Select target player | Reveal$ True | NoMove$ True | SpellDescription$ Target player reveals the top card of their library. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/aven_windreader.jpg -Oracle:Flying\n{1}{U}: Target player reveals the top card of their library. +Oracle:Flying (This creature can't be blocked except by creatures with flying or reach.)\n{1}{U}: Target player reveals the top card of their library. diff --git a/forge-gui/res/cardsfolder/a/aviation_pioneer.txt b/forge-gui/res/cardsfolder/a/aviation_pioneer.txt new file mode 100644 index 00000000000..1b4d94fdd32 --- /dev/null +++ b/forge-gui/res/cardsfolder/a/aviation_pioneer.txt @@ -0,0 +1,8 @@ +Name:Aviation Pioneer +ManaCost:2 U +Types:Creature Human Artificer +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, create a 1/1 colorless Thopter artifact creature token with flying. +SVar:TrigToken:DB$ Token | TokenOwner$ You | TokenAmount$ 1 | TokenPower$ 1 | TokenToughness$ 1 | TokenColors$ Colorless | TokenName$ Thopter | TokenTypes$ Thopter,Artifact,Creature | TokenKeywords$ Flying | TokenImage$ c 1 1 thopter m19 +DeckHas:Ability$Token +Oracle:When Aviation Pioneer enters the battlefield, create a 1/1 colorless Thopter artifact creature token with flying. +PT:1/2 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/axelrod_gunnarson.txt b/forge-gui/res/cardsfolder/a/axelrod_gunnarson.txt index d6c3a490739..c6a3e3479fd 100644 --- a/forge-gui/res/cardsfolder/a/axelrod_gunnarson.txt +++ b/forge-gui/res/cardsfolder/a/axelrod_gunnarson.txt @@ -3,8 +3,8 @@ ManaCost:4 B B R R Types:Legendary Creature Giant PT:5/5 K:Trample -T:Mode$ ChangesZone | Origin$ Any | Destination$ Graveyard | ValidCard$ Creature.DamagedBy | Execute$ TrigDealDamage | TriggerDescription$ Whenever a creature dealt damage by CARDNAME this turn dies, you gain 1 life and CARDNAME deals 1 damage to target player. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 1 | SubAbility$ DBGainLife -SVar:DBGainLife:DB$GainLife | Defined$ You | LifeAmount$ 1 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Graveyard | ValidCard$ Creature.DamagedBy | Execute$ DBGainLife | TriggerDescription$ Whenever a creature dealt damage by CARDNAME this turn dies, you gain 1 life and CARDNAME deals 1 damage to target player or planeswalker. +SVar:DBGainLife:DB$GainLife | Defined$ You | LifeAmount$ 1 | SubAbility$ DBDealDamage +SVar:DBDealDamage:DB$DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/axelrod_gunnarson.jpg -Oracle:Trample\nWhenever a creature dealt damage by Axelrod Gunnarson this turn dies, you gain 1 life and Axelrod deals 1 damage to target player. +Oracle:Trample\nWhenever a creature dealt damage by Axelrod Gunnarson this turn dies, you gain 1 life and Axelrod deals 1 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/a/ayli_eternal_pilgrim.txt b/forge-gui/res/cardsfolder/a/ayli_eternal_pilgrim.txt index f8010f551be..3b81a446e3c 100644 --- a/forge-gui/res/cardsfolder/a/ayli_eternal_pilgrim.txt +++ b/forge-gui/res/cardsfolder/a/ayli_eternal_pilgrim.txt @@ -4,9 +4,9 @@ Types:Legendary Creature Kor Cleric PT:2/3 K:Deathtouch A:AB$ GainLife | Cost$ 1 Sac<1/Creature.Other/another creature> | Defined$ You | LifeAmount$ Toughness | References$ Toughness | SpellDescription$ You gain life equal to the sacrificed creature's toughness. -A:AB$ ChangeZone | Cost$ 1 W B Sac<1/Creature.Other/another creature> | CheckSVar$ X | SVarCompare$ GEY | References$ X,Y | ValidTgts$ Permanent.nonLand | TgtPrompt$ Select target nonland permanent | Origin$ Battlefield | Destination$ Exile | SpellDescription$ Exile target nonland permanent. Activate this ability only if you have at least 10 more life than your starting life total. +A:AB$ ChangeZone | Cost$ 1 W B Sac<1/Creature.Other/another creature> | CheckSVar$ X | SVarCompare$ GEY | References$ X,Y | ValidTgts$ Permanent.nonLand | TgtPrompt$ Select target nonland permanent | Origin$ Battlefield | Destination$ Exile | SpellDescription$ Exile target nonland permanent. Activate this ability only if you have at least 10 life more than your starting life total. SVar:Toughness:Sacrificed$CardToughness SVar:X:Count$YourLifeTotal SVar:Y:Count$YourStartingLife/Plus.10 SVar:Picture:http://www.wizards.com/global/images/magic/general/ayli_eternal_pilgrim.jpg -Oracle:Deathtouch\n{1}, Sacrifice another creature: You gain life equal to the sacrificed creature's toughness.\n{1}{W}{B}, Sacrifice another creature: Exile target nonland permanent. Activate this ability only if you have at least 10 more life than your starting life total. \ No newline at end of file +Oracle:Deathtouch\n{1}, Sacrifice another creature: You gain life equal to the sacrificed creature's toughness.\n{1}{W}{B}, Sacrifice another creature: Exile target nonland permanent. Activate this ability only if you have at least 10 life more than your starting life total. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/a/aysen_highway.txt b/forge-gui/res/cardsfolder/a/aysen_highway.txt index ecbb18a180f..e751567b76c 100644 --- a/forge-gui/res/cardsfolder/a/aysen_highway.txt +++ b/forge-gui/res/cardsfolder/a/aysen_highway.txt @@ -5,4 +5,4 @@ S:Mode$ Continuous | Affected$ Creature.White | AddKeyword$ Plainswalk | Descrip SVar:NonStackingEffect:True SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/aysen_highway.jpg -Oracle:White creatures have plainswalk. +Oracle:White creatures have plainswalk. (They can't be blocked as long as defending player controls a Plains.) diff --git a/forge-gui/res/cardsfolder/a/ayumi_the_last_visitor.txt b/forge-gui/res/cardsfolder/a/ayumi_the_last_visitor.txt index 1aaa0d8bc0d..99086a78bb4 100644 --- a/forge-gui/res/cardsfolder/a/ayumi_the_last_visitor.txt +++ b/forge-gui/res/cardsfolder/a/ayumi_the_last_visitor.txt @@ -4,4 +4,4 @@ Types:Legendary Creature Spirit PT:7/3 K:Legendary landwalk SVar:Picture:http://www.wizards.com/global/images/magic/general/ayumi_the_last_visitor.jpg -Oracle:Legendary landwalk +Oracle:Legendary landwalk (This creature can't be blocked as long as defending player controls a legendary land.) diff --git a/forge-gui/res/cardsfolder/a/azorius_ploy.txt b/forge-gui/res/cardsfolder/a/azorius_ploy.txt index 1beb28cadc7..657e97fe6e4 100644 --- a/forge-gui/res/cardsfolder/a/azorius_ploy.txt +++ b/forge-gui/res/cardsfolder/a/azorius_ploy.txt @@ -5,4 +5,4 @@ A:SP$ Pump | Cost$ 1 W W U | ValidTgts$ Creature | TgtPrompt$ Select target crea SVar:DBPump:DB$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature that will have all damage dealt to it prevented | KW$ Prevent all combat damage that would be dealt to CARDNAME. | SpellDescription$ Prevent all combat damage that would be dealt to target creature this turn. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/azorius_ploy.jpg -Oracle:Prevent all combat damage target creature would deal this turn.\nPrevent all combat damage that would be dealt to target creature this turn. \ No newline at end of file +Oracle:Prevent all combat damage target creature would deal this turn.\nPrevent all combat damage that would be dealt to target creature this turn. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/b/balduvian_war_makers.txt b/forge-gui/res/cardsfolder/b/balduvian_war_makers.txt index 9a479a2b902..4bc08a714f8 100644 --- a/forge-gui/res/cardsfolder/b/balduvian_war_makers.txt +++ b/forge-gui/res/cardsfolder/b/balduvian_war_makers.txt @@ -3,6 +3,6 @@ ManaCost:4 R Types:Creature Human Barbarian PT:3/3 K:Haste -K:Rampage 1 +K:Rampage:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/balduvian_war_makers.jpg Oracle:Haste\nRampage 1 (Whenever this creature becomes blocked, it gets +1/+1 until end of turn for each creature blocking it beyond the first.) diff --git a/forge-gui/res/cardsfolder/b/balefire_liege.txt b/forge-gui/res/cardsfolder/b/balefire_liege.txt index 571c22213e9..49f684db02f 100644 --- a/forge-gui/res/cardsfolder/b/balefire_liege.txt +++ b/forge-gui/res/cardsfolder/b/balefire_liege.txt @@ -4,11 +4,11 @@ Types:Creature Spirit Horror PT:2/4 S:Mode$ Continuous | Affected$ Creature.Red+Other+YouCtrl | AddPower$ 1 | AddToughness$ 1 | Description$ Other red creatures you control get +1/+1. S:Mode$ Continuous | Affected$ Creature.White+Other+YouCtrl | AddPower$ 1 | AddToughness$ 1 | Description$ Other white creatures you control get +1/+1. -T:Mode$ SpellCast | ValidCard$ Card.Red | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever you cast a red spell, CARDNAME deals 3 damage to target player. +T:Mode$ SpellCast | ValidCard$ Card.Red | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever you cast a red spell, CARDNAME deals 3 damage to target player or planeswalker. T:Mode$ SpellCast | ValidCard$ Card.White | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigGainLife | TriggerDescription$ Whenever you cast a white spell, you gain 3 life. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 3 +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 3 SVar:TrigGainLife:DB$GainLife | Defined$ You | LifeAmount$ 3 SVar:PlayMain1:TRUE SVar:BuffedBy:Card.Red,Card.White SVar:Picture:http://www.wizards.com/global/images/magic/general/balefire_liege.jpg -Oracle:Other red creatures you control get +1/+1.\nOther white creatures you control get +1/+1.\nWhenever you cast a red spell, Balefire Liege deals 3 damage to target player.\nWhenever you cast a white spell, you gain 3 life. +Oracle:Other red creatures you control get +1/+1.\nOther white creatures you control get +1/+1.\nWhenever you cast a red spell, Balefire Liege deals 3 damage to target player or planeswalker.\nWhenever you cast a white spell, you gain 3 life. diff --git a/forge-gui/res/cardsfolder/b/ball_lightning.txt b/forge-gui/res/cardsfolder/b/ball_lightning.txt index 5a371a5d4b9..4d3fe82b4ad 100644 --- a/forge-gui/res/cardsfolder/b/ball_lightning.txt +++ b/forge-gui/res/cardsfolder/b/ball_lightning.txt @@ -9,4 +9,4 @@ SVar:TrigSac:DB$ Sacrifice | SacValid$ Self SVar:EndOfTurnLeavePlay:True SVar:PlayMain1:TRUE SVar:Picture:http://resources.wizards.com/magic/cards/5e/en-us/card4031.jpg -Oracle:Trample, haste\nAt the beginning of the end step, sacrifice Ball Lightning. \ No newline at end of file +Oracle:Trample (This creature can deal excess combat damage to the player or planeswalker it's attacking.)\nHaste (This creature can attack and {T} as soon as it comes under your control.)\nAt the beginning of the end step, sacrifice Ball Lightning. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/b/ballista_charger.txt b/forge-gui/res/cardsfolder/b/ballista_charger.txt index bbb95150ce4..0c5e2a8db99 100644 --- a/forge-gui/res/cardsfolder/b/ballista_charger.txt +++ b/forge-gui/res/cardsfolder/b/ballista_charger.txt @@ -2,8 +2,8 @@ Name:Ballista Charger ManaCost:5 Types:Artifact Vehicle PT:6/6 -T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDmg | TriggerDescription$ Whenever CARDNAME attacks, it deals 1 damage to target creature or player. -SVar:TrigDmg:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to damage | NumDmg$ 1 +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDmg | TriggerDescription$ Whenever CARDNAME attacks, it deals 1 damage to any target. +SVar:TrigDmg:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to damage | NumDmg$ 1 K:Crew:3 SVar:Picture:http://www.wizards.com/global/images/magic/general/ballista_charger.jpg -Oracle:Whenever Ballista Charger attacks, it deals 1 damage to target creature or player.\nCrew 3 (Tap any number of creatures you control with total power 3 or more: This Vehicle becomes an artifact creature until end of turn.) +Oracle:Whenever Ballista Charger attacks, it deals 1 damage to any target.\nCrew 3 (Tap any number of creatures you control with total power 3 or more: This Vehicle becomes an artifact creature until end of turn.) diff --git a/forge-gui/res/cardsfolder/b/balm_of_restoration.txt b/forge-gui/res/cardsfolder/b/balm_of_restoration.txt index 6a5de1dcb0d..66ceb1771f1 100644 --- a/forge-gui/res/cardsfolder/b/balm_of_restoration.txt +++ b/forge-gui/res/cardsfolder/b/balm_of_restoration.txt @@ -3,7 +3,7 @@ ManaCost:2 Types:Artifact A:AB$ Charm | Cost$ 1 T Sac<1/CARDNAME> | Choices$ DBGainLife,DBPrevent | Defined$ You SVar:DBGainLife:DB$ GainLife | LifeAmount$ 2 | Defined$ You | SpellDescription$ You gain 2 life. -SVar:DBPrevent:DB$ PreventDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 2 | SpellDescription$ Prevent the next 2 damage that would be dealt to target creature or player this turn. +SVar:DBPrevent:DB$ PreventDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 2 | SpellDescription$ Prevent the next 2 damage that would be dealt to any target this turn. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/balm_of_restoration.jpg -Oracle:{1}, {T}, Sacrifice Balm of Restoration: Choose one — \n• You gain 2 life.\n• Prevent the next 2 damage that would be dealt to target creature or player this turn. +Oracle:{1}, {T}, Sacrifice Balm of Restoration: Choose one —\n• You gain 2 life.\n• Prevent the next 2 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/b/baloth_gorger.txt b/forge-gui/res/cardsfolder/b/baloth_gorger.txt index 82469076f26..2eebb26b600 100644 --- a/forge-gui/res/cardsfolder/b/baloth_gorger.txt +++ b/forge-gui/res/cardsfolder/b/baloth_gorger.txt @@ -5,4 +5,4 @@ PT:4/4 K:Kicker:4 K:etbCounter:P1P1:3:CheckSVar$ WasKicked:If CARDNAME was kicked, it enters the battlefield with three +1/+1 counters on it. SVar:WasKicked:Count$Kicked.1.0 -Oracle:Kicker {4} (You may pay an additional {4} as you cast this spell.)\nIf Baloth Gorger was kicked, it enters the battlefield with three +1/+1 counters on it. +Oracle:Kicker {4} (You may pay an additional {4} as you cast this spell.)\nIf Baloth Gorger was kicked, it enters the battlefield with three +1/+1 counters on it. diff --git a/forge-gui/res/cardsfolder/b/bandage.txt b/forge-gui/res/cardsfolder/b/bandage.txt index f33a9501538..31f9dd75ad2 100644 --- a/forge-gui/res/cardsfolder/b/bandage.txt +++ b/forge-gui/res/cardsfolder/b/bandage.txt @@ -1,7 +1,7 @@ Name:Bandage ManaCost:W Types:Instant -A:SP$ PreventDamage | Cost$ W | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 1 | SubAbility$ DBDraw | SpellDescription$ Prevent the next 1 damage that would be dealt to target creature or player this turn. Draw a card. +A:SP$ PreventDamage | Cost$ W | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 1 | SubAbility$ DBDraw | SpellDescription$ Prevent the next 1 damage that would be dealt to any target this turn. Draw a card. SVar:DBDraw:DB$Draw | NumCards$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/bandage.jpg -Oracle:Prevent the next 1 damage that would be dealt to target creature or player this turn.\nDraw a card. +Oracle:Prevent the next 1 damage that would be dealt to any target this turn.\nDraw a card. diff --git a/forge-gui/res/cardsfolder/b/banefire.txt b/forge-gui/res/cardsfolder/b/banefire.txt index 2efcc3da3d7..6a68fae47c0 100644 --- a/forge-gui/res/cardsfolder/b/banefire.txt +++ b/forge-gui/res/cardsfolder/b/banefire.txt @@ -1,9 +1,9 @@ Name:Banefire ManaCost:X R Types:Sorcery -A:SP$ DealDamage | Cost$ X R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | ConditionCheckSVar$ X | ConditionSVarCompare$ LT5 | SubAbility$ BanefulDmg | References$ X | SpellDescription$ CARDNAME deals X damage to target creature or player. -SVar:BanefulDmg:DB$ DealDamage | Defined$ Targeted | NumDmg$ X | NoPrevention$ True | ConditionCheckSVar$ X | ConditionSVarCompare$ GE5 | References$ X +A:SP$ DealDamage | Cost$ X R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | ConditionCheckSVar$ X | ConditionSVarCompare$ LT5 | SubAbility$ BanefulDmg | References$ X | SpellDescription$ CARDNAME deals X damage to any target. +SVar:BanefulDmg:DB$ DealDamage | Defined$ Targeted | NumDmg$ X | NoPrevention$ True | ConditionCheckSVar$ X | ConditionSVarCompare$ GE5 | References$ X | StackDescription$ If X is 5 or more, CARDNAME can't be countered by spells or abilities and the damage can't be prevented. S:Mode$ Continuous | Affected$ Self | AffectedZone$ Stack | EffectZone$ All | CharacteristicDefining$ True | AddHiddenKeyword$ CARDNAME can't be countered. | CheckSVar$ X | SVarCompare$ GE5 | Description$ If X is 5 or more, CARDNAME can't be countered by spells or abilities and the damage can't be prevented. SVar:X:Count$xPaid SVar:Picture:http://www.wizards.com/global/images/magic/general/banefire.jpg -Oracle:Banefire deals X damage to target creature or player.\nIf X is 5 or more, Banefire can't be countered by spells or abilities and the damage can't be prevented. +Oracle:Banefire deals X damage to any target.\nIf X is 5 or more, this spell can't be countered and the damage can't be prevented. diff --git a/forge-gui/res/cardsfolder/b/baneful_omen.txt b/forge-gui/res/cardsfolder/b/baneful_omen.txt index 7449ef791eb..c69d7411a34 100644 --- a/forge-gui/res/cardsfolder/b/baneful_omen.txt +++ b/forge-gui/res/cardsfolder/b/baneful_omen.txt @@ -7,4 +7,4 @@ SVar:DBLose:DB$ LoseLife | LifeAmount$ X | Defined$ Player.Opponent | SubAbility SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Remembered$CardManaCost SVar:Picture:http://www.wizards.com/global/images/magic/general/baneful_omen.jpg -Oracle:At the beginning of your end step, you may reveal the top card of your library. If you do, each opponent loses life equal to that card's converted mana cost. \ No newline at end of file +Oracle:At the beginning of your end step, you may reveal the top card of your library. If you do, each opponent loses life equal to that card's converted mana cost. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/b/banshee.txt b/forge-gui/res/cardsfolder/b/banshee.txt index 8e04eee7be8..3217cc948dd 100644 --- a/forge-gui/res/cardsfolder/b/banshee.txt +++ b/forge-gui/res/cardsfolder/b/banshee.txt @@ -2,11 +2,11 @@ Name:Banshee ManaCost:2 B B Types:Creature Spirit PT:0/1 -A:AB$ DealDamage | Cost$ X T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ HalfXDown | SubAbility$ DBDamage | References$ X,HalfXDown | SpellDescription$ CARDNAME deals half X damage, rounded down, to target creature or player, and half X damage, rounded up, to you. +A:AB$ DealDamage | Cost$ X T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ HalfXDown | SubAbility$ DBDamage | References$ X,HalfXDown | SpellDescription$ CARDNAME deals half X damage, rounded down, to any target, and half X damage, rounded up, to you. SVar:DBDamage:DB$ DealDamage | Defined$ You | NumDmg$ HalfXUp | References$ HalfXUp SVar:X:Count$xPaid SVar:HalfXDown:Count$xPaid/HalfDown SVar:HalfXUp:Count$xPaid/HalfUp SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/banshee.jpg -Oracle:{X}, {T}: Banshee deals half X damage, rounded down, to target creature or player, and half X damage, rounded up, to you. +Oracle:{X}, {T}: Banshee deals half X damage, rounded down, to any target, and half X damage, rounded up, to you. diff --git a/forge-gui/res/cardsfolder/b/banshees_blade.txt b/forge-gui/res/cardsfolder/b/banshees_blade.txt index 9a1c05b919f..b5115027707 100644 --- a/forge-gui/res/cardsfolder/b/banshees_blade.txt +++ b/forge-gui/res/cardsfolder/b/banshees_blade.txt @@ -7,4 +7,4 @@ T:Mode$ DamageDealtOnce | CombatDamage$ True | ValidSource$ Creature.EquippedBy SVar:TrigPutCounter:DB$PutCounter | CounterType$ CHARGE | CounterNum$ 1 SVar:X:Count$CardCounters.CHARGE SVar:Picture:http://www.wizards.com/global/images/magic/general/banshees_blade.jpg -Oracle:Equipped creature gets +1/+1 for each charge counter on Banshee's Blade.\nWhenever equipped creature deals combat damage, put a charge counter on Banshee's Blade.\nEquip {2} ({2}: Attach to target creature you control. Equip only as a sorcery.) +Oracle:Equipped creature gets +1/+1 for each charge counter on Banshee's Blade.\nWhenever equipped creature deals combat damage, put a charge counter on Banshee's Blade.\nEquip {2} ({2}: Attach to target creature you control. Equip only as a sorcery. This card enters the battlefield unattached and stays on the battlefield if the creature leaves.) diff --git a/forge-gui/res/cardsfolder/b/bant_sojourners.txt b/forge-gui/res/cardsfolder/b/bant_sojourners.txt index ae609278944..209a9dc9855 100644 --- a/forge-gui/res/cardsfolder/b/bant_sojourners.txt +++ b/forge-gui/res/cardsfolder/b/bant_sojourners.txt @@ -3,8 +3,8 @@ ManaCost:1 G W U Types:Creature Human Soldier PT:2/4 K:Cycling:2 W -T:Mode$ Cycled | ValidCard$ Card.Self | Execute$ TrigToken | OptionalDecider$ You | TriggerDescription$ When you cycle CARDNAME or it's dies, you may create a 1/1 white Soldier creature token. -T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigToken | OptionalDecider$ You | Secondary$ True | TriggerDescription$ When you cycle CARDNAME or it's dies, you may create a 1/1 white Soldier creature token. +T:Mode$ Cycled | ValidCard$ Card.Self | Execute$ TrigToken | OptionalDecider$ You | TriggerDescription$ When you cycle CARDNAME or it dies, you may create a 1/1 white Soldier creature token. +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigToken | OptionalDecider$ You | Secondary$ True | TriggerDescription$ When you cycle CARDNAME or it dies, you may create a 1/1 white Soldier creature token. SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenName$ Soldier | TokenTypes$ Creature,Soldier | TokenOwner$ You | TokenColors$ White | TokenPower$ 1 | TokenToughness$ 1 | TokenImage$ w 1 1 soldier ALA SVar:Picture:http://www.wizards.com/global/images/magic/general/bant_sojourners.jpg -Oracle:When you cycle Bant Sojourners or it's dies, you may create a 1/1 white Soldier creature token.\nCycling {2}{W} ({2}{W}, Discard this card: Draw a card.) +Oracle:When you cycle Bant Sojourners or it dies, you may create a 1/1 white Soldier creature token.\nCycling {2}{W} ({2}{W}, Discard this card: Draw a card.) diff --git a/forge-gui/res/cardsfolder/b/barbarian_guides.txt b/forge-gui/res/cardsfolder/b/barbarian_guides.txt index 431209d12ee..11ba9a8c7cf 100644 --- a/forge-gui/res/cardsfolder/b/barbarian_guides.txt +++ b/forge-gui/res/cardsfolder/b/barbarian_guides.txt @@ -9,4 +9,4 @@ SVar:TrigReturn:DB$ ChangeZone | Defined$ DelayTriggerRemembered | Origin$ Battl SVar:RemAIDeck:True SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/barbarian_guides.jpg -Oracle:{2}{R}, {T}: Choose a land type. Target creature you control gains snow landwalk of the chosen type until end of turn. Return that creature to its owner's hand at the beginning of the next end step. +Oracle:{2}{R}, {T}: Choose a land type. Target creature you control gains snow landwalk of the chosen type until end of turn. Return that creature to its owner's hand at the beginning of the next end step. (It can't be blocked as long as defending player controls a snow land of that type.) diff --git a/forge-gui/res/cardsfolder/b/barbarian_lunatic.txt b/forge-gui/res/cardsfolder/b/barbarian_lunatic.txt index cbd0a2d7179..545d9cc84ca 100644 --- a/forge-gui/res/cardsfolder/b/barbarian_lunatic.txt +++ b/forge-gui/res/cardsfolder/b/barbarian_lunatic.txt @@ -4,4 +4,4 @@ Types:Creature Human Barbarian PT:2/1 A:AB$ DealDamage | Cost$ 2 R Sac<1/CARDNAME> | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature. SVar:Picture:http://www.wizards.com/global/images/magic/general/barbarian_lunatic.jpg -Oracle:{2}{R}, Sacrifice Barbarian Lunatic: Barbarian Lunatic deals 2 damage to target creature. +Oracle:{2}{R}, Sacrifice Barbarian Lunatic: It deals 2 damage to target creature. diff --git a/forge-gui/res/cardsfolder/b/barbarian_ring.txt b/forge-gui/res/cardsfolder/b/barbarian_ring.txt index ea8d0894244..358101b2d86 100644 --- a/forge-gui/res/cardsfolder/b/barbarian_ring.txt +++ b/forge-gui/res/cardsfolder/b/barbarian_ring.txt @@ -2,7 +2,7 @@ Name:Barbarian Ring ManaCost:no cost Types:Land A:AB$ Mana | Cost$ T | Produced$ R | SubAbility$ DBPain | SpellDescription$ Add {R}. CARDNAME deals 1 damage to you. -A:AB$ DealDamage | Cost$ R T Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | Activation$ Threshold | PrecostDesc$ Threshold — | SpellDescription$ CARDNAME deals 2 damage to target creature or player. Activate this ability only if seven or more cards are in your graveyard. +A:AB$ DealDamage | Cost$ R T Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | Activation$ Threshold | PrecostDesc$ Threshold — | SpellDescription$ CARDNAME deals 2 damage to any target. Activate this ability only if seven or more cards are in your graveyard. SVar:DBPain:DB$ DealDamage | NumDmg$ 1 | Defined$ You SVar:Picture:http://www.wizards.com/global/images/magic/general/barbarian_ring.jpg -Oracle:{T}: Add {R}. Barbarian Ring deals 1 damage to you.\nThreshold — {R}, {T}, Sacrifice Barbarian Ring: Barbarian Ring deals 2 damage to target creature or player. Activate this ability only if seven or more cards are in your graveyard. +Oracle:{T}: Add {R}. Barbarian Ring deals 1 damage to you.\nThreshold — {R}, {T}, Sacrifice Barbarian Ring: Barbarian Ring deals 2 damage to any target. Activate this ability only if seven or more cards are in your graveyard. diff --git a/forge-gui/res/cardsfolder/b/barbed_field.txt b/forge-gui/res/cardsfolder/b/barbed_field.txt index 50e5536cb3d..d15a0406e41 100644 --- a/forge-gui/res/cardsfolder/b/barbed_field.txt +++ b/forge-gui/res/cardsfolder/b/barbed_field.txt @@ -3,8 +3,8 @@ ManaCost:2 R R Types:Enchantment Aura K:Enchant land A:SP$ Attach | Cost$ 2 R R | ValidTgts$ Land | AILogic$ Pump -S:Mode$ Continuous | Affected$ Land.EnchantedBy | AddAbility$ Damage | Description$ Enchanted land has "{T}: This land deals 1 damage to target creature or player." -SVar:Damage:AB$DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +S:Mode$ Continuous | Affected$ Land.EnchantedBy | AddAbility$ Damage | Description$ Enchanted land has "{T}: This land deals 1 damage to any target." +SVar:Damage:AB$DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:NonStackingAttachEffect:True SVar:Picture:http://www.wizards.com/global/images/magic/general/barbed_field.jpg -Oracle:Enchant land\nEnchanted land has "{T}: This land deals 1 damage to target creature or player." +Oracle:Enchant land\nEnchanted land has "{T}: This land deals 1 damage to any target." diff --git a/forge-gui/res/cardsfolder/b/barbed_lightning.txt b/forge-gui/res/cardsfolder/b/barbed_lightning.txt index 3c853071606..0cbfa450737 100644 --- a/forge-gui/res/cardsfolder/b/barbed_lightning.txt +++ b/forge-gui/res/cardsfolder/b/barbed_lightning.txt @@ -4,6 +4,6 @@ Types:Instant K:Entwine:2 A:SP$ Charm | Cost$ 2 R | Choices$ DBDmgC,DBDmgP | CharmNum$ 1 SVar:DBDmgC:DB$ DealDamage | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature. -SVar:DBDmgP:DB$ DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target player. +SVar:DBDmgP:DB$ DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target player or planeswalker. SVar:Picture:http://www.wizards.com/global/images/magic/general/barbed_lightning.jpg -Oracle:Choose one —\n• Barbed Lightning deals 3 damage to target creature.\n• Barbed Lightning deals 3 damage to target player.\nEntwine {2} (Choose both if you pay the entwine cost.) +Oracle:Choose one —\n• Barbed Lightning deals 3 damage to target creature.\n• Barbed Lightning deals 3 damage to target player or planeswalker.\nEntwine {2} (Choose both if you pay the entwine cost.) diff --git a/forge-gui/res/cardsfolder/b/barrage_of_expendables.txt b/forge-gui/res/cardsfolder/b/barrage_of_expendables.txt index d4bbed91b16..a10ba645b52 100644 --- a/forge-gui/res/cardsfolder/b/barrage_of_expendables.txt +++ b/forge-gui/res/cardsfolder/b/barrage_of_expendables.txt @@ -1,7 +1,7 @@ Name:Barrage of Expendables ManaCost:R Types:Enchantment -A:AB$ DealDamage | Cost$ R Sac<1/Creature> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ R Sac<1/Creature> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/barrage_of_expendables.jpg -Oracle:{R}, Sacrifice a creature: Barrage of Expendables deals 1 damage to target creature or player. +Oracle:{R}, Sacrifice a creature: Barrage of Expendables deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/b/barrage_ogre.txt b/forge-gui/res/cardsfolder/b/barrage_ogre.txt index 1ed2a9f4b30..9c8b0f05f49 100644 --- a/forge-gui/res/cardsfolder/b/barrage_ogre.txt +++ b/forge-gui/res/cardsfolder/b/barrage_ogre.txt @@ -2,8 +2,8 @@ Name:Barrage Ogre ManaCost:3 R R Types:Creature Ogre Warrior PT:3/3 -A:AB$ DealDamage | Cost$ T Sac<1/Artifact> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target. +A:AB$ DealDamage | Cost$ T Sac<1/Artifact> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:AIPreference:SacCost$Artifact.token+nonCreature,Artifact.token+powerLE1,Artifact.cmcEQ1,Artifact.cmcEQ2 SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/barrage_ogre.jpg -Oracle:{T}, Sacrifice an artifact: Barrage Ogre deals 2 damage to target. \ No newline at end of file +Oracle:{T}, Sacrifice an artifact: Barrage Ogre deals 2 damage to any target. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/b/barrage_tyrant.txt b/forge-gui/res/cardsfolder/b/barrage_tyrant.txt index c2e1cf4a9e7..594f74493e9 100644 --- a/forge-gui/res/cardsfolder/b/barrage_tyrant.txt +++ b/forge-gui/res/cardsfolder/b/barrage_tyrant.txt @@ -3,9 +3,9 @@ ManaCost:4 R Types:Creature Eldrazi PT:5/3 K:Devoid -A:AB$ DealDamage | Cost$ 2 R Sac<1/Creature.Colorless+Other/another colorless creature> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to the sacrificed creature's power to target creature or player. +A:AB$ DealDamage | Cost$ 2 R Sac<1/Creature.Colorless+Other/another colorless creature> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to the sacrificed creature's power to any target. SVar:X:Sacrificed$CardPower SVar:RemAIDeck:True DeckHints:Color$Colorless & Keyword$Devoid SVar:Picture:http://www.wizards.com/global/images/magic/general/barrage_tyrant.jpg -Oracle:Devoid (This card has no color.)\n{2}{R}, Sacrifice another colorless creature: Barrage Tyrant deals damage equal to the sacrificed creature's power to target creature or player. \ No newline at end of file +Oracle:Devoid (This card has no color.)\n{2}{R}, Sacrifice another colorless creature: Barrage Tyrant deals damage equal to the sacrificed creature's power to any target. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/b/barren_glory.txt b/forge-gui/res/cardsfolder/b/barren_glory.txt index c0cc5a54e2f..02a6a487f74 100644 --- a/forge-gui/res/cardsfolder/b/barren_glory.txt +++ b/forge-gui/res/cardsfolder/b/barren_glory.txt @@ -1,7 +1,7 @@ Name:Barren Glory ManaCost:4 W W Types:Enchantment -T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | IsPresent$ Card.Other | PresentZone$ Battlefield | PresentPlayer$ You | PresentCompare$ EQ0 | IsPresent2$ Card | PresentZone2$ Hand | PresentPlayer2$ You | PresentCompare2$ EQ0 | Execute$ TrigWin | TriggerDescription$ At the beginning of your upkeep, if you control no permanents other than Barren Glory and have no cards in hand, you win the game. +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | IsPresent$ Card.Other | PresentZone$ Battlefield | PresentPlayer$ You | PresentCompare$ EQ0 | IsPresent2$ Card | PresentZone2$ Hand | PresentPlayer2$ You | PresentCompare2$ EQ0 | Execute$ TrigWin | TriggerDescription$ At the beginning of your upkeep, if you control no permanents other than Barren Glory and have no cards in hand, you win the game. SVar:TrigWin:DB$WinsGame | Defined$ You SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/barren_glory.jpg diff --git a/forge-gui/res/cardsfolder/b/barrenton_medic.txt b/forge-gui/res/cardsfolder/b/barrenton_medic.txt index 65549827794..5528c3d91f0 100644 --- a/forge-gui/res/cardsfolder/b/barrenton_medic.txt +++ b/forge-gui/res/cardsfolder/b/barrenton_medic.txt @@ -2,8 +2,8 @@ Name:Barrenton Medic ManaCost:4 W Types:Creature Kithkin Cleric PT:0/4 -A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to any target this turn. A:AB$ Untap | Cost$ AddCounter<1/M1M1> | SpellDescription$ Untap CARDNAME. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/barrenton_medic.jpg -Oracle:{T}: Prevent the next 1 damage that would be dealt to target creature or player this turn.\nPut a -1/-1 counter on Barrenton Medic: Untap Barrenton Medic. +Oracle:{T}: Prevent the next 1 damage that would be dealt to any target this turn.\nPut a -1/-1 counter on Barrenton Medic: Untap Barrenton Medic. diff --git a/forge-gui/res/cardsfolder/b/bash_to_bits.txt b/forge-gui/res/cardsfolder/b/bash_to_bits.txt index 5aa901eaa92..b78c695f04e 100644 --- a/forge-gui/res/cardsfolder/b/bash_to_bits.txt +++ b/forge-gui/res/cardsfolder/b/bash_to_bits.txt @@ -1,7 +1,7 @@ Name:Bash to Bits ManaCost:3 R Types:Instant -K:Flashback 4 R R +K:Flashback:4 R R A:SP$ Destroy | Cost$ 3 R | ValidTgts$ Artifact | TgtPrompt$ Select target artifact. | SpellDescription$ Destroy target artifact. SVar:Picture:http://www.wizards.com/global/images/magic/general/bash_to_bits.jpg Oracle:Destroy target artifact.\nFlashback {4}{R}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/b/batterskull.txt b/forge-gui/res/cardsfolder/b/batterskull.txt index 8213a135a8c..d378ebdcf71 100644 --- a/forge-gui/res/cardsfolder/b/batterskull.txt +++ b/forge-gui/res/cardsfolder/b/batterskull.txt @@ -7,4 +7,4 @@ S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 4 | AddToughness$ A:AB$ ChangeZone | Cost$ 3 | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return CARDNAME to its owner's hand. DeckHas:Ability$Token SVar:Picture:http://www.wizards.com/global/images/magic/general/batterskull.jpg -Oracle:Living weapon (When this Equipment enters the battlefield, create a 0/0 black Germ creature token, then attach this Equipment to it.)\nEquipped creature gets +4/+4 and has vigilance and lifelink.\n{3}: Return Batterskull to its owner's hand.\nEquip {5} +Oracle:Living weapon (When this Equipment enters the battlefield, create a 0/0 black Germ creature token, then attach this to it.)\nEquipped creature gets +4/+4 and has vigilance and lifelink.\n{3}: Return Batterskull to its owner's hand.\nEquip {5} diff --git a/forge-gui/res/cardsfolder/b/battle_mad_ronin.txt b/forge-gui/res/cardsfolder/b/battle_mad_ronin.txt index cdc7b5013a4..0d201003ead 100644 --- a/forge-gui/res/cardsfolder/b/battle_mad_ronin.txt +++ b/forge-gui/res/cardsfolder/b/battle_mad_ronin.txt @@ -3,6 +3,6 @@ ManaCost:1 R Types:Creature Human Samurai PT:1/1 K:CARDNAME attacks each combat if able. -K:Bushido 2 +K:Bushido:2 SVar:Picture:http://www.wizards.com/global/images/magic/general/battle_mad_ronin.jpg -Oracle:Bushido 2 (When this blocks or becomes blocked, it gets +2/+2 until end of turn.)\nBattle-Mad Ronin attacks each combat if able. +Oracle:Bushido 2 (Whenever this creature blocks or becomes blocked, it gets +2/+2 until end of turn.)\nBattle-Mad Ronin attacks each combat if able. diff --git a/forge-gui/res/cardsfolder/b/battle_screech.txt b/forge-gui/res/cardsfolder/b/battle_screech.txt index cc037695285..2ac5684cab9 100644 --- a/forge-gui/res/cardsfolder/b/battle_screech.txt +++ b/forge-gui/res/cardsfolder/b/battle_screech.txt @@ -1,7 +1,7 @@ Name:Battle Screech ManaCost:2 W W Types:Sorcery -K:Flashback tapXType<3/Creature.White/white creature> +K:Flashback:tapXType<3/Creature.White/white creature> A:SP$ Token | Cost$ 2 W W | TokenImage$ w 1 1 bird | TokenOwner$ You | TokenAmount$ 2 | TokenName$ Bird | TokenTypes$ Creature,Bird | TokenColors$ White | TokenPower$ 1 | TokenToughness$ 1 | TokenKeywords$ Flying | SpellDescription$ Create two 1/1 white Bird creature tokens with flying. SVar:Picture:http://www.wizards.com/global/images/magic/general/battle_screech.jpg Oracle:Create two 1/1 white Bird creature tokens with flying.\nFlashback—Tap three untapped white creatures you control. (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/b/bayou_dragonfly.txt b/forge-gui/res/cardsfolder/b/bayou_dragonfly.txt index 67555851484..e3615525c59 100644 --- a/forge-gui/res/cardsfolder/b/bayou_dragonfly.txt +++ b/forge-gui/res/cardsfolder/b/bayou_dragonfly.txt @@ -5,4 +5,4 @@ PT:1/1 K:Flying K:Swampwalk SVar:Picture:http://resources.wizards.com/magic/cards/te/en-us/card4749.jpg -Oracle:Flying, swampwalk +Oracle:Flying; swampwalk (This creature can't be blocked as long as defending player controls a Swamp.) diff --git a/forge-gui/res/cardsfolder/b/beacon_of_destruction.txt b/forge-gui/res/cardsfolder/b/beacon_of_destruction.txt index d9008a7e05e..83b325aa131 100644 --- a/forge-gui/res/cardsfolder/b/beacon_of_destruction.txt +++ b/forge-gui/res/cardsfolder/b/beacon_of_destruction.txt @@ -1,7 +1,7 @@ Name:Beacon of Destruction ManaCost:3 R R Types:Instant -A:SP$ DealDamage | Cost$ 3 R R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 5 | SubAbility$ DBShuffle | SpellDescription$ CARDNAME deals 5 damage to target creature or player. Shuffle CARDNAME into its owner's library. +A:SP$ DealDamage | Cost$ 3 R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 5 | SubAbility$ DBShuffle | SpellDescription$ CARDNAME deals 5 damage to any target. Shuffle CARDNAME into its owner's library. SVar:DBShuffle:DB$ChangeZone | Origin$ Stack | Destination$ Library | Shuffle$ True SVar:Picture:http://resources.wizards.com/magic/cards/5dn/en-us/card51612.jpg -Oracle:Beacon of Destruction deals 5 damage to target creature or player. Shuffle Beacon of Destruction into its owner's library. +Oracle:Beacon of Destruction deals 5 damage to any target. Shuffle Beacon of Destruction into its owner's library. diff --git a/forge-gui/res/cardsfolder/b/bearer_of_silence.txt b/forge-gui/res/cardsfolder/b/bearer_of_silence.txt index 841d58f7488..da82ad4febe 100644 --- a/forge-gui/res/cardsfolder/b/bearer_of_silence.txt +++ b/forge-gui/res/cardsfolder/b/bearer_of_silence.txt @@ -9,4 +9,4 @@ K:Flying K:CARDNAME can't block. DeckHints:Ability$Mana.Colorless SVar:Picture:http://www.wizards.com/global/images/magic/general/bearer_of_silence.jpg -Oracle:Devoid (This card has no color.)\nWhen you cast Bearer of Silence, you may pay {1}{C}. If you do, target opponent sacrifices a creature. ({C} represents colorless mana.)\nFlying\nBearer of Silence can't block. +Oracle:Devoid (This card has no color.)\nWhen you cast this spell, you may pay {1}{C}. If you do, target opponent sacrifices a creature. ({C} represents colorless mana.)\nFlying\nBearer of Silence can't block. diff --git a/forge-gui/res/cardsfolder/b/beast_attack.txt b/forge-gui/res/cardsfolder/b/beast_attack.txt index 21b5cdb85bb..440a969246a 100644 --- a/forge-gui/res/cardsfolder/b/beast_attack.txt +++ b/forge-gui/res/cardsfolder/b/beast_attack.txt @@ -1,7 +1,7 @@ Name:Beast Attack ManaCost:2 G G G Types:Instant -K:Flashback 2 G G G +K:Flashback:2 G G G A:SP$ Token | Cost$ 2 G G G | TokenAmount$ 1 | TokenName$ Beast | TokenTypes$ Creature,Beast | TokenColors$ Green | TokenOwner$ You | TokenPower$ 4 | TokenToughness$ 4 | SpellDescription$ Create a 4/4 green Beast creature token. SVar:Picture:http://www.wizards.com/global/images/magic/general/beast_attack.jpg Oracle:Create a 4/4 green Beast creature token.\nFlashback {2}{G}{G}{G} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/b/beastcaller_savant.txt b/forge-gui/res/cardsfolder/b/beastcaller_savant.txt index bb52d955103..15a89577f28 100644 --- a/forge-gui/res/cardsfolder/b/beastcaller_savant.txt +++ b/forge-gui/res/cardsfolder/b/beastcaller_savant.txt @@ -3,6 +3,6 @@ ManaCost:1 G Types:Creature Elf Shaman Ally PT:1/1 K:Haste -A:AB$ Mana | Cost$ T | Produced$ Any | Amount$ 1 | RestrictValid$ Card.Creature | SpellDescription$ Add one mana of any color. Use this mana only to cast creature spells. +A:AB$ Mana | Cost$ T | Produced$ Any | Amount$ 1 | RestrictValid$ Card.Creature | SpellDescription$ Add one mana of any color. Spend this mana only to cast a creature spell. SVar:Picture:http://www.wizards.com/global/images/magic/general/beastcaller_expert.jpg -Oracle:Haste\n{T}: Add one mana of any color. Use this mana only to cast creature spells. +Oracle:Haste\n{T}: Add one mana of any color. Spend this mana only to cast a creature spell. diff --git a/forge-gui/res/cardsfolder/b/bedlam_reveler.txt b/forge-gui/res/cardsfolder/b/bedlam_reveler.txt index bc6e4ecf437..f82e7483cf3 100644 --- a/forge-gui/res/cardsfolder/b/bedlam_reveler.txt +++ b/forge-gui/res/cardsfolder/b/bedlam_reveler.txt @@ -10,4 +10,4 @@ SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ 3 SVar:X:Count$ValidGraveyard Instant.YouOwn,Sorcery.YouOwn DeckHints:Ability$Graveyard SVar:Picture:http://www.wizards.com/global/images/magic/general/bedlam_reveler.jpg -Oracle:Bedlam Reveler costs {1} less to cast for each instant and sorcery card in your graveyard.\nProwess (Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.)\nWhen Bedlam Reveler enters the battlefield, discard your hand, then draw three cards. +Oracle:This spell costs {1} less to cast for each instant and sorcery card in your graveyard.\nProwess (Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.)\nWhen Bedlam Reveler enters the battlefield, discard your hand, then draw three cards. diff --git a/forge-gui/res/cardsfolder/b/bee_sting.txt b/forge-gui/res/cardsfolder/b/bee_sting.txt index 246c925fd28..271ce4bb10b 100644 --- a/forge-gui/res/cardsfolder/b/bee_sting.txt +++ b/forge-gui/res/cardsfolder/b/bee_sting.txt @@ -1,6 +1,6 @@ Name:Bee Sting ManaCost:3 G Types:Sorcery -A:SP$ DealDamage | Cost$ 3 G | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ Bee Sting deals 2 damage to target creature or player. +A:SP$ DealDamage | Cost$ 3 G | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ Bee Sting deals 2 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/bee_sting.jpg -Oracle:Bee Sting deals 2 damage to target creature or player. +Oracle:Bee Sting deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/b/belligerent_hatchling.txt b/forge-gui/res/cardsfolder/b/belligerent_hatchling.txt index 314e897ed48..d4dc21ca11b 100644 --- a/forge-gui/res/cardsfolder/b/belligerent_hatchling.txt +++ b/forge-gui/res/cardsfolder/b/belligerent_hatchling.txt @@ -9,4 +9,4 @@ T:Mode$ SpellCast | ValidCard$ Card.White | ValidActivatingPlayer$ You | Trigger SVar:TrigRemoveCounter:DB$RemoveCounter | Defined$ Self | CounterType$ M1M1 | CounterNum$ 1 SVar:BuffedBy:Card.Red,Card.White SVar:Picture:http://www.wizards.com/global/images/magic/general/Belligerent_Hatchling.jpg -Oracle:First strike\nBelligerent Hatchling enters the battlefield with four -1/-1 counters on it.\nWhenever you cast a red spell, remove a -1/-1 counter from Belligerent Hatchling.\nWhenever you cast a white spell, remove a -1/-1 counter from Belligerent Hatchling. \ No newline at end of file +Oracle:First strike\nBelligerent Hatchling enters the battlefield with four -1/-1 counters on it.\nWhenever you cast a red spell, remove a -1/-1 counter from Belligerent Hatchling.\nWhenever you cast a white spell, remove a -1/-1 counter from Belligerent Hatchling. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/b/benalish_honor_guard.txt b/forge-gui/res/cardsfolder/b/benalish_honor_guard.txt index 11ee77442cd..e1c617a3f8d 100644 --- a/forge-gui/res/cardsfolder/b/benalish_honor_guard.txt +++ b/forge-gui/res/cardsfolder/b/benalish_honor_guard.txt @@ -5,4 +5,4 @@ PT:2/2 S:Mode$ Continuous | Affected$ Card.Self | AddPower$ X | References$ X | Description$ CARDNAME gets +1/+0 for each legendary creature you control. SVar:X:Count$Valid Creature.Legendary+YouCtrl SVar:BuffedBy:Creature.Legendary -Oracle:Benalish Honor Guard gets +1/+0 for each legendary creature you control. +Oracle:Benalish Honor Guard gets +1/+0 for each legendary creature you control. diff --git a/forge-gui/res/cardsfolder/b/benalish_knight.txt b/forge-gui/res/cardsfolder/b/benalish_knight.txt index a563c315fba..50a0313af6e 100644 --- a/forge-gui/res/cardsfolder/b/benalish_knight.txt +++ b/forge-gui/res/cardsfolder/b/benalish_knight.txt @@ -5,4 +5,4 @@ PT:2/2 K:Flash K:First Strike SVar:Picture:http://www.wizards.com/global/images/magic/general/benalish_knight.jpg -Oracle:Flash (You may cast this spell any time you could cast an instant.)\nFirst strike \ No newline at end of file +Oracle:Flash (You may cast this spell any time you could cast an instant.)\nFirst strike (This creature deals combat damage before creatures without first strike.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/b/benevolent_ancestor.txt b/forge-gui/res/cardsfolder/b/benevolent_ancestor.txt index ab9e4c946f2..b0c5535ec95 100644 --- a/forge-gui/res/cardsfolder/b/benevolent_ancestor.txt +++ b/forge-gui/res/cardsfolder/b/benevolent_ancestor.txt @@ -3,6 +3,6 @@ ManaCost:2 W Types:Creature Spirit PT:0/4 K:Defender -A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to any target this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/benevolent_ancestor.jpg -Oracle:Defender\n{T}: Prevent the next 1 damage that would be dealt to target creature or player this turn. +Oracle:Defender (This creature can't attack.)\n{T}: Prevent the next 1 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/b/benevolent_unicorn.txt b/forge-gui/res/cardsfolder/b/benevolent_unicorn.txt index 75409bd1155..7342cb72b62 100644 --- a/forge-gui/res/cardsfolder/b/benevolent_unicorn.txt +++ b/forge-gui/res/cardsfolder/b/benevolent_unicorn.txt @@ -2,8 +2,8 @@ Name:Benevolent Unicorn ManaCost:1 W Types:Creature Unicorn PT:1/2 -R:Event$ DamageDone | ActiveZones$ Battlefield | ValidSource$ Spell | ValidTarget$ Creature,Player | ReplaceWith$ DmgMinus1 | Description$ If a spell would deal damage to a creature or player, it deals that much damage minus 1 to that creature or player instead. +R:Event$ DamageDone | ActiveZones$ Battlefield | ValidSource$ Spell | ValidTarget$ Permanent,Player | ReplaceWith$ DmgMinus1 | Description$ If a spell would deal damage to a permanent or player, it deals that much damage minus 1 to that permanent or player instead. SVar:DmgMinus1:DB$ ReplaceEffect | VarName$ DamageAmount | VarValue$ X | References$ X SVar:X:ReplaceCount$DamageAmount/Minus.1 SVar:Picture:http://www.wizards.com/global/images/magic/general/benevolent_unicorn.jpg -Oracle:If a spell would deal damage to a creature or player, it deals that much damage minus 1 to that creature or player instead. +Oracle:If a spell would deal damage to a permanent or player, it deals that much damage minus 1 to that permanent or player instead. diff --git a/forge-gui/res/cardsfolder/b/benthic_behemoth.txt b/forge-gui/res/cardsfolder/b/benthic_behemoth.txt index 0faea47b239..e921310da17 100644 --- a/forge-gui/res/cardsfolder/b/benthic_behemoth.txt +++ b/forge-gui/res/cardsfolder/b/benthic_behemoth.txt @@ -4,4 +4,4 @@ Types:Creature Serpent PT:7/6 K:Islandwalk SVar:Picture:http://resources.wizards.com/magic/cards/7e/en-us/card13030.jpg -Oracle:Islandwalk +Oracle:Islandwalk (This creature can't be blocked as long as defending player controls an Island.) diff --git a/forge-gui/res/cardsfolder/b/benthic_djinn.txt b/forge-gui/res/cardsfolder/b/benthic_djinn.txt index 3f1029ef48f..e645152b574 100644 --- a/forge-gui/res/cardsfolder/b/benthic_djinn.txt +++ b/forge-gui/res/cardsfolder/b/benthic_djinn.txt @@ -6,4 +6,4 @@ K:Islandwalk T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigLoseLife | TriggerDescription$ At the beginning of your upkeep, you lose 2 life. SVar:TrigLoseLife:DB$ LoseLife | Defined$ You | LifeAmount$ 2 SVar:Picture:http://www.wizards.com/global/images/magic/general/benthic_djinn.jpg -Oracle:Islandwalk\nAt the beginning of your upkeep, you lose 2 life. +Oracle:Islandwalk (This creature can't be blocked as long as defending player controls an Island.)\nAt the beginning of your upkeep, you lose 2 life. diff --git a/forge-gui/res/cardsfolder/b/berserk.txt b/forge-gui/res/cardsfolder/b/berserk.txt index a78f4c8db94..c5bd1a5f4dc 100644 --- a/forge-gui/res/cardsfolder/b/berserk.txt +++ b/forge-gui/res/cardsfolder/b/berserk.txt @@ -6,4 +6,4 @@ SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End Of Turn | Execute$ Tr SVar:TrigDestroy:DB$ Destroy | Defined$ DelayTriggerRemembered | ConditionDefined$ DelayTriggerRemembered | ConditionPresent$ Card.attackedThisTurn | ConditionCompare$ GE1 SVar:X:Targeted$CardPower SVar:Picture:http://www.wizards.com/global/images/magic/general/berserk.jpg -Oracle:Cast Berserk only before the combat damage step.\nTarget creature gains trample and gets +X/+0 until end of turn, where X is its power. At the beginning of the next end step, destroy that creature if it attacked this turn. +Oracle:Cast this spell only before the combat damage step.\nTarget creature gains trample and gets +X/+0 until end of turn, where X is its power. At the beginning of the next end step, destroy that creature if it attacked this turn. diff --git a/forge-gui/res/cardsfolder/b/biomass_mutation.txt b/forge-gui/res/cardsfolder/b/biomass_mutation.txt index 7f8d6f6e0f0..61adcace5b4 100644 --- a/forge-gui/res/cardsfolder/b/biomass_mutation.txt +++ b/forge-gui/res/cardsfolder/b/biomass_mutation.txt @@ -5,4 +5,4 @@ A:SP$ AnimateAll | Cost$ X GU GU | Power$ X | Toughness$ X | References$ X | Val SVar:X:Count$xPaid SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/biomass_mutation.jpg -Oracle:Creatures you control become X/X until end of turn. +Oracle:Creatures you control have base power and toughness X/X until end of turn. diff --git a/forge-gui/res/cardsfolder/b/birthing_pod.txt b/forge-gui/res/cardsfolder/b/birthing_pod.txt index 18a6e806969..76c7a38f6fe 100644 --- a/forge-gui/res/cardsfolder/b/birthing_pod.txt +++ b/forge-gui/res/cardsfolder/b/birthing_pod.txt @@ -6,4 +6,4 @@ SVar:X:Sacrificed$CardManaCost/Plus.1 # AI Preference is needed to make the AI consider the ability. Further constraints are defined by AILogic SacAndUpgrade. SVar:AIPreference:SacCost$Creature SVar:Picture:http://www.wizards.com/global/images/magic/general/birthing_pod.jpg -Oracle:({P/G} can be paid with either {G} or 2 life.)\n{1}{P/G}, {T}, Sacrifice a creature: Search your library for a creature card with converted mana cost equal to 1 plus the sacrificed creature's converted mana cost, put that card onto the battlefield, then shuffle your library. Activate this ability only any time you could cast a sorcery. +Oracle:({G/P} can be paid with either {G} or 2 life.)\n{1}{G/P}, {T}, Sacrifice a creature: Search your library for a creature card with converted mana cost equal to 1 plus the sacrificed creature's converted mana cost, put that card onto the battlefield, then shuffle your library. Activate this ability only any time you could cast a sorcery. diff --git a/forge-gui/res/cardsfolder/b/bishop_of_rebirth.txt b/forge-gui/res/cardsfolder/b/bishop_of_rebirth.txt index 238f7715da3..c978c24f4ab 100644 --- a/forge-gui/res/cardsfolder/b/bishop_of_rebirth.txt +++ b/forge-gui/res/cardsfolder/b/bishop_of_rebirth.txt @@ -3,7 +3,7 @@ ManaCost:3 W W Types:Creature Vampire Cleric PT:3/4 K:Vigilance -T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigChangeZone | TriggerZones$ Battlefield | OptionalDecider$ You | TriggerDescription$ When CARDNAME attacks, you may return target creature card with converted mana cost 3 or less from your graveyard to the battlefield. +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigChangeZone | TriggerZones$ Battlefield | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME attacks, you may return target creature card with converted mana cost 3 or less from your graveyard to the battlefield. SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Creature.YouCtrl+cmcLE3 SVar:Picture:http://www.wizards.com/global/images/magic/general/bishop_of_rebirth.jpg -Oracle:Vigilance\nWhen Bishop of Rebirth attacks, you may return target creature card with converted mana cost 3 or less from your graveyard to the battlefield. +Oracle:Vigilance\nWhenever Bishop of Rebirth attacks, you may return target creature card with converted mana cost 3 or less from your graveyard to the battlefield. diff --git a/forge-gui/res/cardsfolder/b/bitter_feud.txt b/forge-gui/res/cardsfolder/b/bitter_feud.txt index 4f728e86710..5b5e13202c2 100644 --- a/forge-gui/res/cardsfolder/b/bitter_feud.txt +++ b/forge-gui/res/cardsfolder/b/bitter_feud.txt @@ -5,7 +5,7 @@ K:ETBReplacement:Other:ChooseP SVar:ChooseP:DB$ ChoosePlayer | Defined$ You | Choices$ Player | AILogic$ Curse | RememberChosen$ True | SubAbility$ ChoosePTwo | SpellDescription$ As CARDNAME enters the battlefield, choose two players. SVar:ChoosePTwo:DB$ ChoosePlayer | Defined$ You | Choices$ NonChosenPlayer | AILogic$ Curse R:Event$ DamageDone | ActiveZones$ Battlefield | ValidSource$ Card.RememberedPlayerCtrl | ValidTarget$ Permanent.ChosenCtrl,Player.Chosen | ReplaceWith$ DmgTwice | Description$ If a source controlled by one of the chosen players would deal damage to the other chosen player or a permanent that player controls, that source deals double that damage to that player or permanent instead. -R:Event$ DamageDone | ActiveZones$ Battlefield | ValidSource$ Card.ChosenCtrl | ValidTarget$ Permanent.RememberedPlayerCtrl,Player.Remembered | ReplaceWith$ DmgTwice | Secondary$ True | Description$ If a source controlled by one of the chosen players would deal damage to the other chosen player or a permanent that player controls, that source deals double that damage to that player or permanent instead. +R:Event$ DamageDone | ActiveZones$ Battlefield | ValidSource$ Card.ChosenCtrl | ValidTarget$ Permanent.RememberedPlayerCtrl,Player.IsRemembered | ReplaceWith$ DmgTwice | Secondary$ True | Description$ If a source controlled by one of the chosen players would deal damage to the other chosen player or a permanent that player controls, that source deals double that damage to that player or permanent instead. SVar:DmgTwice:DB$ ReplaceEffect | VarName$ DamageAmount | VarValue$ X | References$ X SVar:X:ReplaceCount$DamageAmount/Twice T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ DBCleanup | Static$ True diff --git a/forge-gui/res/cardsfolder/b/bituminous_blast.txt b/forge-gui/res/cardsfolder/b/bituminous_blast.txt index 81802910669..fe92e6e7875 100644 --- a/forge-gui/res/cardsfolder/b/bituminous_blast.txt +++ b/forge-gui/res/cardsfolder/b/bituminous_blast.txt @@ -4,4 +4,4 @@ Types:Instant K:Cascade A:SP$ DealDamage | Cost$ 3 B R | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target creature. SVar:Picture:http://www.wizards.com/global/images/magic/general/bituminous_blast.jpg -Oracle:Cascade (When you cast this spell, exile cards from the top of your library until you exile a nonland card that costs less. You may cast it without paying its mana cost. Put the exiled cards on the bottom in a random order.)\nBituminous Blast deals 4 damage to target creature. +Oracle:Cascade (When you cast this spell, exile cards from the top of your library until you exile a nonland card that costs less. You may cast it without paying its mana cost. Put the exiled cards on the bottom of your library in a random order.)\nBituminous Blast deals 4 damage to target creature. diff --git a/forge-gui/res/cardsfolder/b/black_knight.txt b/forge-gui/res/cardsfolder/b/black_knight.txt index 8cd3366aaa5..cdef13524ca 100644 --- a/forge-gui/res/cardsfolder/b/black_knight.txt +++ b/forge-gui/res/cardsfolder/b/black_knight.txt @@ -5,4 +5,4 @@ PT:2/2 K:First Strike K:Protection from white SVar:Picture:http://www.wizards.com/global/images/magic/general/black_knight.jpg -Oracle:First strike, protection from white +Oracle:First strike (This creature deals combat damage before creatures without first strike.)\nProtection from white (This creature can't be blocked, targeted, dealt damage, or enchanted by anything white.) diff --git a/forge-gui/res/cardsfolder/b/blaring_captain.txt b/forge-gui/res/cardsfolder/b/blaring_captain.txt new file mode 100644 index 00000000000..78354ca731e --- /dev/null +++ b/forge-gui/res/cardsfolder/b/blaring_captain.txt @@ -0,0 +1,10 @@ +Name:Blaring Captain +ManaCost:3 B +Types:Creature Azra Warrior +PT:2/2 +K:Partner:Blaring Recruiter +T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigPumpAttack | TriggerDescription$ Whenever CARDNAME attacks, attacking Warriors get +1/+1 until end of turn. +SVar:TrigPumpAttack:DB$ PumpAll | ValidCards$ Warrior.attacking | NumAtt$ 1 | NumDef$ 1 +DeckHints:Name$Blaring Recruiter & Type$Warrior +SVar:Picture:http://www.wizards.com/global/images/magic/general/blaring_captain.jpg +Oracle:Partner with Blaring Recruiter (When this creature enters the battlefield, target player may put Blaring Recruiter into their hand from their library, then shuffle.)\nWhenever Blaring Captain attacks, attacking Warriors get +1/+1 until end of turn. diff --git a/forge-gui/res/cardsfolder/b/blaring_recruiter.txt b/forge-gui/res/cardsfolder/b/blaring_recruiter.txt new file mode 100644 index 00000000000..df78ee8b8ae --- /dev/null +++ b/forge-gui/res/cardsfolder/b/blaring_recruiter.txt @@ -0,0 +1,10 @@ +Name:Blaring Recruiter +ManaCost:3 W +Types:Creature Elf Warrior +PT:2/2 +K:Partner:Blaring Captain +A:AB$ Token | Cost$ 2 W | TokenAmount$ 1 | TokenName$ Warrior | TokenTypes$ Creature,Warrior | TokenOwner$ You | TokenColors$ White | TokenPower$ 1 | TokenToughness$ 1 | TokenImage$ w 1 1 warrior BBD | SpellDescription$ Create a 1/1 white Warrior creature token. +DeckHints:Name$Blaring Captain +DeckHas:Ability$Token +SVar:Picture:http://www.wizards.com/global/images/magic/general/blaring_recruiter.jpg +Oracle:Partner with Blaring Captain (When this creature enters the battlefield, target player may put Blaring Captain into their hand from their library, then shuffle.)\n{2}{W}: Create a 1/1 white Warrior creature token. diff --git a/forge-gui/res/cardsfolder/b/blasphemous_act.txt b/forge-gui/res/cardsfolder/b/blasphemous_act.txt index a56160586f3..8db0190203d 100644 --- a/forge-gui/res/cardsfolder/b/blasphemous_act.txt +++ b/forge-gui/res/cardsfolder/b/blasphemous_act.txt @@ -5,4 +5,4 @@ A:SP$ DamageAll | Cost$ 8 R | NumDmg$ 13 | ValidCards$ Creature | ValidDescripti S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ X | EffectZone$ All | Description$ CARDNAME costs {1} less to cast for each creature on the battlefield. SVar:X:Count$Valid Creature SVar:Picture:http://www.wizards.com/global/images/magic/general/blasphemous_act.jpg -Oracle:Blasphemous Act costs {1} less to cast for each creature on the battlefield.\nBlasphemous Act deals 13 damage to each creature. +Oracle:This spell costs {1} less to cast for each creature on the battlefield.\nBlasphemous Act deals 13 damage to each creature. diff --git a/forge-gui/res/cardsfolder/b/blast_of_genius.txt b/forge-gui/res/cardsfolder/b/blast_of_genius.txt index 7a8dc074c0f..5d7d4e5f217 100644 --- a/forge-gui/res/cardsfolder/b/blast_of_genius.txt +++ b/forge-gui/res/cardsfolder/b/blast_of_genius.txt @@ -1,11 +1,11 @@ Name:Blast of Genius ManaCost:4 U R Types:Sorcery -A:SP$ Draw | Cost$ 4 U R | NumCards$ 3 | SubAbility$ DBDiscard | SpellDescription$ Choose target creature or player. Draw three cards and discard a card. CARDNAME deals damage equal to the converted mana cost of the discard card to that creature or player. +A:SP$ Draw | Cost$ 4 U R | NumCards$ 3 | SubAbility$ DBDiscard | SpellDescription$ Choose any target. Draw three cards and discard a card. CARDNAME deals damage equal to the converted mana cost of the discard card to that permanent or player. SVar:DBDiscard:DB$ Discard | Defined$ You | NumCards$ 1 | Mode$ TgtChoose | RememberDiscarded$ True | SubAbility$ DBDamage -SVar:DBDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Choose target creature or player | NumDmg$ X | References$ X | SubAbility$ DBCleanup +SVar:DBDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Choose any target | NumDmg$ X | References$ X | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Remembered$CardManaCost SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/blast_of_genius.jpg -Oracle:Choose target creature or player. Draw three cards, then discard a card. Blast of Genius deals damage equal to the discarded card's converted mana cost to that creature or player. +Oracle:Choose any target. Draw three cards, then discard a card. Blast of Genius deals damage equal to the discarded card's converted mana cost to that permanent or player. diff --git a/forge-gui/res/cardsfolder/b/blasting_station.txt b/forge-gui/res/cardsfolder/b/blasting_station.txt index 8acbb3bdee0..de8051ffd6b 100644 --- a/forge-gui/res/cardsfolder/b/blasting_station.txt +++ b/forge-gui/res/cardsfolder/b/blasting_station.txt @@ -1,9 +1,9 @@ Name:Blasting Station ManaCost:3 Types:Artifact -A:AB$ DealDamage | Cost$ T Sac<1/Creature> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ T Sac<1/Creature> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigUntap | TriggerDescription$ Whenever a creature enters the battlefield, you may untap CARDNAME. SVar:TrigUntap:DB$Untap | Defined$ Self SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/blasting_station.jpg -Oracle:{T}, Sacrifice a creature: Blasting Station deals 1 damage to target creature or player.\nWhenever a creature enters the battlefield, you may untap Blasting Station. +Oracle:{T}, Sacrifice a creature: Blasting Station deals 1 damage to any target.\nWhenever a creature enters the battlefield, you may untap Blasting Station. diff --git a/forge-gui/res/cardsfolder/b/blaze.txt b/forge-gui/res/cardsfolder/b/blaze.txt index 3a74605f514..956722c52c3 100644 --- a/forge-gui/res/cardsfolder/b/blaze.txt +++ b/forge-gui/res/cardsfolder/b/blaze.txt @@ -1,7 +1,7 @@ Name:Blaze ManaCost:X R Types:Sorcery -A:SP$ DealDamage | Cost$ X R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to target creature or player. +A:SP$ DealDamage | Cost$ X R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to any target. SVar:X:Count$xPaid SVar:Picture:http://www.wizards.com/global/images/magic/general/blaze.jpg -Oracle:Blaze deals X damage to target creature or player. +Oracle:Blaze deals X damage to any target. diff --git a/forge-gui/res/cardsfolder/b/blaze_of_glory.txt b/forge-gui/res/cardsfolder/b/blaze_of_glory.txt index b7cee67bb43..a2af31cb833 100644 --- a/forge-gui/res/cardsfolder/b/blaze_of_glory.txt +++ b/forge-gui/res/cardsfolder/b/blaze_of_glory.txt @@ -5,4 +5,4 @@ A:SP$ Pump | Cost$ W | ValidTgts$ Creature.DefendingPlayerCtrl | TgtPrompt$ Sele SVar:GoingDownInStyle:DB$ MustBlock | Defined$ ParentTarget | DefinedAttacker$ Valid Card.attacking | BlockAllDefined$ True | StackDescription$ None SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/blaze_of_glory.jpg -Oracle:Cast Blaze of Glory only during combat before blockers are declared.\nTarget creature defending player controls can block any number of creatures this turn. It blocks each attacking creature this turn if able. +Oracle:Cast this spell only during combat before blockers are declared.\nTarget creature defending player controls can block any number of creatures this turn. It blocks each attacking creature this turn if able. diff --git a/forge-gui/res/cardsfolder/b/blazing_hellhound.txt b/forge-gui/res/cardsfolder/b/blazing_hellhound.txt index e33b031db31..e18ab933982 100644 --- a/forge-gui/res/cardsfolder/b/blazing_hellhound.txt +++ b/forge-gui/res/cardsfolder/b/blazing_hellhound.txt @@ -2,6 +2,6 @@ Name:Blazing Hellhound ManaCost:2 B R Types:Creature Elemental Hound PT:4/3 -A:AB$ DealDamage | Cost$ 1 Sac<1/Creature.Other/another creature> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ 1 Sac<1/Creature.Other/another creature> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/blazing_hellhound.jpg -Oracle:{1}, Sacrifice another creature: Blazing Hellhound deals 1 damage to target creature or player. +Oracle:{1}, Sacrifice another creature: Blazing Hellhound deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/b/blazing_shoal.txt b/forge-gui/res/cardsfolder/b/blazing_shoal.txt index c04b65a2e9f..990580b30ba 100644 --- a/forge-gui/res/cardsfolder/b/blazing_shoal.txt +++ b/forge-gui/res/cardsfolder/b/blazing_shoal.txt @@ -7,4 +7,4 @@ SVar:X:Count$xPaid SVar:Y:Exiled$CardManaCost SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/blazing_shoal.jpg -Oracle:You may exile a red card with converted mana cost X from your hand rather than pay Blazing Shoal's mana cost.\nTarget creature gets +X/+0 until end of turn. +Oracle:You may exile a red card with converted mana cost X from your hand rather than pay this spell's mana cost.\nTarget creature gets +X/+0 until end of turn. diff --git a/forge-gui/res/cardsfolder/b/blazing_torch.txt b/forge-gui/res/cardsfolder/b/blazing_torch.txt index debb5f657b7..9c0df3b390f 100644 --- a/forge-gui/res/cardsfolder/b/blazing_torch.txt +++ b/forge-gui/res/cardsfolder/b/blazing_torch.txt @@ -3,8 +3,8 @@ ManaCost:1 Types:Artifact Equipment K:Equip:1 S:Mode$ CantBlockBy | ValidAttacker$ Creature.EquippedBy | ValidBlocker$ Creature.Vampire,Creature.Zombie | Description$ Equipped creature can't be blocked by Vampires or Zombies. -S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddAbility$ TorchDamage | Description$ Equipped creature has "{T}, Sacrifice Blazing Torch: Blazing Torch deals 2 damage to target creature or player." -SVar:TorchDamage:AB$ DealDamage | Cost$ T Sac<1/Card.Attached+namedBlazing Torch/equipped Blazing Torch> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | DamageSource$ Sacrificed | SpellDescription$ Blazing Torch deals 2 damage to target creature or player. +S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddAbility$ TorchDamage | Description$ Equipped creature has "{T}, Sacrifice Blazing Torch: Blazing Torch deals 2 damage to any target." +SVar:TorchDamage:AB$ DealDamage | Cost$ T Sac<1/Card.Attached+namedBlazing Torch/equipped Blazing Torch> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | DamageSource$ Sacrificed | SpellDescription$ Blazing Torch deals 2 damage to any target. SVar:NonStackingAttachEffect:True SVar:Picture:http://www.wizards.com/global/images/magic/general/blazing_torch.jpg -Oracle:Equipped creature can't be blocked by Vampires or Zombies.\nEquipped creature has "{T}, Sacrifice Blazing Torch: Blazing Torch deals 2 damage to target creature or player."\nEquip {1} +Oracle:Equipped creature can't be blocked by Vampires or Zombies.\nEquipped creature has "{T}, Sacrifice Blazing Torch: Blazing Torch deals 2 damage to any target."\nEquip {1} ({1}: Attach to target creature you control. Equip only as a sorcery.) diff --git a/forge-gui/res/cardsfolder/b/blessing_of_belzenlok.txt b/forge-gui/res/cardsfolder/b/blessing_of_belzenlok.txt index d9fccba0e08..7d0377e0811 100644 --- a/forge-gui/res/cardsfolder/b/blessing_of_belzenlok.txt +++ b/forge-gui/res/cardsfolder/b/blessing_of_belzenlok.txt @@ -4,4 +4,4 @@ Types:Instant A:SP$ Pump | Cost$ B | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +2 | NumDef$ +1 | SubAbility$ DBPump | SpellDescription$ Target creature gets +2/+1 until end of turn. If it’s legendary, it also gains lifelink until end of turn. SVar:DBPump:DB$ Pump | Defined$ Targeted | KW$ Lifelink | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 | References$ X SVar:X:Targeted$Valid Legendary -Oracle:Target creature gets +2/+1 until end of turn. If it’s legendary, it also gains lifelink until end of turn. +Oracle:Target creature gets +2/+1 until end of turn. If it's legendary, it also gains lifelink until end of turn. diff --git a/forge-gui/res/cardsfolder/b/blight_herder.txt b/forge-gui/res/cardsfolder/b/blight_herder.txt index e546b33ac29..de33544b426 100644 --- a/forge-gui/res/cardsfolder/b/blight_herder.txt +++ b/forge-gui/res/cardsfolder/b/blight_herder.txt @@ -8,4 +8,4 @@ SVar:ABMana:AB$ Mana | Cost$ Sac<1/CARDNAME> | Produced$ C | Amount$ 1 | SpellDe DeckHints:Keyword$Ingest & Type$Eldrazi DeckHas:Ability$Mana.Colorless & Ability$Token SVar:Picture:http://www.wizards.com/global/images/magic/general/blight_herder.jpg -Oracle:When you cast Blight Herder, you may put two cards your opponents own from exile into their owners' graveyards. If you do, create three 1/1 colorless Eldrazi Scion creature tokens. They have "Sacrifice this creature: Add {C}." +Oracle:When you cast this spell, you may put two cards your opponents own from exile into their owners' graveyards. If you do, create three 1/1 colorless Eldrazi Scion creature tokens. They have "Sacrifice this creature: Add {C}." diff --git a/forge-gui/res/cardsfolder/b/blighted_gorge.txt b/forge-gui/res/cardsfolder/b/blighted_gorge.txt index 91465153502..82b5e9d79fd 100644 --- a/forge-gui/res/cardsfolder/b/blighted_gorge.txt +++ b/forge-gui/res/cardsfolder/b/blighted_gorge.txt @@ -2,8 +2,8 @@ Name:Blighted Gorge ManaCost:no cost Types:Land A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}. -A:AB$ DealDamage | Cost$ 4 R T Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:AB$ DealDamage | Cost$ 4 R T Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. DeckHas:Ability$Mana.Colorless DeckNeeds:Color$Red SVar:Picture:http://www.wizards.com/global/images/magic/general/blighted_gorge.jpg -Oracle:{T}: Add {C}.\n{4}{R}, {T}, Sacrifice Blighted Gorge: Blighted Gorge deals 2 damage to target creature or player. +Oracle:{T}: Add {C}.\n{4}{R}, {T}, Sacrifice Blighted Gorge: It deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/b/blighted_steppe.txt b/forge-gui/res/cardsfolder/b/blighted_steppe.txt index 6fcc7df462a..3d2d9f310a7 100644 --- a/forge-gui/res/cardsfolder/b/blighted_steppe.txt +++ b/forge-gui/res/cardsfolder/b/blighted_steppe.txt @@ -2,9 +2,9 @@ Name:Blighted Steppe ManaCost:no cost Types:Land A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}. -A:AB$ GainLife | Cost$ 3 W T Sac<1/CARDNAME> | Defined$ You | LifeAmount$ X | References$ X | SpellDescription$ Gain 2 life for each creature you control. +A:AB$ GainLife | Cost$ 3 W T Sac<1/CARDNAME> | Defined$ You | LifeAmount$ X | References$ X | SpellDescription$ You Gain 2 life for each creature you control. SVar:X:Count$TypeYouCtrl.Creature/Times.2 DeckHas:Ability$Mana.Colorless DeckNeeds:Color$White SVar:Picture:http://www.wizards.com/global/images/magic/general/blighted_steppe.jpg -Oracle:{T}: Add {C}.\n{3}{W}, {T}, Sacrifice Blighted Steppe: Gain 2 life for each creature you control. +Oracle:{T}: Add {C}.\n{3}{W}, {T}, Sacrifice Blighted Steppe: You gain 2 life for each creature you control. diff --git a/forge-gui/res/cardsfolder/b/blighted_woodland.txt b/forge-gui/res/cardsfolder/b/blighted_woodland.txt index a999c8a04da..64e87bc6c22 100644 --- a/forge-gui/res/cardsfolder/b/blighted_woodland.txt +++ b/forge-gui/res/cardsfolder/b/blighted_woodland.txt @@ -2,8 +2,8 @@ Name:Blighted Woodland ManaCost:no cost Types:Land A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}. -A:AB$ ChangeZone | Cost$ 3 G T Sac<1/CARDNAME> | Origin$ Library | Destination$ Battlefield | Tapped$ True | ChangeType$ Land.Basic | ChangeNum$ 2 | SpellDescription$ Search your library for two basic land cards, put them onto the battlefield tapped, then shuffle your library. +A:AB$ ChangeZone | Cost$ 3 G T Sac<1/CARDNAME> | Origin$ Library | Destination$ Battlefield | Tapped$ True | ChangeType$ Land.Basic | ChangeNum$ 2 | SpellDescription$ Search your library for up to two basic land cards and put them onto the battlefield tapped. Then shuffle your library. DeckHas:Ability$Mana.Colorless DeckNeeds:Color$Green SVar:Picture:http://www.wizards.com/global/images/magic/general/blighted_woodland.jpg -Oracle:{T}: Add {C}.\n{3}{G}, {T}, Sacrifice Blighted Woodland: Search your library for two basic land cards, put them onto the battlefield tapped, then shuffle your library. +Oracle:{T}: Add {C}.\n{3}{G}, {T}, Sacrifice Blighted Woodland: Search your library for up to two basic land cards and put them onto the battlefield tapped. Then shuffle your library. diff --git a/forge-gui/res/cardsfolder/b/blightning.txt b/forge-gui/res/cardsfolder/b/blightning.txt index 84b1665d374..3dbf533baf3 100644 --- a/forge-gui/res/cardsfolder/b/blightning.txt +++ b/forge-gui/res/cardsfolder/b/blightning.txt @@ -1,7 +1,8 @@ Name:Blightning ManaCost:1 B R Types:Sorcery -A:SP$ DealDamage | Cost$ 1 B R | ValidTgts$ Player | NumDmg$ 3 | SubAbility$ DBDiscard | SpellDescription$ Blightning deals 3 damage to target player. That player discards two cards. -SVar:DBDiscard:DB$Discard | Defined$ Targeted | NumCards$ 2 | Mode$ TgtChoose +A:SP$ DealDamage | Cost$ 1 B R | ValidTgts$ Player,Planeswalker | NumDmg$ 3 | SubAbility$ DBDiscard | SpellDescription$ Blightning deals 3 damage to target player or planeswalker. That player or that planeswalker's controller discards two cards. +SVar:DBDiscard:DB$Discard | Defined$ TargetedPlayer | NumCards$ 2 | Mode$ TgtChoose | SubAbility$ DBDiscard2 +SVar:DBDiscard2:DB$Discard | Defined$ TargetedController | NumCards$ 2 | Mode$ TgtChoose SVar:Picture:http://www.wizards.com/global/images/magic/general/blightning.jpg -Oracle:Blightning deals 3 damage to target player. That player discards two cards. +Oracle:Blightning deals 3 damage to target player or planeswalker. That player or that planeswalker's controller discards two cards. diff --git a/forge-gui/res/cardsfolder/b/blinding_flare.txt b/forge-gui/res/cardsfolder/b/blinding_flare.txt index e106eae2dbd..cf456b37ef8 100644 --- a/forge-gui/res/cardsfolder/b/blinding_flare.txt +++ b/forge-gui/res/cardsfolder/b/blinding_flare.txt @@ -5,4 +5,4 @@ K:Strive:R A:SP$ Pump | Cost$ R | ValidTgts$ Creature | KW$ HIDDEN CARDNAME can't block. | IsCurse$ True | TargetMin$ 0 | TargetMax$ MaxTargets | References$ MaxTargets | SpellDescription$ Any number of target creatures can't block this turn. SVar:MaxTargets:Count$Valid Creature SVar:Picture:http://www.wizards.com/global/images/magic/general/blinding_flare.jpg -Oracle:Strive — Blinding Flare costs {R} more to cast for each target beyond the first.\nAny number of target creatures can't block this turn. +Oracle:Strive — This spell costs {R} more to cast for each target beyond the first.\nAny number of target creatures can't block this turn. diff --git a/forge-gui/res/cardsfolder/b/blinding_souleater.txt b/forge-gui/res/cardsfolder/b/blinding_souleater.txt index 9970a00a3a7..370baa83547 100644 --- a/forge-gui/res/cardsfolder/b/blinding_souleater.txt +++ b/forge-gui/res/cardsfolder/b/blinding_souleater.txt @@ -7,4 +7,4 @@ SVar:RemRandomDeck:True DeckNeeds:Color$white SVar:NonCombatPriority:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/blinding_souleater.jpg -Oracle:{P/W}, {T}: Tap target creature. ({P/W} can be paid with either {W} or 2 life.) +Oracle:{W/P}, {T}: Tap target creature. ({W/P} can be paid with either {W} or 2 life.) diff --git a/forge-gui/res/cardsfolder/b/blistergrub.txt b/forge-gui/res/cardsfolder/b/blistergrub.txt index 1295c8b1209..447a467812c 100644 --- a/forge-gui/res/cardsfolder/b/blistergrub.txt +++ b/forge-gui/res/cardsfolder/b/blistergrub.txt @@ -6,4 +6,4 @@ K:Swampwalk T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigLoseLife | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME is dies, each opponent loses 2 life. SVar:TrigLoseLife:DB$ LoseLife | Defined$ Player.Opponent | LifeAmount$ 2 SVar:Picture:http://www.wizards.com/global/images/magic/general/blistergrub.jpg -Oracle:Swampwalk\nWhen Blistergrub dies, each opponent loses 2 life. +Oracle:Swampwalk (This creature can't be blocked as long as defending player controls a Swamp.)\nWhen Blistergrub dies, each opponent loses 2 life. diff --git a/forge-gui/res/cardsfolder/b/blisterstick_shaman.txt b/forge-gui/res/cardsfolder/b/blisterstick_shaman.txt index a7fbef54b90..1989750fb12 100644 --- a/forge-gui/res/cardsfolder/b/blisterstick_shaman.txt +++ b/forge-gui/res/cardsfolder/b/blisterstick_shaman.txt @@ -2,8 +2,8 @@ Name:Blisterstick Shaman ManaCost:2 R Types:Creature Goblin Shaman PT:2/1 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 1 damage to target creature or player. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 1 damage to any target. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 SVar:PlayMain1:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/blisterstick_shaman.jpg -Oracle:When Blisterstick Shaman enters the battlefield, it deals 1 damage to target creature or player. +Oracle:When Blisterstick Shaman enters the battlefield, it deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/b/blizzard.txt b/forge-gui/res/cardsfolder/b/blizzard.txt index faa9ee90fb8..de5b4ad7cb8 100644 --- a/forge-gui/res/cardsfolder/b/blizzard.txt +++ b/forge-gui/res/cardsfolder/b/blizzard.txt @@ -7,4 +7,4 @@ S:Mode$ CantBeCast | ValidCard$ Card.Self | EffectZone$ All | CheckSVar$ X | SVa SVar:X:Count$Valid Snow.Land+YouCtrl SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/blizzard.jpg -Oracle:Cast Blizzard only if you control a snow land.\nCumulative upkeep {2} (At the beginning of your upkeep, put an age counter on this permanent, then sacrifice it unless you pay its upkeep cost for each age counter on it.)\nCreatures with flying don't untap during their controllers' untap steps. +Oracle:Cast this spell only if you control a snow land.\nCumulative upkeep {2} (At the beginning of your upkeep, put an age counter on this permanent, then sacrifice it unless you pay its upkeep cost for each age counter on it.)\nCreatures with flying don't untap during their controllers' untap steps. diff --git a/forge-gui/res/cardsfolder/b/blockbuster.txt b/forge-gui/res/cardsfolder/b/blockbuster.txt index b2e40ef5ebe..c716aa0ec46 100644 --- a/forge-gui/res/cardsfolder/b/blockbuster.txt +++ b/forge-gui/res/cardsfolder/b/blockbuster.txt @@ -4,4 +4,4 @@ Types:Enchantment PT:6/6 A:AB$ DamageAll | Cost$ 1 R Sac<1/CARDNAME> | ValidCards$ Creature.tapped | ValidPlayers$ Player | NumDmg$ 3 | ValidDescription$ each tapped creature and each player. | SpellDescription$ CARDNAME deals 3 damage to each tapped creature and each player. SVar:Picture:http://www.wizards.com/global/images/magic/general/blockbuster.jpg -Oracle:{1}{R}, Sacrifice Blockbuster: Blockbuster deals 3 damage to each tapped creature and each player. +Oracle:{1}{R}, Sacrifice Blockbuster: It deals 3 damage to each tapped creature and each player. diff --git a/forge-gui/res/cardsfolder/b/blood_divination.txt b/forge-gui/res/cardsfolder/b/blood_divination.txt new file mode 100644 index 00000000000..4fbd5ee5aa0 --- /dev/null +++ b/forge-gui/res/cardsfolder/b/blood_divination.txt @@ -0,0 +1,5 @@ +Name:Blood Divination +ManaCost:3 B +Types:Sorcery +A:SP$ Draw | Cost$ 3 B Sac<1/Creature> | NumCards$ 3 | SpellDescription$ As an additional cost to cast this spell, sacrifice a creature. Draw three cards. +Oracle:As an additional cost to cast this spell, sacrifice a creature.\nDraw three cards. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/b/blood_frenzy.txt b/forge-gui/res/cardsfolder/b/blood_frenzy.txt index 043c3572c24..3f1e2b3df0c 100644 --- a/forge-gui/res/cardsfolder/b/blood_frenzy.txt +++ b/forge-gui/res/cardsfolder/b/blood_frenzy.txt @@ -3,4 +3,4 @@ ManaCost:1 R Types:Instant A:SP$ Pump | Cost$ 1 R | ActivationPhases$ Upkeep,Draw,Main1,BeginCombat,Declare Attackers,Declare Blockers | ValidTgts$ Creature.attacking,Creature.blocking | TgtPrompt$ Select target attacking or blocking creature | NumAtt$ +4 | NumDef$ +0 | AtEOT$ Destroy | SpellDescription$ Cast CARDNAME only before the combat damage step. Target attacking or blocking creature gets +4/+0 until end of turn. Destroy that creature at the beginning of the next end step. SVar:Picture:http://www.wizards.com/global/images/magic/general/blood_frenzy.jpg -Oracle:Cast Blood Frenzy only before the combat damage step.\nTarget attacking or blocking creature gets +4/+0 until end of turn. Destroy that creature at the beginning of the next end step. +Oracle:Cast this spell only before the combat damage step.\nTarget attacking or blocking creature gets +4/+0 until end of turn. Destroy that creature at the beginning of the next end step. diff --git a/forge-gui/res/cardsfolder/b/blood_moon.txt b/forge-gui/res/cardsfolder/b/blood_moon.txt index 1d1d1f105de..344f6a76c96 100644 --- a/forge-gui/res/cardsfolder/b/blood_moon.txt +++ b/forge-gui/res/cardsfolder/b/blood_moon.txt @@ -1,7 +1,7 @@ Name:Blood Moon ManaCost:2 R Types:Enchantment -S:Mode$ Continuous | Affected$ Land.nonBasic | AddType$ Mountain | RemoveSubTypes$ True | RemoveAllAbilities$ True | Description$ Nonbasic lands are Mountains. +S:Mode$ Continuous | Affected$ Land.nonBasic | AddType$ Mountain | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True | Description$ Nonbasic lands are Mountains. SVar:NonStackingEffect:True SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/blood_moon.jpg diff --git a/forge-gui/res/cardsfolder/b/blood_ogre.txt b/forge-gui/res/cardsfolder/b/blood_ogre.txt index 67103bb612f..d89e6c33c18 100644 --- a/forge-gui/res/cardsfolder/b/blood_ogre.txt +++ b/forge-gui/res/cardsfolder/b/blood_ogre.txt @@ -5,4 +5,4 @@ PT:2/2 K:Bloodthirst:1 K:First Strike SVar:Picture:http://www.wizards.com/global/images/magic/general/blood_ogre.jpg -Oracle:Bloodthirst 1 (If an opponent was dealt damage this turn, this creature enters the battlefield with a +1/+1 counter on it.)\nFirst strike +Oracle:Bloodthirst 1 (If an opponent was dealt damage this turn, this creature enters the battlefield with a +1/+1 counter on it.)\nFirst strike (This creature deals combat damage before creatures without first strike.) diff --git a/forge-gui/res/cardsfolder/b/blood_rites.txt b/forge-gui/res/cardsfolder/b/blood_rites.txt index 666fea8bb02..a2ed5c39839 100644 --- a/forge-gui/res/cardsfolder/b/blood_rites.txt +++ b/forge-gui/res/cardsfolder/b/blood_rites.txt @@ -1,8 +1,8 @@ Name:Blood Rites ManaCost:3 R R Types:Enchantment -A:AB$ DealDamage | Cost$ 1 R Sac<1/Creature> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:AB$ DealDamage | Cost$ 1 R Sac<1/Creature> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:NonStackingEffect:True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/blood_rites.jpg -Oracle:{1}{R}, Sacrifice a creature: Blood Rites deals 2 damage to target creature or player. +Oracle:{1}{R}, Sacrifice a creature: Blood Rites deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/b/bloodbraid_elf.txt b/forge-gui/res/cardsfolder/b/bloodbraid_elf.txt index 71565691ee3..09ad26db0b5 100644 --- a/forge-gui/res/cardsfolder/b/bloodbraid_elf.txt +++ b/forge-gui/res/cardsfolder/b/bloodbraid_elf.txt @@ -5,4 +5,4 @@ PT:3/2 K:Haste K:Cascade SVar:Picture:http://www.wizards.com/global/images/magic/general/bloodbraid_elf.jpg -Oracle:Haste\nCascade (When you cast this spell, exile cards from the top of your library until you exile a nonland card that costs less. You may cast it without paying its mana cost. Put the exiled cards on the bottom in a random order.) +Oracle:Haste\nCascade (When you cast this spell, exile cards from the top of your library until you exile a nonland card that costs less. You may cast it without paying its mana cost. Put the exiled cards on the bottom of your library in a random order.) diff --git a/forge-gui/res/cardsfolder/b/bloodhall_priest.txt b/forge-gui/res/cardsfolder/b/bloodhall_priest.txt index 0fe37a27394..baaac95378f 100644 --- a/forge-gui/res/cardsfolder/b/bloodhall_priest.txt +++ b/forge-gui/res/cardsfolder/b/bloodhall_priest.txt @@ -2,11 +2,11 @@ Name:Bloodhall Priest ManaCost:2 B R Types:Creature Vampire Cleric PT:4/4 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | IsPresent$ Card.YouCtrl | PresentZone$ Hand | PresentCompare$ EQ0 | Execute$ TrigDamage | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, if you have no cards in hand, Bloodhall Priest deals 2 damage to target creature or player. -T:Mode$ Attacks | ValidCard$ Card.Self | IsPresent$ Card.YouCtrl | PresentZone$ Hand | PresentCompare$ EQ0 | Execute$ TrigDamage | Secondary$ True | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, if you have no cards in hand, Bloodhall Priest deals 2 damage to target creature or player. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | IsPresent$ Card.YouCtrl | PresentZone$ Hand | PresentCompare$ EQ0 | Execute$ TrigDamage | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, if you have no cards in hand, Bloodhall Priest deals 2 damage to any target. +T:Mode$ Attacks | ValidCard$ Card.Self | IsPresent$ Card.YouCtrl | PresentZone$ Hand | PresentCompare$ EQ0 | Execute$ TrigDamage | Secondary$ True | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, if you have no cards in hand, Bloodhall Priest deals 2 damage to any target. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 SVar:HasAttackEffect:TRUE K:Madness:1 B R DeckHints:Ability$Discard SVar:Picture:http://www.wizards.com/global/images/magic/general/bloodhall_priest.jpg -Oracle:Whenever Bloodhall Priest enters the battlefield or attacks, if you have no cards in hand, Bloodhall Priest deals 2 damage to target creature or player.\nMadness {1}{B}{R} (If you discard this card, discard it into exile. When you do, cast it for its madness cost or put it into your graveyard.) +Oracle:Whenever Bloodhall Priest enters the battlefield or attacks, if you have no cards in hand, Bloodhall Priest deals 2 damage to any target.\nMadness {1}{B}{R} (If you discard this card, discard it into exile. When you do, cast it for its madness cost or put it into your graveyard.) diff --git a/forge-gui/res/cardsfolder/b/bloodlust_inciter.txt b/forge-gui/res/cardsfolder/b/bloodlust_inciter.txt index 18b565c7ae5..39a20529058 100644 --- a/forge-gui/res/cardsfolder/b/bloodlust_inciter.txt +++ b/forge-gui/res/cardsfolder/b/bloodlust_inciter.txt @@ -4,4 +4,4 @@ Types:Creature Human Warrior PT:1/1 A:AB$ Pump | Cost$ T | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ Haste | SpellDescription$ Target creature gains haste until end of turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/bloodlust_inciter.jpg -Oracle:{T}: Target creature gains haste until end of turn. \ No newline at end of file +Oracle:{T}: Target creature gains haste until end of turn. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/b/bloodpyre_elemental.txt b/forge-gui/res/cardsfolder/b/bloodpyre_elemental.txt index a1f63eddda4..8f4a58ea0ef 100644 --- a/forge-gui/res/cardsfolder/b/bloodpyre_elemental.txt +++ b/forge-gui/res/cardsfolder/b/bloodpyre_elemental.txt @@ -4,4 +4,4 @@ Types:Creature Elemental PT:4/1 A:AB$ DealDamage | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 4 | SorcerySpeed$ True | SpellDescription$ CARDNAME deals 4 damage to target creature. Activate this ability only any time you could cast a sorcery. SVar:Picture:http://www.wizards.com/global/images/magic/general/bloodpyre_elemental.jpg -Oracle:Sacrifice Bloodpyre Elemental: Bloodpyre Elemental deals 4 damage to target creature. Activate this ability only any time you could cast a sorcery. +Oracle:Sacrifice Bloodpyre Elemental: It deals 4 damage to target creature. Activate this ability only any time you could cast a sorcery. diff --git a/forge-gui/res/cardsfolder/b/bloodshot_cyclops.txt b/forge-gui/res/cardsfolder/b/bloodshot_cyclops.txt index 9c5746d962c..a5126f81fb0 100644 --- a/forge-gui/res/cardsfolder/b/bloodshot_cyclops.txt +++ b/forge-gui/res/cardsfolder/b/bloodshot_cyclops.txt @@ -2,8 +2,8 @@ Name:Bloodshot Cyclops ManaCost:5 R Types:Creature Cyclops Giant PT:4/4 -A:AB$ DealDamage | Cost$ T Sac<1/Creature> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to the sacrificed creature's power to target creature or player. +A:AB$ DealDamage | Cost$ T Sac<1/Creature> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to the sacrificed creature's power to any target. SVar:X:Sacrificed$CardPower SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/bloodshot_cyclops.jpg -Oracle:{T}, Sacrifice a creature: Bloodshot Cyclops deals damage equal to the sacrificed creature's power to target creature or player. +Oracle:{T}, Sacrifice a creature: Bloodshot Cyclops deals damage equal to the sacrificed creature's power to any target. diff --git a/forge-gui/res/cardsfolder/b/bloodtracker.txt b/forge-gui/res/cardsfolder/b/bloodtracker.txt new file mode 100644 index 00000000000..20f4d1ab13e --- /dev/null +++ b/forge-gui/res/cardsfolder/b/bloodtracker.txt @@ -0,0 +1,10 @@ +Name:Bloodtracker +ManaCost:3 B +Types:Creature Vampire Wizard +PT:2/2 +K:Flying +A:AB$ PutCounter | Cost$ B PayLife<2> | CounterType$ P1P1 | CounterNum$ 1 | SpellDescription$ Put a +1/+1 counter on CARDNAME. +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME leaves the battlefield, draw a card for each +1/+1 counter on it. +SVar:TrigDraw:DB$Draw | Defined$ You | NumCards$ X | References$ X +SVar:X:TriggeredCard$CardCounters.P1P1 +Oracle:Flying\n{B}, Pay 2 life: Put a +1/+1 counter on Bloodtracker.\nWhen Bloodtracker leaves the battlefield, draw a card for each +1/+1 counter on it. diff --git a/forge-gui/res/cardsfolder/b/blossom_dryad.txt b/forge-gui/res/cardsfolder/b/blossom_dryad.txt index eaa7f3d5546..e669a372b8a 100644 --- a/forge-gui/res/cardsfolder/b/blossom_dryad.txt +++ b/forge-gui/res/cardsfolder/b/blossom_dryad.txt @@ -4,4 +4,4 @@ Types:Creature Dryad PT:2/2 A:AB$ Untap | Cost$ T | ValidTgts$ Land | TgtPrompt$ Select target land | AILogic$ PoolExtraMana | SpellDescription$ Untap target land. SVar:Picture:http://www.wizards.com/global/images/magic/general/blossom_dryad.jpg -Oracle:{T}: Untap target land. \ No newline at end of file +Oracle:{T}: Untap target land. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/b/blurred_mongoose.txt b/forge-gui/res/cardsfolder/b/blurred_mongoose.txt index 7ec14caaa4d..6b960f05c1c 100644 --- a/forge-gui/res/cardsfolder/b/blurred_mongoose.txt +++ b/forge-gui/res/cardsfolder/b/blurred_mongoose.txt @@ -5,4 +5,4 @@ PT:2/1 K:CARDNAME can't be countered. K:Shroud SVar:Picture:http://www.wizards.com/global/images/magic/general/blurred_mongoose.jpg -Oracle:Blurred Mongoose can't be countered.\nShroud (This creature can't be the target of spells or abilities.) +Oracle:This spell can't be countered.\nShroud (This creature can't be the target of spells or abilities.) diff --git a/forge-gui/res/cardsfolder/b/board_the_weatherlight.txt b/forge-gui/res/cardsfolder/b/board_the_weatherlight.txt index 7cc4b604b78..5fe71617305 100644 --- a/forge-gui/res/cardsfolder/b/board_the_weatherlight.txt +++ b/forge-gui/res/cardsfolder/b/board_the_weatherlight.txt @@ -2,4 +2,4 @@ Name:Board the Weatherlight ManaCost:1 W Types:Sorcery A:SP$ Dig | Cost$ 1 W | DigNum$ 5 | ChangeNum$ 1 | Optional$ True | ForceRevealToController$ True | ChangeValid$ Card.Historic | RestRandomOrder$ True | SpellDescription$ Look at the top five cards of your library. You may reveal a historic card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. (Artifacts, legendaries, and Sagas are historic.) -Oracle:Look at the top five cards of your library. You may reveal a historic card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. (Artifacts, legendaries, and Sagas are historic.) +Oracle:Look at the top five cards of your library. You may reveal a historic card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. (Artifacts, legendaries, and Sagas are historic.) diff --git a/forge-gui/res/cardsfolder/b/body_double.txt b/forge-gui/res/cardsfolder/b/body_double.txt index 97228a15caa..b0e5e8033bd 100644 --- a/forge-gui/res/cardsfolder/b/body_double.txt +++ b/forge-gui/res/cardsfolder/b/body_double.txt @@ -2,8 +2,7 @@ Name:Body Double ManaCost:4 U Types:Creature Shapeshifter PT:0/0 -K:ETBReplacement:Copy:ChooseCreature:Optional -SVar:ChooseCreature:DB$ ChooseCard | Defined$ You | Amount$ 1 | Choices$ Creature | ChoiceZone$ Graveyard | SubAbility$ DBCopy | RememberChosen$ True | AILogic$ AtLeast1 | SpellDescription$ You may have Body Double enter the battlefield as a copy of any creature card in a graveyard. -SVar:DBCopy:DB$ Clone | Defined$ Remembered +K:ETBReplacement:Copy:DBCopy:Optional +SVar:DBCopy:DB$ Clone | Choices$ Creature.Other | ChoiceZone$ Graveyard | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of any artifact on the battlefield. SVar:Picture:http://www.wizards.com/global/images/magic/general/body_double.jpg Oracle:You may have Body Double enter the battlefield as a copy of any creature card in a graveyard. diff --git a/forge-gui/res/cardsfolder/b/bog_down.txt b/forge-gui/res/cardsfolder/b/bog_down.txt index 44e02155f7b..381fcab0669 100644 --- a/forge-gui/res/cardsfolder/b/bog_down.txt +++ b/forge-gui/res/cardsfolder/b/bog_down.txt @@ -5,4 +5,4 @@ K:Kicker:Sac<2/Land> A:SP$ Discard | Cost$ 2 B | ValidTgts$ Player | TgtPrompt$ Choose a player | NumCards$ WasKicked | References$ WasKicked | Mode$ TgtChoose | SpellDescription$ Target player discards two cards. If CARDNAME was kicked, that player discards three cards instead. SVar:WasKicked:Count$Kicked.3.2 SVar:Picture:http://www.wizards.com/global/images/magic/general/bog_down.jpg -Oracle:Kicker—Sacrifice two lands. (You may sacrifice two lands in addition to any other costs as you cast this spell.)\nTarget player discards two cards. If Bog Down was kicked, that player discards three cards instead. +Oracle:Kicker—Sacrifice two lands. (You may sacrifice two lands in addition to any other costs as you cast this spell.)\nTarget player discards two cards. If this spell was kicked, that player discards three cards instead. diff --git a/forge-gui/res/cardsfolder/b/bog_imp.txt b/forge-gui/res/cardsfolder/b/bog_imp.txt index e8ce437319f..70dfd53b686 100644 --- a/forge-gui/res/cardsfolder/b/bog_imp.txt +++ b/forge-gui/res/cardsfolder/b/bog_imp.txt @@ -4,4 +4,4 @@ Types:Creature Imp PT:1/1 K:Flying SVar:Picture:http://resources.wizards.com/magic/cards/9ed/en-us/card83010.jpg -Oracle:Flying \ No newline at end of file +Oracle:Flying (This creature can't be blocked except by creatures with flying or reach.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/b/bog_smugglers.txt b/forge-gui/res/cardsfolder/b/bog_smugglers.txt index 1c7e3a5723a..fa83775bfed 100644 --- a/forge-gui/res/cardsfolder/b/bog_smugglers.txt +++ b/forge-gui/res/cardsfolder/b/bog_smugglers.txt @@ -4,4 +4,4 @@ Types:Creature Human Mercenary PT:2/2 K:Swampwalk SVar:Picture:http://resources.wizards.com/magic/cards/mm/en-us/card19598.jpg -Oracle:Swampwalk +Oracle:Swampwalk (This creature can't be blocked as long as defending player controls a Swamp.) diff --git a/forge-gui/res/cardsfolder/b/bog_strider_ash.txt b/forge-gui/res/cardsfolder/b/bog_strider_ash.txt index ac55d4f997f..03ef5c42197 100644 --- a/forge-gui/res/cardsfolder/b/bog_strider_ash.txt +++ b/forge-gui/res/cardsfolder/b/bog_strider_ash.txt @@ -6,4 +6,4 @@ K:Swampwalk T:Mode$ SpellCast | ValidCard$ Goblin | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigGainLife | TriggerDescription$ Whenever a player casts a Goblin spell, you may pay {G}. If you do, you gain 2 life. SVar:TrigGainLife:AB$GainLife | Cost$ G | Defined$ You | LifeAmount$ 2 SVar:Picture:http://www.wizards.com/global/images/magic/general/bog_strider_ash.jpg -Oracle:Swampwalk\nWhenever a player casts a Goblin spell, you may pay {G}. If you do, you gain 2 life. +Oracle:Swampwalk (This creature can't be blocked as long as defending player controls a Swamp.)\nWhenever a player casts a Goblin spell, you may pay {G}. If you do, you gain 2 life. diff --git a/forge-gui/res/cardsfolder/b/bog_tatters.txt b/forge-gui/res/cardsfolder/b/bog_tatters.txt index 7125c5301e3..7cf74a5f1bf 100644 --- a/forge-gui/res/cardsfolder/b/bog_tatters.txt +++ b/forge-gui/res/cardsfolder/b/bog_tatters.txt @@ -4,4 +4,4 @@ Types:Creature Wraith PT:4/2 K:Swampwalk SVar:Picture:http://www.wizards.com/global/images/magic/general/bog_tatters.jpg -Oracle:Swampwalk +Oracle:Swampwalk (This creature can't be blocked as long as defending player controls a Swamp.) diff --git a/forge-gui/res/cardsfolder/b/bogardan_hellkite.txt b/forge-gui/res/cardsfolder/b/bogardan_hellkite.txt index 29115b1be3a..21a339472c9 100644 --- a/forge-gui/res/cardsfolder/b/bogardan_hellkite.txt +++ b/forge-gui/res/cardsfolder/b/bogardan_hellkite.txt @@ -4,7 +4,7 @@ Types:Creature Dragon PT:5/5 K:Flash K:Flying -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ Dmg1 | TriggerDescription$ Whenever CARDNAME enters the battlefield, it deals 5 damage divided as you choose among any number of target creatures and/or players. -SVar:Dmg1:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature to distribute damage to | NumDmg$ 5 | TargetMin$ 1 | TargetMax$ 5 | DividedAsYouChoose$ 5 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ Dmg1 | TriggerDescription$ Whenever CARDNAME enters the battlefield, it deals 5 damage divided as you choose among any number of targets. +SVar:Dmg1:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to distribute damage to | NumDmg$ 5 | TargetMin$ 1 | TargetMax$ 5 | DividedAsYouChoose$ 5 SVar:Picture:http://www.wizards.com/global/images/magic/general/bogardan_hellkite.jpg -Oracle:Flash\nFlying\nWhen Bogardan Hellkite enters the battlefield, it deals 5 damage divided as you choose among any number of target creatures and/or players. +Oracle:Flash\nFlying\nWhen Bogardan Hellkite enters the battlefield, it deals 5 damage divided as you choose among any number of targets. diff --git a/forge-gui/res/cardsfolder/b/boggart_arsonists.txt b/forge-gui/res/cardsfolder/b/boggart_arsonists.txt index b8fc2ef8bca..5b82dcbd521 100644 --- a/forge-gui/res/cardsfolder/b/boggart_arsonists.txt +++ b/forge-gui/res/cardsfolder/b/boggart_arsonists.txt @@ -6,4 +6,4 @@ K:Plainswalk A:AB$ Destroy | Cost$ 2 R Sac<1/CARDNAME> | ValidTgts$ Scarecrow,Plains | TgtPrompt$ Select target Scarecrow or Plains | SpellDescription$ Destroy target Scarecrow or Plains. SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/boggart_arsonists.jpg -Oracle:Plainswalk\n{2}{R}, Sacrifice Boggart Arsonists: Destroy target Scarecrow or Plains. +Oracle:Plainswalk (This creature can't be blocked as long as defending player controls a Plains.)\n{2}{R}, Sacrifice Boggart Arsonists: Destroy target Scarecrow or Plains. diff --git a/forge-gui/res/cardsfolder/b/boggart_loggers.txt b/forge-gui/res/cardsfolder/b/boggart_loggers.txt index 7b1d27b468b..b5ee94655f9 100644 --- a/forge-gui/res/cardsfolder/b/boggart_loggers.txt +++ b/forge-gui/res/cardsfolder/b/boggart_loggers.txt @@ -5,4 +5,4 @@ PT:2/1 K:Forestwalk A:AB$ Destroy | Cost$ 2 B Sac<1/CARDNAME> | ValidTgts$ Treefolk,Forest | TgtPrompt$ Select target Treefolk or Forest | SpellDescription$ Destroy target Treefolk or Forest. SVar:Picture:http://www.wizards.com/global/images/magic/general/boggart_loggers.jpg -Oracle:Forestwalk\n{2}{B}, Sacrifice Boggart Loggers: Destroy target Treefolk or Forest. +Oracle:Forestwalk (This creature can't be blocked as long as defending player controls a Forest.)\n{2}{B}, Sacrifice Boggart Loggers: Destroy target Treefolk or Forest. diff --git a/forge-gui/res/cardsfolder/b/boggart_shenanigans.txt b/forge-gui/res/cardsfolder/b/boggart_shenanigans.txt index 82f7feb646c..76ff7e2f576 100644 --- a/forge-gui/res/cardsfolder/b/boggart_shenanigans.txt +++ b/forge-gui/res/cardsfolder/b/boggart_shenanigans.txt @@ -1,8 +1,8 @@ Name:Boggart Shenanigans ManaCost:2 R Types:Tribal Enchantment Goblin -T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Goblin.Other+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDamage | OptionalDecider$ You | TriggerDescription$ Whenever another Goblin you control is put into a graveyard from the battlefield, you may have CARDNAME deal 1 damage to target player. -SVar:TrigDamage:DB$DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 1 +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Goblin.Other+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDamage | OptionalDecider$ You | TriggerDescription$ Whenever another Goblin you control is put into a graveyard from the battlefield, you may have CARDNAME deal 1 damage to target player or planeswalker. +SVar:TrigDamage:DB$DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker| NumDmg$ 1 SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/boggart_shenanigans.jpg -Oracle:Whenever another Goblin you control is put into a graveyard from the battlefield, you may have Boggart Shenanigans deal 1 damage to target player. +Oracle:Whenever another Goblin you control is put into a graveyard from the battlefield, you may have Boggart Shenanigans deal 1 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/b/bogstomper.txt b/forge-gui/res/cardsfolder/b/bogstomper.txt new file mode 100644 index 00000000000..d9039715b11 --- /dev/null +++ b/forge-gui/res/cardsfolder/b/bogstomper.txt @@ -0,0 +1,5 @@ +Name:Bogstomper +ManaCost:4 B B +Types:Creature Beast +PT:6/5 +Oracle: \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/b/bold_defense.txt b/forge-gui/res/cardsfolder/b/bold_defense.txt index 6d3ee886076..88ad73cf54b 100644 --- a/forge-gui/res/cardsfolder/b/bold_defense.txt +++ b/forge-gui/res/cardsfolder/b/bold_defense.txt @@ -6,4 +6,4 @@ A:SP$ PumpAll | Cost$ 2 W | ValidCards$ Creature.YouCtrl | NumAtt$ WasKicked | N SVar:Kicked:DB$ PumpAll | ValidCards$ Creature.YouCtrl | KW$ First Strike | Condition$ Kicked | ConditionDescription$ If it was kicked, SVar:WasKicked:Count$Kicked.2.1 SVar:Picture:http://www.wizards.com/global/images/magic/general/bold_defense.jpg -Oracle:Kicker {3}{W} (You may pay an additional {3}{W} as you cast this spell.)\nCreatures you control get +1/+1 until end of turn. If Bold Defense was kicked, instead creatures you control get +2/+2 and gain first strike until end of turn. +Oracle:Kicker {3}{W} (You may pay an additional {3}{W} as you cast this spell.)\nCreatures you control get +1/+1 until end of turn. If this spell was kicked, instead creatures you control get +2/+2 and gain first strike until end of turn. diff --git a/forge-gui/res/cardsfolder/b/bolt_of_keranos.txt b/forge-gui/res/cardsfolder/b/bolt_of_keranos.txt index bccbc8a506a..36f048d8203 100644 --- a/forge-gui/res/cardsfolder/b/bolt_of_keranos.txt +++ b/forge-gui/res/cardsfolder/b/bolt_of_keranos.txt @@ -1,7 +1,7 @@ Name:Bolt of Keranos ManaCost:1 R R Types:Sorcery -A:SP$ DealDamage | Cost$ 1 R R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SubAbility$ DBScry | SpellDescription$ CARDNAME deals 3 damage to target creature or player. Scry 1. +A:SP$ DealDamage | Cost$ 1 R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SubAbility$ DBScry | SpellDescription$ CARDNAME deals 3 damage to any target. Scry 1. SVar:DBScry:DB$ Scry | ScryNum$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/bolt_of_keranos.jpg -Oracle:Bolt of Keranos deals 3 damage to target creature or player. Scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) +Oracle:Bolt of Keranos deals 3 damage to any target. Scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) diff --git a/forge-gui/res/cardsfolder/b/bombard.txt b/forge-gui/res/cardsfolder/b/bombard.txt index 8760df5db7f..b597bc878eb 100644 --- a/forge-gui/res/cardsfolder/b/bombard.txt +++ b/forge-gui/res/cardsfolder/b/bombard.txt @@ -3,4 +3,4 @@ ManaCost:2 R Types:Instant A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target creature. SVar:Picture:http://www.wizards.com/global/images/magic/general/bombard.jpg -Oracle:Bombard deals 4 damage to target creature. \ No newline at end of file +Oracle:Bombard deals 4 damage to target creature. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/b/bomber_corps.txt b/forge-gui/res/cardsfolder/b/bomber_corps.txt index e4988a02501..00d80847e77 100644 --- a/forge-gui/res/cardsfolder/b/bomber_corps.txt +++ b/forge-gui/res/cardsfolder/b/bomber_corps.txt @@ -2,8 +2,8 @@ Name:Bomber Corps ManaCost:1 R Types:Creature Human Soldier PT:1/2 -T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigDmg | CheckSVar$ BattalionTest | NoResolvingCheck$ True | SVarCompare$ GE2 | TriggerDescription$ Battalion — Whenever CARDNAME and at least two other creatures attack, CARDNAME deals 1 damage to target creature or player. -SVar:TrigDmg:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 +T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigDmg | CheckSVar$ BattalionTest | NoResolvingCheck$ True | SVarCompare$ GE2 | TriggerDescription$ Battalion — Whenever CARDNAME and at least two other creatures attack, CARDNAME deals 1 damage to any target. +SVar:TrigDmg:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 SVar:BattalionTest:Count$Valid Creature.attacking+Other SVar:Picture:http://www.wizards.com/global/images/magic/general/bomber_corps.jpg -Oracle:Battalion — Whenever Bomber Corps and at least two other creatures attack, Bomber Corps deals 1 damage to target creature or player. +Oracle:Battalion — Whenever Bomber Corps and at least two other creatures attack, Bomber Corps deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/b/bond_of_agony.txt b/forge-gui/res/cardsfolder/b/bond_of_agony.txt index e1d4e29efe5..1d3d1b05988 100644 --- a/forge-gui/res/cardsfolder/b/bond_of_agony.txt +++ b/forge-gui/res/cardsfolder/b/bond_of_agony.txt @@ -5,4 +5,4 @@ A:SP$ LoseLife | Cost$ X B PayLife | Defined$ Player.Other | LifeAmount$ X | SVar:X:Count$xPaid SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/bond_of_agony.jpg -Oracle:As an additional cost to cast Bond of Agony, pay X life.\nEach other player loses X life. +Oracle:As an additional cost to cast this spell, pay X life.\nEach other player loses X life. diff --git a/forge-gui/res/cardsfolder/b/bone_dragon.txt b/forge-gui/res/cardsfolder/b/bone_dragon.txt new file mode 100644 index 00000000000..93d8f97398c --- /dev/null +++ b/forge-gui/res/cardsfolder/b/bone_dragon.txt @@ -0,0 +1,7 @@ +Name:Bone Dragon +ManaCost:3 B B +Types:Creature Dragon Skeleton +PT:5/4 +K:Flying +A:AB$ ChangeZone | Cost$ 3 B B ExileFromGrave<7/Other> | Origin$ Graveyard | Destination$ Battlefield | ActivationZone$ Graveyard | SpellDescription$ Return CARDNAME from your graveyard to the battlefield. +Oracle:Flying\n{3}{B}{B}, Exile 7 other cards from your graveyard: Return CARDNAME from your graveyard to the battlefield. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/b/bone_picker.txt b/forge-gui/res/cardsfolder/b/bone_picker.txt index f9a338c33d7..9075f85292c 100644 --- a/forge-gui/res/cardsfolder/b/bone_picker.txt +++ b/forge-gui/res/cardsfolder/b/bone_picker.txt @@ -7,4 +7,4 @@ SVar:X:Count$Morbid.1.0 K:Flying K:Deathtouch SVar:Picture:http://www.wizards.com/global/images/magic/general/bone_picker.jpg -Oracle:Bone Picker costs {3} less to cast if a creature died this turn.\nFlying, deathtouch +Oracle:This spell costs {3} less to cast if a creature died this turn.\nFlying, deathtouch diff --git a/forge-gui/res/cardsfolder/b/bone_splinters.txt b/forge-gui/res/cardsfolder/b/bone_splinters.txt index 18e166deda5..50a4c06b097 100644 --- a/forge-gui/res/cardsfolder/b/bone_splinters.txt +++ b/forge-gui/res/cardsfolder/b/bone_splinters.txt @@ -4,4 +4,4 @@ Types:Sorcery A:SP$ Destroy | Cost$ B Sac<1/Creature> | ValidTgts$ Creature | TgtPrompt$ Select target creature | SpellDescription$ Destroy target creature. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/bone_splinters.jpg -Oracle:As an additional cost to cast Bone Splinters, sacrifice a creature.\nDestroy target creature. +Oracle:As an additional cost to cast this spell, sacrifice a creature.\nDestroy target creature. diff --git a/forge-gui/res/cardsfolder/b/bonehoard.txt b/forge-gui/res/cardsfolder/b/bonehoard.txt index fe4a9fbdcef..9605af3189a 100644 --- a/forge-gui/res/cardsfolder/b/bonehoard.txt +++ b/forge-gui/res/cardsfolder/b/bonehoard.txt @@ -8,4 +8,4 @@ SVar:X:Count$TypeInAllYards.Creature SVar:NeedsToPlayVar:X GE1 DeckHas:Ability$Token SVar:Picture:http://www.wizards.com/global/images/magic/general/bonehoard.jpg -Oracle:Living weapon (When this Equipment enters the battlefield, create a 0/0 black Germ creature token, then attach this Equipment to it.)\nEquipped creature gets +X/+X, where X is the number of creature cards in all graveyards.\nEquip {2} +Oracle:Living weapon (When this Equipment enters the battlefield, create a 0/0 black Germ creature token, then attach this to it.)\nEquipped creature gets +X/+X, where X is the number of creature cards in all graveyards.\nEquip {2} diff --git a/forge-gui/res/cardsfolder/b/bonethorn_valesk.txt b/forge-gui/res/cardsfolder/b/bonethorn_valesk.txt index 2d9547fc0e3..e1a7903a569 100644 --- a/forge-gui/res/cardsfolder/b/bonethorn_valesk.txt +++ b/forge-gui/res/cardsfolder/b/bonethorn_valesk.txt @@ -2,7 +2,7 @@ Name:Bonethorn Valesk ManaCost:4 R Types:Creature Beast PT:4/2 -T:Mode$ TurnFaceUp | ValidCard$ Permanent | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever a permanent is turned face up, CARDNAME deals 1 damage to target creature or player. -SVar:TrigDamage:DB$DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 +T:Mode$ TurnFaceUp | ValidCard$ Permanent | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever a permanent is turned face up, CARDNAME deals 1 damage to any target. +SVar:TrigDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/bonethorn_valesk.jpg -Oracle:Whenever a permanent is turned face up, Bonethorn Valesk deals 1 damage to target creature or player. +Oracle:Whenever a permanent is turned face up, Bonethorn Valesk deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/b/bonfire_of_the_damned.txt b/forge-gui/res/cardsfolder/b/bonfire_of_the_damned.txt index 16a08a72aa8..2ae0744f85d 100644 --- a/forge-gui/res/cardsfolder/b/bonfire_of_the_damned.txt +++ b/forge-gui/res/cardsfolder/b/bonfire_of_the_damned.txt @@ -1,8 +1,10 @@ Name:Bonfire of the Damned ManaCost:X X R Types:Sorcery -A:SP$ DamageAll | Cost$ X X R | NumDmg$ X | ValidTgts$ Player | TgtPrompt$ Select a player | ValidCards$ Creature | ValidPlayers$ Targeted | ValidDescription$ target player and each creature they control. | References$ X | SpellDescription$ CARDNAME deals X damage to target player and each creature they control. +A:SP$ DealDamage | Cost$ X X R | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select a player or planeswalker | NumDmg$ X | References$ X | SubAbility$ DmgAll | DamageMap$ True | SpellDescription$ CARDNAME deals X damage to target player or planeswalker and each creature that player or that planeswalker's controller controls. +SVar:DmgAll:DB$ DamageAll | NumDmg$ X | References$ X | ValidCards$ Creature.ControlledBy TargetedOrController | SubAbility$ DBDamageResolve +SVar:DBDamageResolve:DB$ DamageResolve K:Miracle:X R SVar:X:Count$xPaid SVar:Picture:http://www.wizards.com/global/images/magic/general/bonfire_of_the_damned.jpg -Oracle:Bonfire of the Damned deals X damage to target player and each creature they control.\nMiracle {X}{R} (You may cast this card for its miracle cost when you draw it if it's the first card you drew this turn.) +Oracle:Bonfire of the Damned deals X damage to target player or planeswalker and each creature that player or that planeswalker's controller controls.\nMiracle {X}{R} (You may cast this card for its miracle cost when you draw it if it's the first card you drew this turn.) diff --git a/forge-gui/res/cardsfolder/b/bonus_round.txt b/forge-gui/res/cardsfolder/b/bonus_round.txt new file mode 100644 index 00000000000..72f8e8d2a40 --- /dev/null +++ b/forge-gui/res/cardsfolder/b/bonus_round.txt @@ -0,0 +1,10 @@ +Name:Bonus Round +ManaCost:1 R R +Types:Sorcery +A:SP$ Effect | Cost$ 1 R R | Name$ Bonus Round Effect | Triggers$ TrigSpellCast | SVars$ TrigCopySpell | SpellDescription$ Until end of turn, whenever a player casts an instant or sorcery spell, that player copies it and may choose new targets for the copy. +SVar:TrigSpellCast:Mode$ SpellCast | ValidCard$ Instant,Sorcery | TriggerZones$ Command | ValidActivatingPlayer$ Player | Execute$ TrigCopySpell | TriggerDescription$ Until end of turn, whenever a player casts an instant or sorcery spell, that player copies it and may choose new targets for the copy. +SVar:TrigCopySpell:DB$ CopySpellAbility | Defined$ TriggeredSpellAbility | AILogic$ Always | Controller$ TriggeredCardController +DeckNeeds:Type$Instant|Sorcery +SVar:RemRandomDeck:True +SVar:PlayMain1:TRUE +Oracle:Until end of turn, whenever a player casts an instant or sorcery spell, that player copies it and may choose new targets for the copy. diff --git a/forge-gui/res/cardsfolder/b/boon_of_emrakul.txt b/forge-gui/res/cardsfolder/b/boon_of_emrakul.txt index d789df2ab32..78d3e49388d 100644 --- a/forge-gui/res/cardsfolder/b/boon_of_emrakul.txt +++ b/forge-gui/res/cardsfolder/b/boon_of_emrakul.txt @@ -5,4 +5,4 @@ K:Enchant creature A:SP$ Attach | Cost$ 2 B | ValidTgts$ Creature | AILogic$ Pump S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 3 | AddToughness$ -3 | Description$ Enchanted creature gets +3/-3. SVar:Picture:http://www.wizards.com/global/images/magic/general/boon_of_emrakul.jpg -Oracle:Enchant creature\nEnchanted creature gets +3/-3. +Oracle:Enchant creature\nEnchanted creature gets +3/-3. diff --git a/forge-gui/res/cardsfolder/b/borborygmos_enraged.txt b/forge-gui/res/cardsfolder/b/borborygmos_enraged.txt index 7e58d1542aa..dae0452151f 100644 --- a/forge-gui/res/cardsfolder/b/borborygmos_enraged.txt +++ b/forge-gui/res/cardsfolder/b/borborygmos_enraged.txt @@ -5,6 +5,6 @@ PT:7/6 K:Trample T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigDig | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, reveal the top three cards of your library. Put all land cards revealed this way into your hand and the rest into your graveyard. SVar:TrigDig:DB$ Dig | DigNum$ 3 | Defined$ You | Reveal$ True | ChangeNum$ All | ChangeValid$ Land | DestinationZone2$ Graveyard | SpellDescription$ Reveal the top three cards of your library. Put all land cards revealed this way into your hand and the rest into your graveyard. -A:AB$ DealDamage | Cost$ Discard<1/Land> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. +A:AB$ DealDamage | Cost$ Discard<1/Land> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/borborygmos_enraged.jpg -Oracle:Trample\nWhenever Borborygmos Enraged deals combat damage to a player, reveal the top three cards of your library. Put all land cards revealed this way into your hand and the rest into your graveyard.\nDiscard a land card: Borborygmos Enraged deals 3 damage to target creature or player. +Oracle:Trample\nWhenever Borborygmos Enraged deals combat damage to a player, reveal the top three cards of your library. Put all land cards revealed this way into your hand and the rest into your graveyard.\nDiscard a land card: Borborygmos Enraged deals 3 damage to any target. diff --git a/forge-gui/res/cardsfolder/b/borderland_ranger.txt b/forge-gui/res/cardsfolder/b/borderland_ranger.txt index 3884000f5dd..b6956b6920c 100644 --- a/forge-gui/res/cardsfolder/b/borderland_ranger.txt +++ b/forge-gui/res/cardsfolder/b/borderland_ranger.txt @@ -2,7 +2,7 @@ Name:Borderland Ranger ManaCost:2 G Types:Creature Human Scout PT:2/2 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Self | Execute$ TrigChange | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters the battlefield, you may search your library for a basic land card, reveal it, put it into your hand, then shuffle your library. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Self | Execute$ TrigChange | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters the battlefield, you may search your library for a basic land card, reveal it, and put it into your hand. If you do, shuffle your library. SVar:TrigChange:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Land.Basic | ChangeNum$ 1 | ShuffleNonMandatory$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/borderland_ranger.jpg -Oracle:When Borderland Ranger enters the battlefield, you may search your library for a basic land card, reveal it, put it into your hand, then shuffle your library. +Oracle:When Borderland Ranger enters the battlefield, you may search your library for a basic land card, reveal it, and put it into your hand. If you do, shuffle your library. diff --git a/forge-gui/res/cardsfolder/b/boreas_charger.txt b/forge-gui/res/cardsfolder/b/boreas_charger.txt new file mode 100644 index 00000000000..2bc19f99a2a --- /dev/null +++ b/forge-gui/res/cardsfolder/b/boreas_charger.txt @@ -0,0 +1,14 @@ +Name:Boreas Charger +ManaCost:2 W +Types:Creature Pegasus +PT:2/1 +K:Flying +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ TrigChooseOpp | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME leaves the battlefield, choose an opponent who controls more lands than you. Search your library for a number of Plains cards equal to the difference and reveal them. Put one of them onto the battlefield tapped and the rest into your hand. Then shuffle your library. +SVar:TrigChooseOpp:DB$ ChoosePlayer | Defined$ You | Choices$ Player.Opponent+withMoreLandsThanYou | RememberChosen$ True | SubAbility$ TrigSearchHand +SVar:TrigSearchHand:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Plains.YouCtrl | ChangeNum$ Z | References$ X,Y,Z | NoShuffle$ True | ConditionCheckSVar$ X | ConditionSVarCompare$ GE2 | StackDescription$ None | SubAbility$ TrigSearchPlay +SVar:TrigSearchPlay:DB$ ChangeZone | Origin$ Library | Destination$ Battlefield | ChangeType$ Plains.YouCtrl | ChangeNum$ 1 | StackDescription$ None | NoLooking$ True | Tapped$ True | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosen$ True +SVar:X:Count$Valid Land.RememberedPlayerCtrl/Minus.Y +SVar:Y:Count$Valid Land.YouCtrl +SVar:Z:SVar$X/Minus.1 +Oracle:Flying\nWhen Boreas Charger leaves the battlefield, choose an opponent who controls more lands than you. Search your library for a number of Plains cards equal to the difference and reveal them. Put one of them onto the battlefield tapped and the rest into your hand. Then shuffle your library. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/b/boros_charm.txt b/forge-gui/res/cardsfolder/b/boros_charm.txt index e611d03f163..be5cd2add55 100644 --- a/forge-gui/res/cardsfolder/b/boros_charm.txt +++ b/forge-gui/res/cardsfolder/b/boros_charm.txt @@ -2,8 +2,8 @@ Name:Boros Charm ManaCost:R W Types:Instant A:SP$ Charm | Cost$ R W | Choices$ DealDmg,PumpAll,PumpDouble | CharmNum$ 1 -SVar:DealDmg:DB$ DealDamage | ValidTgts$ Player | AILogic$ ChoiceBurn | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target player. +SVar:DealDmg:DB$ DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | AILogic$ ChoiceBurn | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target player or planeswalker. SVar:PumpAll:DB$ PumpAll | ValidCards$ Permanent.YouCtrl | KW$ Indestructible | SpellDescription$ Permanents you control gain indestructible until end of turn. SVar:PumpDouble:DB$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ Double Strike | SpellDescription$ Target creature gains double strike until end of turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/boros_charm.jpg -Oracle:Choose one —\n• Boros Charm deals 4 damage to target player.\n• Permanents you control gain indestructible until end of turn.\n• Target creature gains double strike until end of turn. +Oracle:Choose one —\n• Boros Charm deals 4 damage to target player or planeswalker.\n• Permanents you control gain indestructible until end of turn.\n• Target creature gains double strike until end of turn. diff --git a/forge-gui/res/cardsfolder/b/boros_reckoner.txt b/forge-gui/res/cardsfolder/b/boros_reckoner.txt index 0a46e00a6b2..da09812dc69 100644 --- a/forge-gui/res/cardsfolder/b/boros_reckoner.txt +++ b/forge-gui/res/cardsfolder/b/boros_reckoner.txt @@ -2,10 +2,10 @@ Name:Boros Reckoner ManaCost:RW RW RW Types:Creature Minotaur Wizard PT:3/3 -T:Mode$ DamageDoneOnce | Execute$ TrigDamage | ValidTarget$ Card.Self | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME is dealt damage, it deals that much damage to target creature or player. -SVar:TrigDamage:DB$ DealDamage | NumDmg$ X | References$ X | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player +T:Mode$ DamageDoneOnce | Execute$ TrigDamage | ValidTarget$ Card.Self | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME is dealt damage, it deals that much damage to any target. +SVar:TrigDamage:DB$ DealDamage | NumDmg$ X | References$ X | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target A:AB$ Pump | Cost$ RW | KW$ First Strike | Defined$ Self | SpellDescription$ CARDNAME gains first strike until end of turn. SVar:X:TriggerCount$DamageAmount SVar:HasCombatEffect:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/boros_reckoner.jpg -Oracle:Whenever Boros Reckoner is dealt damage, it deals that much damage to target creature or player.\n{R/W}: Boros Reckoner gains first strike until end of turn. +Oracle:Whenever Boros Reckoner is dealt damage, it deals that much damage to any target.\n{R/W}: Boros Reckoner gains first strike until end of turn. diff --git a/forge-gui/res/cardsfolder/b/bosh_iron_golem.txt b/forge-gui/res/cardsfolder/b/bosh_iron_golem.txt index 6ac048daf9a..04558ebdf0c 100644 --- a/forge-gui/res/cardsfolder/b/bosh_iron_golem.txt +++ b/forge-gui/res/cardsfolder/b/bosh_iron_golem.txt @@ -3,9 +3,9 @@ ManaCost:8 Types:Legendary Artifact Creature Golem PT:6/7 K:Trample -A:AB$ DealDamage | Cost$ 3 R Sac<1/Artifact> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to the sacrificed artifact's converted mana cost to target creature or player. +A:AB$ DealDamage | Cost$ 3 R Sac<1/Artifact> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to the sacrificed artifact's converted mana cost to any target. SVar:X:Sacrificed$CardManaCost DeckNeeds:Color$Red SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/bosh_iron_golem.jpg -Oracle:Trample\n{3}{R}, Sacrifice an artifact: Bosh, Iron Golem deals damage equal to the sacrificed artifact's converted mana cost to target creature or player. +Oracle:Trample\n{3}{R}, Sacrifice an artifact: Bosh, Iron Golem deals damage equal to the sacrificed artifact's converted mana cost to any target. diff --git a/forge-gui/res/cardsfolder/b/bosh_iron_golem_avatar.txt b/forge-gui/res/cardsfolder/b/bosh_iron_golem_avatar.txt index 1afaad6f3e1..bd0307fe5dc 100644 --- a/forge-gui/res/cardsfolder/b/bosh_iron_golem_avatar.txt +++ b/forge-gui/res/cardsfolder/b/bosh_iron_golem_avatar.txt @@ -2,8 +2,8 @@ Name:Bosh, Iron Golem Avatar ManaCost:no cost Types:Vanguard HandLifeModifier:+0/-2 -A:AB$ DealDamage | ActivationZone$ Command | Announce$ X | Cost$ X Sac<1/Artifact.cmcEQX/artifact with converted mana cost X> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to target creature or player. +A:AB$ DealDamage | ActivationZone$ Command | Announce$ X | Cost$ X Sac<1/Artifact.cmcEQX/artifact with converted mana cost X> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to any target. SVar:X:Count$xPaid SVar:Picture:https://downloads.cardforge.org/images/cards/VAN/Bosh, Iron Golem Avatar.full.jpg SVar:RemAIDeck:True -Oracle:Hand +0, life -2\n{X}, Sacrifice an artifact with converted mana cost X: Bosh, Iron Golem Avatar deals X damage to target creature or player. +Oracle:Hand +0, life -2\n{X}, Sacrifice an artifact with converted mana cost X: Bosh, Iron Golem Avatar deals X damage to any target. diff --git a/forge-gui/res/cardsfolder/b/boulderfall.txt b/forge-gui/res/cardsfolder/b/boulderfall.txt index c625c64bcc5..56597a67392 100644 --- a/forge-gui/res/cardsfolder/b/boulderfall.txt +++ b/forge-gui/res/cardsfolder/b/boulderfall.txt @@ -1,6 +1,6 @@ Name:Boulderfall ManaCost:6 R R Types:Instant -A:SP$ DealDamage | Cost$ 6 R R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to distribute damage to | NumDmg$ 5 | TargetMin$ 1 | TargetMax$ 5 | DividedAsYouChoose$ 5 | SpellDescription$ CARDNAME deals 5 damage divided as you choose among any number of target creatures and/or players. +A:SP$ DealDamage | Cost$ 6 R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to distribute damage to | NumDmg$ 5 | TargetMin$ 1 | TargetMax$ 5 | DividedAsYouChoose$ 5 | SpellDescription$ CARDNAME deals 5 damage divided as you choose among any number of targets. SVar:Picture:http://www.wizards.com/global/images/magic/general/boulderfall.jpg -Oracle:Boulderfall deals 5 damage divided as you choose among any number of target creatures and/or players. +Oracle:Boulderfall deals 5 damage divided as you choose among any number of targets. diff --git a/forge-gui/res/cardsfolder/upcoming/bountiful_promenade.txt b/forge-gui/res/cardsfolder/b/bountiful_promenade.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/bountiful_promenade.txt rename to forge-gui/res/cardsfolder/b/bountiful_promenade.txt diff --git a/forge-gui/res/cardsfolder/b/bounty_of_the_hunt.txt b/forge-gui/res/cardsfolder/b/bounty_of_the_hunt.txt index ee22a9a3190..36b18385954 100644 --- a/forge-gui/res/cardsfolder/b/bounty_of_the_hunt.txt +++ b/forge-gui/res/cardsfolder/b/bounty_of_the_hunt.txt @@ -9,4 +9,4 @@ SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True DeckHas:Ability$Counters SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/bounty_of_the_hunt.jpg -Oracle:You may exile a green card from your hand rather than pay Bounty of the Hunt's mana cost.\nDistribute three +1/+1 counters among one, two, or three target creatures. For each +1/+1 counter you put on a creature this way, remove a +1/+1 counter from that creature at the beginning of the next cleanup step. +Oracle:You may exile a green card from your hand rather than pay this spell's mana cost.\nDistribute three +1/+1 counters among one, two, or three target creatures. For each +1/+1 counter you put on a creature this way, remove a +1/+1 counter from that creature at the beginning of the next cleanup step. diff --git a/forge-gui/res/cardsfolder/b/bragos_favor.txt b/forge-gui/res/cardsfolder/b/bragos_favor.txt index c393d4d5ec5..55e2bbb2ca9 100644 --- a/forge-gui/res/cardsfolder/b/bragos_favor.txt +++ b/forge-gui/res/cardsfolder/b/bragos_favor.txt @@ -4,4 +4,4 @@ Types:Conspiracy K:Hidden agenda S:Mode$ ReduceCost | ValidCard$ Card.NamedCard | EffectZone$ Command | Type$ Spell | Activator$ You | Amount$ 1 | Description$ Spells of the named card cost 1 less. SVar:AgendaLogic:BestCreatureInComputerDeck -Oracle:Hidden agenda (Start the game with this conspiracy face down in the command zone and secretly name a card. You may turn this conspiracy face up any time and reveal the chosen name.)\nSpells with the chosen name you cast cost {1} less to cast. +Oracle:Hidden agenda (Start the game with this conspiracy face down in the command zone and secretly choose a card name. You may turn this conspiracy face up any time and reveal that name.)\nSpells with the chosen name you cast cost {1} less to cast. diff --git a/forge-gui/res/cardsfolder/b/brain_gorgers.txt b/forge-gui/res/cardsfolder/b/brain_gorgers.txt index cf9c648de62..5e9a8746f2c 100644 --- a/forge-gui/res/cardsfolder/b/brain_gorgers.txt +++ b/forge-gui/res/cardsfolder/b/brain_gorgers.txt @@ -6,4 +6,4 @@ T:Mode$ SpellCast | ValidCard$ Card.Self | Execute$ TrigCounter | TriggerDescrip SVar:TrigCounter:DB$ Counter | UnlessCost$ Sac<1/Creature> | Defined$ TriggeredSpellAbility | UnlessPayer$ Player | UnlessSwitched$ True K:Madness:1 B SVar:Picture:http://www.wizards.com/global/images/magic/general/brain_gorgers.jpg -Oracle:When you cast Brain Gorgers, any player may sacrifice a creature. If a player does, counter Brain Gorgers.\nMadness {1}{B} (If you discard this card, discard it into exile. When you do, cast it for its madness cost or put it into your graveyard.) +Oracle:When you cast this spell, any player may sacrifice a creature. If a player does, counter Brain Gorgers.\nMadness {1}{B} (If you discard this card, discard it into exile. When you do, cast it for its madness cost or put it into your graveyard.) diff --git a/forge-gui/res/cardsfolder/b/bramble_sovereign.txt b/forge-gui/res/cardsfolder/b/bramble_sovereign.txt new file mode 100644 index 00000000000..991f0394ddd --- /dev/null +++ b/forge-gui/res/cardsfolder/b/bramble_sovereign.txt @@ -0,0 +1,7 @@ +Name:Bramble Sovereign +ManaCost:2 G G +Types:Creature Dryad +PT:4/4 +T:Mode$ ChangesZone | ValidCard$ Creature.nonToken+Other | Origin$ Any | Destination$ Battlefield | TriggerZones$ Battlefield | Execute$ TrigCopy | OptionalDecider$ You | TriggerDescription$ Whenever another nontoken creature enters the battlefield, you may pay {1}{G}. If you do, that creature's controller creates a token that's a copy of that creature. +SVar:TrigCopy:AB$ CopyPermanent | Cost$ 1 G | Defined$ TriggeredCard | Controller$ TriggeredCardController +Oracle:Whenever another nontoken creature enters the battlefield, you may pay {1}{G}. If you do, that creature's controller creates a token that's a copy of that creature. diff --git a/forge-gui/res/cardsfolder/b/brambleweft_behemoth.txt b/forge-gui/res/cardsfolder/b/brambleweft_behemoth.txt index 5ac45354797..90623a53d3a 100644 --- a/forge-gui/res/cardsfolder/b/brambleweft_behemoth.txt +++ b/forge-gui/res/cardsfolder/b/brambleweft_behemoth.txt @@ -5,4 +5,4 @@ PT:6/6 K:Trample DeckHints:Name$Nissa's Encouragement|Nissa, Genesis Mage|Forest SVar:Picture:http://www.wizards.com/global/images/magic/general/brambleweft_behemoth.jpg -Oracle:Trample (This creature can deal excess combat damage to defending player or planeswalker while attacking.) \ No newline at end of file +Oracle:Trample (This creature can deal excess combat damage to the player or planeswalker it's attacking.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/b/brawl_bash_ogre.txt b/forge-gui/res/cardsfolder/b/brawl_bash_ogre.txt new file mode 100644 index 00000000000..27c9a5310e0 --- /dev/null +++ b/forge-gui/res/cardsfolder/b/brawl_bash_ogre.txt @@ -0,0 +1,9 @@ +Name:Brawl-Bash Ogre +ManaCost:2 B R +Types:Creature Ogre Warrior +PT:3/3 +K:Menace +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigPump | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME attacks, you may sacrifice another creature. If you do, CARDNAME gets +2/+2 until end of turn. +SVar:TrigPump:AB$ Pump | Cost$ Sac<1/Creature.Other/another creature> | Defined$ Self | NumAtt$ +2 | NumDef$ +2 | SpellDescription$ CARDNAME gets +2/+2 until end of turn. +SVar:Picture:http://www.wizards.com/global/images/magic/general/brawl-bash_ogre.jpg +Oracle:Menace (This creature can’t be blocked except by two or more creatures.)\nWhenever Brawl-Bash Ogre attacks, you may sacrifice another creature. If you do, Brawl-Bash Ogre gets +2/+2 until end of turn. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/b/brawlers_plate.txt b/forge-gui/res/cardsfolder/b/brawlers_plate.txt index fefbb9298dc..ebf1751c2bf 100644 --- a/forge-gui/res/cardsfolder/b/brawlers_plate.txt +++ b/forge-gui/res/cardsfolder/b/brawlers_plate.txt @@ -4,4 +4,4 @@ Types:Artifact Equipment K:Equip:4 S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 2 | AddToughness$ 2 | AddKeyword$ Trample | Description$ Equipped creature gets +2/+2 and has trample. SVar:Picture:http://www.wizards.com/global/images/magic/general/brawlers_plate.jpg -Oracle:Equipped creature gets +2/+2 and has trample. (It can deal excess combat damage to defending player or planeswalker while attacking.)\nEquip {4} ({4}: Attach to target creature you control. Equip only as a sorcery.) +Oracle:Equipped creature gets +2/+2 and has trample. (It can deal excess combat damage to the player or planeswalker it's attacking.)\nEquip {4} ({4}: Attach to target creature you control. Equip only as a sorcery.) diff --git a/forge-gui/res/cardsfolder/b/brazen_buccaneers.txt b/forge-gui/res/cardsfolder/b/brazen_buccaneers.txt index 9d5a9f373ce..7b251e8c383 100644 --- a/forge-gui/res/cardsfolder/b/brazen_buccaneers.txt +++ b/forge-gui/res/cardsfolder/b/brazen_buccaneers.txt @@ -7,4 +7,4 @@ T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.S SVar:TrigExplore:DB$ Explore DeckHas:Ability$Counters SVar:Picture:http://www.wizards.com/global/images/magic/general/brazen_buccaneers.jpg -Oracle:Haste\nWhen Brazen Buccaneers enters the battlefield, it explores. (Reveal the top card of your library. Put that card into your hand if it's a land. Otherwise put a +1/+1 counter on this creature, then put the card back or put it into your graveyard.) +Oracle:Haste\nWhen Brazen Buccaneers enters the battlefield, it explores. (Reveal the top card of your library. Put that card into your hand if it's a land. Otherwise, put a +1/+1 counter on this creature, then put the card back or put it into your graveyard.) diff --git a/forge-gui/res/cardsfolder/b/brazen_scourge.txt b/forge-gui/res/cardsfolder/b/brazen_scourge.txt index 898d1eca548..cc1fb084654 100644 --- a/forge-gui/res/cardsfolder/b/brazen_scourge.txt +++ b/forge-gui/res/cardsfolder/b/brazen_scourge.txt @@ -4,4 +4,4 @@ Types:Creature Gremlin PT:3/3 K:Haste SVar:Picture:http://www.wizards.com/global/images/magic/general/brazen_scourge.jpg -Oracle:Haste \ No newline at end of file +Oracle:Haste \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/b/breath_of_darigaaz.txt b/forge-gui/res/cardsfolder/b/breath_of_darigaaz.txt index 6c19b9a0d9d..57192ff8953 100644 --- a/forge-gui/res/cardsfolder/b/breath_of_darigaaz.txt +++ b/forge-gui/res/cardsfolder/b/breath_of_darigaaz.txt @@ -5,4 +5,4 @@ K:Kicker:2 A:SP$ DamageAll | Cost$ 1 R | ValidCards$ Creature.withoutFlying | ValidPlayers$ Player | NumDmg$ WasKicked | References$ WasKicked | SpellDescription$ CARDNAME deals 1 damage to each creature without flying and each player. If CARDNAME was kicked, it deals 4 damage to each creature without flying and each player instead. SVar:WasKicked:Count$Kicked.4.1 SVar:Picture:http://www.wizards.com/global/images/magic/general/breath_of_darigaaz.jpg -Oracle:Kicker {2} (You may pay an additional {2} as you cast this spell.)\nBreath of Darigaaz deals 1 damage to each creature without flying and each player. If Breath of Darigaaz was kicked, it deals 4 damage to each creature without flying and each player instead. +Oracle:Kicker {2} (You may pay an additional {2} as you cast this spell.)\nBreath of Darigaaz deals 1 damage to each creature without flying and each player. If this spell was kicked, it deals 4 damage to each creature without flying and each player instead. diff --git a/forge-gui/res/cardsfolder/b/breath_of_fire.txt b/forge-gui/res/cardsfolder/b/breath_of_fire.txt new file mode 100644 index 00000000000..a56e461e40c --- /dev/null +++ b/forge-gui/res/cardsfolder/b/breath_of_fire.txt @@ -0,0 +1,5 @@ +Name:Breath of Fire +ManaCost:1 R +Types:Instant +A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature. +Oracle:Breath of Fire deals 2 damage to target creature. diff --git a/forge-gui/res/cardsfolder/b/breya_etherium_shaper.txt b/forge-gui/res/cardsfolder/b/breya_etherium_shaper.txt index 572e524e925..9338f67bc15 100644 --- a/forge-gui/res/cardsfolder/b/breya_etherium_shaper.txt +++ b/forge-gui/res/cardsfolder/b/breya_etherium_shaper.txt @@ -5,9 +5,9 @@ PT:4/4 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, create two 1/1 blue Thopter artifact creature tokens with flying. SVar:TrigToken:DB$ Token | TokenAmount$ 2 | TokenName$ Thopter | TokenTypes$ Artifact,Creature,Thopter | TokenOwner$ You | TokenColors$ Blue | TokenPower$ 1 | TokenToughness$ 1 | TokenKeywords$ Flying | TokenImage$ u 1 1 thopter C16 A:AB$ Charm | Cost$ 2 Sac<2/Artifact> | Choices$ DBDealDamage,DBPump,DBGainLife | Defined$ You -SVar:DBDealDamage:DB$ DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target player. +SVar:DBDealDamage:DB$ DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target player or planeswalker. SVar:DBPump:DB$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ -4 | NumDef$ -4 | IsCurse$ True | SpellDescription$ Target creature gets -4/-4 until end of turn SVar:DBGainLife:DB$ GainLife | LifeAmount$ 5 | Defined$ You | SpellDescription$ You gain 5 life. DeckHas:Ability$Token & Ability$LifeGain SVar:Picture:http://www.wizards.com/global/images/magic/general/breya_etherium_shaper.jpg -Oracle:When Breya, Etherium Shaper enters the battlefield, create two 1/1 blue Thopter artifact creature tokens with flying.\n{2}, Sacrifice two artifacts: Choose one —\n• Breya deals 3 damage to target player.\n• Target creature gets -4/-4 until end of turn.\n• You gain 5 life. +Oracle:When Breya, Etherium Shaper enters the battlefield, create two 1/1 blue Thopter artifact creature tokens with flying.\n{2}, Sacrifice two artifacts: Choose one —\n• Breya deals 3 damage to target player or planeswalker.\n• Target creature gets -4/-4 until end of turn.\n• You gain 5 life. diff --git a/forge-gui/res/cardsfolder/b/brightflame.txt b/forge-gui/res/cardsfolder/b/brightflame.txt index 8684b7e0f94..58ca5ef40ad 100644 --- a/forge-gui/res/cardsfolder/b/brightflame.txt +++ b/forge-gui/res/cardsfolder/b/brightflame.txt @@ -4,7 +4,7 @@ Types:Sorcery A:SP$DealDamage | Cost$ X R R W W | ValidTgts$ Creature | Radiance$ True | NumDmg$ X | SubAbility$ DBGainLife | References$ X | SpellDescription$ Radiance — Brightflame deals X damage to target creature and each other creature that shares a color with it. You gain life equal to the damage dealt this way. SVar:DBGainLife:DB$GainLife | Defined$ You | LifeAmount$ Y | References$ Y SVar:X:Count$xPaid -SVar:Y:Count$DamageDoneThisTurn +SVar:Y:Count$TotalDamageDoneByThisTurn SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/brightflame.jpg Oracle:Radiance — Brightflame deals X damage to target creature and each other creature that shares a color with it. You gain life equal to the damage dealt this way. diff --git a/forge-gui/res/cardsfolder/b/brightling.txt b/forge-gui/res/cardsfolder/b/brightling.txt new file mode 100644 index 00000000000..72b238ca8a4 --- /dev/null +++ b/forge-gui/res/cardsfolder/b/brightling.txt @@ -0,0 +1,12 @@ +Name:Brightling +ManaCost:1 W W +Types:Creature Shapeshifter +PT:3/3 +A:AB$ Pump | Cost$ W | KW$ Vigilance | Defined$ Self | SpellDescription$ CARDNAME gains vigilance until end of turn. +A:AB$ Pump | Cost$ W | KW$ Lifelink | Defined$ Self | SpellDescription$ CARDNAME gains lifelink until end of turn. +A:AB$ ChangeZone | Cost$ W | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return CARDNAME to its owner's hand. +A:AB$ Pump | Cost$ 1 | Subability$ ABChoice | SpellDescription$ CARDNAME gets +1/-1 or -1/+1 until end of turn. +SVar:ABChoice:DB$ GenericChoice | Defined$ You | Choices$ ABPump1,ABPump2 +SVar:ABPump1:DB$ Pump | Defined$ Self | NumAtt$ +1 | NumDef$ -1 | SpellDescription$ +1/-1 +SVar:ABPump2:DB$ Pump | Defined$ Self | NumAtt$ -1 | NumDef$ +1 | SpellDescription$ -1/+1 +Oracle:{W}: Brightling gains vigilance until end of turn.\n{W}: Brightling gains lifelink until end of turn.\n{W}: Return Brightling to its owner's hand.\n{1}: Brightling gets +1/-1 or -1/+1 until end of turn. diff --git a/forge-gui/res/cardsfolder/b/brimstone_mage.txt b/forge-gui/res/cardsfolder/b/brimstone_mage.txt index 1341c05d67d..3d4f29ae873 100644 --- a/forge-gui/res/cardsfolder/b/brimstone_mage.txt +++ b/forge-gui/res/cardsfolder/b/brimstone_mage.txt @@ -4,11 +4,11 @@ Types:Creature Human Shaman PT:2/2 K:Level up:3 R SVar:maxLevel:3 -S:Mode$ Continuous | Affected$ Card.Self | SetPower$ 2 | SetToughness$ 3 | AddAbility$ Ping | CheckSVar$ X | SVarCompare$ EQ1 | Description$ LEVEL 1-2 2/3 CARDNAME gets {T}: CARDNAME deals 1 damage to target creature or player. -S:Mode$ Continuous | Affected$ Card.Self | SetPower$ 2 | SetToughness$ 4 | AddAbility$ Bolt | CheckSVar$ Y | SVarCompare$ EQ1 | Description$ LEVEL 3+ 2/4 CARDNAME gets {T}: CARDNAME deals 3 damage to target creature or player. -SVar:Ping:AB$DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. -SVar:Bolt:AB$DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. +S:Mode$ Continuous | Affected$ Card.Self | SetPower$ 2 | SetToughness$ 3 | AddAbility$ Ping | CheckSVar$ X | SVarCompare$ EQ1 | Description$ LEVEL 1-2 2/3 CARDNAME gets {T}: CARDNAME deals 1 damage to any target. +S:Mode$ Continuous | Affected$ Card.Self | SetPower$ 2 | SetToughness$ 4 | AddAbility$ Bolt | CheckSVar$ Y | SVarCompare$ EQ1 | Description$ LEVEL 3+ 2/4 CARDNAME gets {T}: CARDNAME deals 3 damage to any target. +SVar:Ping:AB$DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. +SVar:Bolt:AB$DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. SVar:X:Count$Valid Card.Self+counters_GE1_LEVEL+counters_LE2_LEVEL SVar:Y:Count$Valid Card.Self+counters_GE3_LEVEL SVar:Picture:http://www.wizards.com/global/images/magic/general/brimstone_mage.jpg -Oracle:Level up {3}{R} ({3}{R}: Put a level counter on this. Level up only as a sorcery.)\nLEVEL 1-2\n2/3\n{T}: Brimstone Mage deals 1 damage to target creature or player.\nLEVEL 3+\n2/4\n{T}: Brimstone Mage deals 3 damage to target creature or player. +Oracle:Level up {3}{R} ({3}{R}: Put a level counter on this. Level up only as a sorcery.)\nLEVEL 1-2\n2/3\n{T}: Brimstone Mage deals 1 damage to any target.\nLEVEL 3+\n2/4\n{T}: Brimstone Mage deals 3 damage to any target. diff --git a/forge-gui/res/cardsfolder/b/brimstone_volley.txt b/forge-gui/res/cardsfolder/b/brimstone_volley.txt index 41f7fc71e9c..cc6bdebeca6 100644 --- a/forge-gui/res/cardsfolder/b/brimstone_volley.txt +++ b/forge-gui/res/cardsfolder/b/brimstone_volley.txt @@ -1,7 +1,7 @@ Name:Brimstone Volley ManaCost:2 R Types:Instant -A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals 3 damage to target creature or player. Morbid — CARDNAME deals 5 damage to that creature or player instead if a creature died this turn. +A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals 3 damage to any target. Morbid — CARDNAME deals 5 damage to that permanent or player instead if a creature died this turn. SVar:X:Count$Morbid.5.3 SVar:Picture:http://www.wizards.com/global/images/magic/general/brimstone_volley.jpg -Oracle:Brimstone Volley deals 3 damage to target creature or player.\nMorbid — Brimstone Volley deals 5 damage to that creature or player instead if a creature died this turn. +Oracle:Brimstone Volley deals 3 damage to any target.\nMorbid — Brimstone Volley deals 5 damage to that permanent or player instead if a creature died this turn. diff --git a/forge-gui/res/cardsfolder/b/bringer_of_the_black_dawn.txt b/forge-gui/res/cardsfolder/b/bringer_of_the_black_dawn.txt index ff5ef4817ce..655d24e5233 100644 --- a/forge-gui/res/cardsfolder/b/bringer_of_the_black_dawn.txt +++ b/forge-gui/res/cardsfolder/b/bringer_of_the_black_dawn.txt @@ -8,4 +8,4 @@ T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | O SVar:TrigChange:AB$ChangeZone | Cost$ PayLife<2> | Origin$ Library | Destination$ Library | LibraryPosition$ 0 | ChangeType$ Card | ChangeNum$ 1 SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/bringer_of_the_black_dawn.jpg -Oracle:You may pay {W}{U}{B}{R}{G} rather than pay Bringer of the Black Dawn's mana cost.\nTrample\nAt the beginning of your upkeep, you may pay 2 life. If you do, search your library for a card, then shuffle your library and put that card on top of it. +Oracle:You may pay {W}{U}{B}{R}{G} rather than pay this spell's mana cost.\nTrample\nAt the beginning of your upkeep, you may pay 2 life. If you do, search your library for a card, then shuffle your library and put that card on top of it. diff --git a/forge-gui/res/cardsfolder/b/bringer_of_the_blue_dawn.txt b/forge-gui/res/cardsfolder/b/bringer_of_the_blue_dawn.txt index a81184ffaa9..d2b9c030063 100644 --- a/forge-gui/res/cardsfolder/b/bringer_of_the_blue_dawn.txt +++ b/forge-gui/res/cardsfolder/b/bringer_of_the_blue_dawn.txt @@ -7,4 +7,4 @@ T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | O SVar:TrigDraw:DB$Draw | Defined$ You | NumCards$ 2 SVar:AltCost:Cost$ W U B R G | Description$ You may pay {W}{U}{B}{R}{G} rather than pay CARDNAME's mana cost. SVar:Picture:http://www.wizards.com/global/images/magic/general/bringer_of_the_blue_dawn.jpg -Oracle:You may pay {W}{U}{B}{R}{G} rather than pay Bringer of the Blue Dawn's mana cost.\nTrample\nAt the beginning of your upkeep, you may draw two cards. +Oracle:You may pay {W}{U}{B}{R}{G} rather than pay this spell's mana cost.\nTrample\nAt the beginning of your upkeep, you may draw two cards. diff --git a/forge-gui/res/cardsfolder/b/bringer_of_the_green_dawn.txt b/forge-gui/res/cardsfolder/b/bringer_of_the_green_dawn.txt index de732f7b869..ecfd88ae496 100644 --- a/forge-gui/res/cardsfolder/b/bringer_of_the_green_dawn.txt +++ b/forge-gui/res/cardsfolder/b/bringer_of_the_green_dawn.txt @@ -7,4 +7,4 @@ SVar:AltCost:Cost$ W U B R G | Description$ You may pay {W}{U}{B}{R}{G} rather t T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigToken | TriggerDescription$ At the beginning of your upkeep, you may create a 3/3 green Beast creature token. SVar:TrigToken:DB$Token | TokenAmount$ 1 | TokenName$ Beast | TokenTypes$ Creature,Beast | TokenOwner$ You | TokenColors$ Green | TokenPower$ 3 | TokenToughness$ 3 SVar:Picture:http://www.wizards.com/global/images/magic/general/bringer_of_the_green_dawn.jpg -Oracle:You may pay {W}{U}{B}{R}{G} rather than pay Bringer of the Green Dawn's mana cost.\nTrample\nAt the beginning of your upkeep, you may create a 3/3 green Beast creature token. +Oracle:You may pay {W}{U}{B}{R}{G} rather than pay this spell's mana cost.\nTrample\nAt the beginning of your upkeep, you may create a 3/3 green Beast creature token. diff --git a/forge-gui/res/cardsfolder/b/bringer_of_the_red_dawn.txt b/forge-gui/res/cardsfolder/b/bringer_of_the_red_dawn.txt index d5966786caf..eb6eb1dee7c 100644 --- a/forge-gui/res/cardsfolder/b/bringer_of_the_red_dawn.txt +++ b/forge-gui/res/cardsfolder/b/bringer_of_the_red_dawn.txt @@ -7,4 +7,4 @@ SVar:AltCost:Cost$ W U B R G | Description$ You may pay {W}{U}{B}{R}{G} rather t T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigChange | TriggerDescription$ At the beginning of your upkeep, you may untap target creature and gain control of it until end of turn. That creature gains haste until end of turn. SVar:TrigChange:DB$GainControl | ValidTgts$ Creature | TgtPrompt$ Select target creature | LoseControl$ EOT | Untap$ True | AddKWs$ Haste SVar:Picture:http://www.wizards.com/global/images/magic/general/bringer_of_the_red_dawn.jpg -Oracle:You may pay {W}{U}{B}{R}{G} rather than pay Bringer of the Red Dawn's mana cost.\nTrample\nAt the beginning of your upkeep, you may untap target creature and gain control of it until end of turn. That creature gains haste until end of turn. +Oracle:You may pay {W}{U}{B}{R}{G} rather than pay this spell's mana cost.\nTrample\nAt the beginning of your upkeep, you may untap target creature and gain control of it until end of turn. That creature gains haste until end of turn. diff --git a/forge-gui/res/cardsfolder/b/bringer_of_the_white_dawn.txt b/forge-gui/res/cardsfolder/b/bringer_of_the_white_dawn.txt index 977a8cca195..5efbda3ead6 100644 --- a/forge-gui/res/cardsfolder/b/bringer_of_the_white_dawn.txt +++ b/forge-gui/res/cardsfolder/b/bringer_of_the_white_dawn.txt @@ -7,4 +7,4 @@ SVar:AltCost:Cost$ W U B R G | Description$ You may pay {W}{U}{B}{R}{G} rather t T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigChange | TriggerDescription$ At the beginning of your upkeep, you may return target artifact card from your graveyard to the battlefield. SVar:TrigChange:AB$ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Artifact.YouCtrl | Cost$ 0 SVar:Picture:http://www.wizards.com/global/images/magic/general/bringer_of_the_white_dawn.jpg -Oracle:You may pay {W}{U}{B}{R}{G} rather than pay Bringer of the White Dawn's mana cost.\nTrample\nAt the beginning of your upkeep, you may return target artifact card from your graveyard to the battlefield. +Oracle:You may pay {W}{U}{B}{R}{G} rather than pay this spell's mana cost.\nTrample\nAt the beginning of your upkeep, you may return target artifact card from your graveyard to the battlefield. diff --git a/forge-gui/res/cardsfolder/b/brion_stoutarm.txt b/forge-gui/res/cardsfolder/b/brion_stoutarm.txt index 841cf2b762c..56ecf3f67e2 100644 --- a/forge-gui/res/cardsfolder/b/brion_stoutarm.txt +++ b/forge-gui/res/cardsfolder/b/brion_stoutarm.txt @@ -3,7 +3,7 @@ ManaCost:2 R W Types:Legendary Creature Giant Warrior PT:4/4 K:Lifelink -A:AB$ DealDamage | Cost$ R T Sac<1/Creature.Other/creature other than Brion Stoutarm> | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to the sacrificed creature's power to target player. +A:AB$ DealDamage | Cost$ R T Sac<1/Creature.Other/another creature> | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to the sacrificed creature's power to target player or planeswalker. SVar:X:Sacrificed$CardPower SVar:Picture:http://www.wizards.com/global/images/magic/general/brion_stoutarm.jpg -Oracle:Lifelink\n{R}, {T}, Sacrifice a creature other than Brion Stoutarm: Brion Stoutarm deals damage equal to the sacrificed creature's power to target player. +Oracle:Lifelink\n{R}, {T}, Sacrifice another creature: Brion Stoutarm deals damage equal to the sacrificed creature's power to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/b/bristling_boar.txt b/forge-gui/res/cardsfolder/b/bristling_boar.txt new file mode 100644 index 00000000000..e2cb49f247a --- /dev/null +++ b/forge-gui/res/cardsfolder/b/bristling_boar.txt @@ -0,0 +1,6 @@ +Name:Bristling Boar +ManaCost:3 G +Types:Creature Boar +K:CantBeBlockedByAmount GT1 +Oracle:Bristling Boar can't be blocked by more than one creature. +PT:4/3 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/b/bristling_hydra.txt b/forge-gui/res/cardsfolder/b/bristling_hydra.txt index f6dfab519b7..ceb6d6d9612 100644 --- a/forge-gui/res/cardsfolder/b/bristling_hydra.txt +++ b/forge-gui/res/cardsfolder/b/bristling_hydra.txt @@ -7,4 +7,4 @@ SVar:TrigEnergy:DB$ PutCounter | Defined$ You | CounterType$ ENERGY | CounterNum A:AB$ PutCounter | Cost$ PayEnergy<3> | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBPump | AILogic$ PayEnergyConservatively | SpellDescription$ Put a +1/+1 counter on CARDNAME. It gains hexproof until end of turn. SVar:DBPump:DB$Pump | Defined$ Self | KW$ Hexproof SVar:Picture:http://www.wizards.com/global/images/magic/general/bristling_hydra.jpg -Oracle:When Bristling Hydra enters the battlefield, you gain {E}{E}{E} (three energy counters).\nPay {E}{E}{E}: Put a +1/+1 counter on Bristling Hydra. It gains hexproof until end of turn. +Oracle:When Bristling Hydra enters the battlefield, you get {E}{E}{E} (three energy counters).\nPay {E}{E}{E}: Put a +1/+1 counter on Bristling Hydra. It gains hexproof until end of turn. diff --git a/forge-gui/res/cardsfolder/b/broken_visage.txt b/forge-gui/res/cardsfolder/b/broken_visage.txt index 17abb5e1827..16bd4939703 100644 --- a/forge-gui/res/cardsfolder/b/broken_visage.txt +++ b/forge-gui/res/cardsfolder/b/broken_visage.txt @@ -1,10 +1,10 @@ Name:Broken Visage ManaCost:4 B Types:Instant -A:SP$ Destroy | Cost$ 4 B | ValidTgts$ Creature.attacking+nonArtifact | TgtPrompt$ Select target nonartifact attacking creature | NoRegen$ True | SpellDescription$ Destroy target nonartifact attacking creature. It can't be regenerated. Create a black Spirit creature token with that creature's power and toughness. Sacrifice the token at the beginning of the next end step. | SubAbility$ DBToken +A:SP$ Destroy | Cost$ 4 B | ValidTgts$ Creature.attacking+nonArtifact | TgtPrompt$ Select target nonartifact attacking creature | NoRegen$ True | SubAbility$ DBToken | SpellDescription$ Destroy target nonartifact attacking creature. It can't be regenerated. Create a black Spirit creature token. Its power is equal to that creature's power and its toughness is equal to that creature's toughness. Sacrifice the token at the beginning of the next end step. SVar:DBToken:DB$ Token | Defined$ Targeted | TokenAmount$ 1 | TokenName$ Spirit | TokenTypes$ Creature,Spirit | TokenOwner$ You | TokenColors$ Black | TokenPower$ dX | TokenToughness$ dY | References$ dX,dY | TokenSVars$ BrokenVisageEOT | AtEOT$ Sacrifice SVar:BrokenVisageEOT:SVar:EndOfTurnLeavePlay:True SVar:dX:Targeted$CardPower SVar:dY:Targeted$CardToughness SVar:Picture:http://www.wizards.com/global/images/magic/general/broken_visage.jpg -Oracle:Destroy target nonartifact attacking creature. It can't be regenerated. Create a black Spirit creature token with that creature's power and toughness. Sacrifice the token at the beginning of the next end step. +Oracle:Destroy target nonartifact attacking creature. It can't be regenerated. Create a black Spirit creature token. Its power is equal to that creature's power and its toughness is equal to that creature's toughness. Sacrifice the token at the beginning of the next end step. diff --git a/forge-gui/res/cardsfolder/b/brontotherium.txt b/forge-gui/res/cardsfolder/b/brontotherium.txt index 1daf29f2cee..c7ff2620cd6 100644 --- a/forge-gui/res/cardsfolder/b/brontotherium.txt +++ b/forge-gui/res/cardsfolder/b/brontotherium.txt @@ -5,4 +5,4 @@ PT:5/3 K:Trample K:Provoke SVar:Picture:http://www.wizards.com/global/images/magic/general/brontotherium.jpg -Oracle:Trample\nProvoke (When this attacks, you may have target creature defending player controls untap and block it if able.) +Oracle:Trample\nProvoke (Whenever this creature attacks, you may have target creature defending player controls untap and block it if able.) diff --git a/forge-gui/res/cardsfolder/b/brothers_of_fire.txt b/forge-gui/res/cardsfolder/b/brothers_of_fire.txt index af1d135b89d..9da8dd46227 100644 --- a/forge-gui/res/cardsfolder/b/brothers_of_fire.txt +++ b/forge-gui/res/cardsfolder/b/brothers_of_fire.txt @@ -2,7 +2,8 @@ Name:Brothers of Fire ManaCost:1 R R Types:Creature Human Shaman PT:2/2 -A:AB$ DealDamage | Cost$ 1 R R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SubAbility$ DBDealDamage | SpellDescription$ CARDNAME deals 1 damage to target creature or player and 1 damage to you. -SVar:DBDealDamage:DB$DealDamage | Defined$ You | NumDmg$ 1 +A:AB$ DealDamage | Cost$ 1 R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SubAbility$ DBDealDamage | DamageMap$ True | SpellDescription$ CARDNAME deals 1 damage to any target and 1 damage to you. +SVar:DBDealDamage:DB$DealDamage | Defined$ You | NumDmg$ 1 | SubAbility$ DBDamageResolve +SVar:DBDamageResolve:DB$ DamageResolve SVar:Picture:http://www.wizards.com/global/images/magic/general/brothers_of_fire.jpg -Oracle:{1}{R}{R}: Brothers of Fire deals 1 damage to target creature or player and 1 damage to you. +Oracle:{1}{R}{R}: Brothers of Fire deals 1 damage to any target and 1 damage to you. diff --git a/forge-gui/res/cardsfolder/b/brothers_yamazaki.txt b/forge-gui/res/cardsfolder/b/brothers_yamazaki.txt index 3d78315b426..36da0aff1c4 100644 --- a/forge-gui/res/cardsfolder/b/brothers_yamazaki.txt +++ b/forge-gui/res/cardsfolder/b/brothers_yamazaki.txt @@ -2,10 +2,10 @@ Name:Brothers Yamazaki ManaCost:2 R Types:Legendary Creature Human Samurai PT:2/1 -K:Bushido 1 +K:Bushido:1 S:Mode$ Continuous | Affected$ Permanent.namedBrothers Yamazaki | CheckSVar$ X | SVarCompare$ EQ2 | AddHiddenKeyword$ Legend rule doesn't apply to CARDNAME. | Description$ If there are exactly two permanents named Brothers Yamazaki on the battlefield, the "legend rule" doesn't apply to them. SVar:X:Count$Valid Permanent.namedBrothers Yamazaki S:Mode$ Continuous | Affected$ Creature.Other+namedBrothers Yamazaki | AddPower$ 2 | AddToughness$ 2 | AddKeyword$ Haste | Description$ Each other creature named CARDNAME gets +2/+2 and has haste. DeckHints:Name$Brothers Yamazaki SVar:Picture:http://www.wizards.com/global/images/magic/general/brothers_yamazaki.jpg -Oracle:Bushido 1 (When this blocks or becomes blocked, it gets +1/+1 until end of turn.)\nIf there are exactly two permanents named Brothers Yamazaki on the battlefield, the "legend rule" doesn't apply to them.\nEach other creature named Brothers Yamazaki gets +2/+2 and has haste. +Oracle:Bushido 1 (Whenever this creature blocks or becomes blocked, it gets +1/+1 until end of turn.)\nIf there are exactly two permanents named Brothers Yamazaki on the battlefield, the "legend rule" doesn't apply to them.\nEach other creature named Brothers Yamazaki gets +2/+2 and has haste. diff --git a/forge-gui/res/cardsfolder/b/brudiclad_telchor_engineer.txt b/forge-gui/res/cardsfolder/b/brudiclad_telchor_engineer.txt new file mode 100644 index 00000000000..5f9e9a3c4eb --- /dev/null +++ b/forge-gui/res/cardsfolder/b/brudiclad_telchor_engineer.txt @@ -0,0 +1,13 @@ +Name:Brudiclad, Telchor Engineer +ManaCost:4 U R +Types:Legendary Artifact Creature Artificer +PT:4/4 +S:Mode$ Continuous | Affected$ Creature.token+YouCtrl | AddKeyword$ Haste | Description$ Creature tokens you control have haste. +SVar:PlayMain1:TRUE +T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ At the beginning of combat on your turn, create a 2/1 blue Myr artifact creature token. Then you may choose a token you control. If you do, each other token you control becomes a copy of that token. +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenName$ Myr | TokenTypes$ Artifact,Creature,Myr | TokenOwner$ You | TokenColors$ Blue | TokenPower$ 2 | TokenToughness$ 1 | TokenImage$ u 2 1 myr c18 | SubAbility$ DBImprint +SVar:DBImprint:DB$ ChooseCard | Defined$ You | Amount$ 1 | Choices$ Card.token+YouCtrl | TgtPrompt$ Choose target token you control| RememberChosen$ True | SubAbility$ MassClone | StackDescription$ None | SpellDescription$ Each other token becomes a copy of target token. +SVar:MassClone:DB$ RepeatEach | UseImprinted$ True | RepeatCards$ Card.token+IsNotRemembered+YouCtrl | RepeatSubAbility$ DBCopy | SubAbility$ DBCleanup +SVar:DBCopy:DB$ Clone | Defined$ Remembered | CloneTarget$ Imprinted +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:Creature tokens you control have haste.\nAt the beginning of combat on your turn, create a 2/1 blue Myr artifact creature token. Then you may choose a token you control. If you do, each other token you control becomes a copy of that token. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/b/bruna_the_fading_light.txt b/forge-gui/res/cardsfolder/b/bruna_the_fading_light.txt index 43c252c4318..3254f6dd18c 100644 --- a/forge-gui/res/cardsfolder/b/bruna_the_fading_light.txt +++ b/forge-gui/res/cardsfolder/b/bruna_the_fading_light.txt @@ -10,4 +10,4 @@ DeckHints:Name$Gisela the Broken Blade & Type$Human & Type$Angel SVar:Picture:http://www.wizards.com/global/images/magic/general/bruna_the_fading_light.jpg MeldPair:Gisela, the Broken Blade AlternateMode:Meld -Oracle:When you cast Bruna, the Fading Light, you may return target Angel or Human creature card from your graveyard to the battlefield.\nFlying, vigilance\n(Melds with Gisela, the Broken Blade.) +Oracle:When you cast this spell, you may return target Angel or Human creature card from your graveyard to the battlefield.\nFlying, vigilance\n(Melds with Gisela, the Broken Blade.) diff --git a/forge-gui/res/cardsfolder/b/bull_hippo.txt b/forge-gui/res/cardsfolder/b/bull_hippo.txt index 31581d8ed9b..fdf63c4023a 100644 --- a/forge-gui/res/cardsfolder/b/bull_hippo.txt +++ b/forge-gui/res/cardsfolder/b/bull_hippo.txt @@ -4,4 +4,4 @@ Types:Creature Hippo PT:3/3 K:Islandwalk SVar:Picture:http://resources.wizards.com/magic/cards/7e/en-us/card13103.jpg -Oracle:Islandwalk +Oracle:Islandwalk (This creature can't be blocked as long as defending player controls an Island.) diff --git a/forge-gui/res/cardsfolder/b/bull_rush_bruiser.txt b/forge-gui/res/cardsfolder/b/bull_rush_bruiser.txt new file mode 100644 index 00000000000..212a3050bcc --- /dev/null +++ b/forge-gui/res/cardsfolder/b/bull_rush_bruiser.txt @@ -0,0 +1,8 @@ +Name:Bull-Rush Bruiser +ManaCost:3 R +Types:Creature Minotaur Warrior +PT:4/3 +T:Mode$ Attacks | ValidCard$ Card.Self | IsPresent$ Warrior.Other+YourTeamCtrl | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever CARDNAME attacks, if your team controls another Warrior, CARDNAME gains first strike until end of turn. +SVar:TrigPump:DB$ Pump | Defined$ Self | KW$ First Strike | Defined$ Self +SVar:BuffedBy:Warrior +Oracle:Whenever Bull-Rush Bruiser attacks, if your team controls another Warrior, Bull-Rush Bruiser gains first strike until end of turn. diff --git a/forge-gui/res/cardsfolder/b/bump_in_the_night.txt b/forge-gui/res/cardsfolder/b/bump_in_the_night.txt index e98c29ecd11..72c782283f5 100644 --- a/forge-gui/res/cardsfolder/b/bump_in_the_night.txt +++ b/forge-gui/res/cardsfolder/b/bump_in_the_night.txt @@ -1,7 +1,7 @@ Name:Bump in the Night ManaCost:B Types:Sorcery -K:Flashback 5 R +K:Flashback:5 R A:SP$ LoseLife | Cost$ B | ValidTgts$ Opponent | LifeAmount$ 3 | SpellDescription$ Target opponent loses 3 life. SVar:Picture:http://www.wizards.com/global/images/magic/general/bump_in_the_night.jpg Oracle:Target opponent loses 3 life.\nFlashback {5}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/b/burn_at_the_stake.txt b/forge-gui/res/cardsfolder/b/burn_at_the_stake.txt index e88505e1cce..b87ccae91bc 100644 --- a/forge-gui/res/cardsfolder/b/burn_at_the_stake.txt +++ b/forge-gui/res/cardsfolder/b/burn_at_the_stake.txt @@ -1,9 +1,9 @@ Name:Burn at the Stake ManaCost:2 R R R Types:Sorcery -A:SP$ DealDamage | Cost$ 2 R R R tapXType | CostDesc$ As an additional cost to cast CARDNAME, tap any number of untapped creatures you control. | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ BurnAtTheStakeDmg | References$ X,BurnAtTheStakeDmg | SpellDescription$ CARDNAME deals damage to target creature or player equal to three times the number of creatures tapped this way. +A:SP$ DealDamage | Cost$ 2 R R R tapXType | CostDesc$ As an additional cost to cast CARDNAME, tap any number of untapped creatures you control. | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ BurnAtTheStakeDmg | References$ X,BurnAtTheStakeDmg | SpellDescription$ CARDNAME deals damage to any target equal to three times the number of creatures tapped this way. SVar:X:XChoice SVar:BurnAtTheStakeDmg:Number$3/Times.ChosenX SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/burn_at_the_stake.jpg -Oracle:As an additional cost to cast Burn at the Stake, tap any number of untapped creatures you control.\nBurn at the Stake deals damage to target creature or player equal to three times the number of creatures tapped this way. +Oracle:As an additional cost to cast this spell, tap any number of untapped creatures you control.\nBurn at the Stake deals damage to any target equal to three times the number of creatures tapped this way. diff --git a/forge-gui/res/cardsfolder/b/burn_from_within.txt b/forge-gui/res/cardsfolder/b/burn_from_within.txt index 24c87c285c2..6b82a96995b 100644 --- a/forge-gui/res/cardsfolder/b/burn_from_within.txt +++ b/forge-gui/res/cardsfolder/b/burn_from_within.txt @@ -1,9 +1,9 @@ Name:Burn from Within ManaCost:X R Types:Sorcery -A:SP$ DealDamage | Cost$ X R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | RememberDamaged$ True | ReplaceDyingDefined$ Remembered | SubAbility$ DBDebuff | SpellDescription$ CARDNAME deals X damage to target creature or player. If a creature is dealt damage this way, it loses indestructible until end of turn. If that creature would die this turn, exile it instead. -SVar:DBDebuff:DB$ Debuff | Defined$ Remembered | Keywords$ Indestructible | SubAbility$ DBCleanup +A:SP$ DealDamage | Cost$ X R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | RememberDamaged$ True | ReplaceDyingDefined$ Remembered.Creature | SubAbility$ DBDebuff | SpellDescription$ CARDNAME deals X damage to any target. If a creature is dealt damage this way, it loses indestructible until end of turn. If that creature would die this turn, exile it instead. +SVar:DBDebuff:DB$ Debuff | Defined$ Remembered.Creature | Keywords$ Indestructible | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Count$xPaid SVar:Picture:http://www.wizards.com/global/images/magic/general/burn_from_within.jpg -Oracle:Burn from Within deals X damage to target creature or player. If a creature is dealt damage this way, it loses indestructible until end of turn. If that creature would die this turn, exile it instead. +Oracle:Burn from Within deals X damage to any target. If a creature is dealt damage this way, it loses indestructible until end of turn. If that creature would die this turn, exile it instead. diff --git a/forge-gui/res/cardsfolder/b/burn_trail.txt b/forge-gui/res/cardsfolder/b/burn_trail.txt index 281c6e530f1..ebae9caaa79 100644 --- a/forge-gui/res/cardsfolder/b/burn_trail.txt +++ b/forge-gui/res/cardsfolder/b/burn_trail.txt @@ -1,7 +1,7 @@ Name:Burn Trail ManaCost:3 R Types:Sorcery -A:SP$ DealDamage | Cost$ 3 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. +A:SP$ DealDamage | Cost$ 3 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. K:Conspire SVar:Picture:http://www.wizards.com/global/images/magic/general/burn_trail.jpg -Oracle:Burn Trail deals 3 damage to target creature or player.\nConspire (As you cast this spell, you may tap two untapped creatures you control that share a color with it. When you do, copy it and you may choose a new target for the copy.) +Oracle:Burn Trail deals 3 damage to any target.\nConspire (As you cast this spell, you may tap two untapped creatures you control that share a color with it. When you do, copy it and you may choose a new target for the copy.) diff --git a/forge-gui/res/cardsfolder/b/burning_anger.txt b/forge-gui/res/cardsfolder/b/burning_anger.txt index 7c400dc3e10..21b2e52b43d 100644 --- a/forge-gui/res/cardsfolder/b/burning_anger.txt +++ b/forge-gui/res/cardsfolder/b/burning_anger.txt @@ -3,9 +3,9 @@ ManaCost:4 R Types:Enchantment Aura K:Enchant creature A:SP$ Attach | Cost$ 4 R | ValidTgts$ Creature | AILogic$ Pump -S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddAbility$ TapDmg | AddSVar$ BurningAngerDmg | Description$ Enchanted creature has "{T}: This creature deals damage equal to its power to target creature or player." -SVar:TapDmg:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ BurningAngerDmg | References$ BurningAngerDmg | SpellDescription$ CARDNAME deals damage equal to its power to target creature or player. +S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddAbility$ TapDmg | AddSVar$ BurningAngerDmg | Description$ Enchanted creature has "{T}: This creature deals damage equal to its power to any target." +SVar:TapDmg:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ BurningAngerDmg | References$ BurningAngerDmg | SpellDescription$ CARDNAME deals damage equal to its power to any target. SVar:BurningAngerDmg:Count$CardPower SVar:NonStackingAttachEffect:True SVar:Picture:http://www.wizards.com/global/images/magic/general/burning_anger.jpg -Oracle:Enchant creature\nEnchanted creature has "{T}: This creature deals damage equal to its power to target creature or player." +Oracle:Enchant creature\nEnchanted creature has "{T}: This creature deals damage equal to its power to any target." diff --git a/forge-gui/res/cardsfolder/b/burning_eye_zubera.txt b/forge-gui/res/cardsfolder/b/burning_eye_zubera.txt index 49cfa0125a4..debd52f486a 100644 --- a/forge-gui/res/cardsfolder/b/burning_eye_zubera.txt +++ b/forge-gui/res/cardsfolder/b/burning_eye_zubera.txt @@ -2,7 +2,7 @@ Name:Burning-Eye Zubera ManaCost:2 R R Types:Creature Zubera Spirit PT:3/3 -T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | DamageReceivedCondition$ GE4 | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME dies, if 4 or more damage was dealt to it this turn, CARDNAME deals 3 damage to target creature or player. -SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | DamageReceivedCondition$ GE4 | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME dies, if 4 or more damage was dealt to it this turn, CARDNAME deals 3 damage to any target. +SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 SVar:Picture:http://www.wizards.com/global/images/magic/general/burning_eye_zubera.jpg -Oracle:When Burning-Eye Zubera dies, if 4 or more damage was dealt to it this turn, Burning-Eye Zubera deals 3 damage to target creature or player. \ No newline at end of file +Oracle:When Burning-Eye Zubera dies, if 4 or more damage was dealt to it this turn, Burning-Eye Zubera deals 3 damage to any target. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/b/burning_fields.txt b/forge-gui/res/cardsfolder/b/burning_fields.txt index 614cc6b22fc..74f0d286602 100644 --- a/forge-gui/res/cardsfolder/b/burning_fields.txt +++ b/forge-gui/res/cardsfolder/b/burning_fields.txt @@ -1,6 +1,6 @@ Name:Burning Fields ManaCost:4 R Types:Sorcery -A:SP$ DealDamage | Cost$ 4 R | ValidTgts$ Opponent | NumDmg$ 5 | SpellDescription$ CARDNAME deals 5 damage to target opponent. +A:SP$ DealDamage | Cost$ 4 R | ValidTgts$ Opponent,Planeswalker | TgtPrompt$ Select target opponent or planeswalker | NumDmg$ 5 | SpellDescription$ CARDNAME deals 5 damage to target opponent or planeswalker. SVar:Picture:http://www.wizards.com/global/images/magic/general/burning_fields.jpg -Oracle:Burning Fields deals 5 damage to target opponent. +Oracle:Burning Fields deals 5 damage to target opponent or planeswalker. diff --git a/forge-gui/res/cardsfolder/b/burning_oil.txt b/forge-gui/res/cardsfolder/b/burning_oil.txt index f890dc3dbf2..96cbf5f3352 100644 --- a/forge-gui/res/cardsfolder/b/burning_oil.txt +++ b/forge-gui/res/cardsfolder/b/burning_oil.txt @@ -2,6 +2,6 @@ Name:Burning Oil ManaCost:1 R Types:Instant A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature.attacking,Creature.blocking | TgtPrompt$ Select target attacking or blocking creature | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target attacking or blocking creature. -K:Flashback 3 W +K:Flashback:3 W SVar:Picture:http://www.wizards.com/global/images/magic/general/burning_oil.jpg Oracle:Burning Oil deals 3 damage to target attacking or blocking creature.\nFlashback {3}{W} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/b/burning_suns_avatar.txt b/forge-gui/res/cardsfolder/b/burning_suns_avatar.txt index 1ef46881302..7225448d3be 100644 --- a/forge-gui/res/cardsfolder/b/burning_suns_avatar.txt +++ b/forge-gui/res/cardsfolder/b/burning_suns_avatar.txt @@ -2,8 +2,8 @@ Name:Burning Sun's Avatar ManaCost:3 R R R Types:Creature Dinosaur Avatar PT:6/6 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ DamageAndMoreDamage | TriggerDescription$ Whenever CARDNAME enters the battlefield, it deals 3 damage to target opponent and 3 damage to up to one target creature. -SVar:DamageAndMoreDamage:DB$ DealDamage | ValidTgts$ Opponent | NumDmg$ 3 | SubAbility$ MoreDamage +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ DamageAndMoreDamage | TriggerDescription$ Whenever CARDNAME enters the battlefield, it deals 3 damage to target opponent or planeswalker and 3 damage to up to one target creature. +SVar:DamageAndMoreDamage:DB$ DealDamage | ValidTgts$ Opponent,Planeswalker | TgtPrompt$ Select target opponent or planeswalker | NumDmg$ 3 | SubAbility$ MoreDamage SVar:MoreDamage:DB$ DealDamage | ValidTgts$ Creature | NumDmg$ 3 | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Select target creature. SVar:Picture:http://www.wizards.com/global/images/magic/general/burning_suns_avatar.jpg -Oracle:When Burning Sun's Avatar enters the battlefield, it deals 3 damage to target opponent and 3 damage to up to one target creature. +Oracle:When Burning Sun's Avatar enters the battlefield, it deals 3 damage to target opponent or planeswalker and 3 damage to up to one target creature. diff --git a/forge-gui/res/cardsfolder/b/burning_vengeance.txt b/forge-gui/res/cardsfolder/b/burning_vengeance.txt index c8220cc278e..025f8287439 100644 --- a/forge-gui/res/cardsfolder/b/burning_vengeance.txt +++ b/forge-gui/res/cardsfolder/b/burning_vengeance.txt @@ -1,8 +1,8 @@ Name:Burning Vengeance ManaCost:2 R Types:Enchantment -T:Mode$ SpellCast | ValidCard$ Card.wasCastFromGraveyard | ValidActivatingPlayer$ You | Execute$ TrigDamage | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast a spell from your graveyard, CARDNAME deals 2 damage to target creature or player. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 +T:Mode$ SpellCast | ValidCard$ Card.wasCastFromGraveyard | ValidActivatingPlayer$ You | Execute$ TrigDamage | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast a spell from your graveyard, CARDNAME deals 2 damage to any target. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/burning_vengeance.jpg -Oracle:Whenever you cast a spell from your graveyard, Burning Vengeance deals 2 damage to target creature or player. +Oracle:Whenever you cast a spell from your graveyard, Burning Vengeance deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/b/burrowing.txt b/forge-gui/res/cardsfolder/b/burrowing.txt index ec49f5758eb..5b27a970173 100644 --- a/forge-gui/res/cardsfolder/b/burrowing.txt +++ b/forge-gui/res/cardsfolder/b/burrowing.txt @@ -6,4 +6,4 @@ A:SP$ Attach | Cost$ R | ValidTgts$ Creature | AILogic$ Pump S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Mountainwalk | Description$ Enchanted creature has mountainwalk. SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/burrowing.jpg -Oracle:Enchant creature\nEnchanted creature has mountainwalk. +Oracle:Enchant creature\nEnchanted creature has mountainwalk. (It can't be blocked as long as defending player controls a Mountain.) diff --git a/forge-gui/res/cardsfolder/b/burst_lightning.txt b/forge-gui/res/cardsfolder/b/burst_lightning.txt index 6b4377006ab..979b487f02e 100644 --- a/forge-gui/res/cardsfolder/b/burst_lightning.txt +++ b/forge-gui/res/cardsfolder/b/burst_lightning.txt @@ -2,7 +2,7 @@ Name:Burst Lightning ManaCost:R Types:Instant K:Kicker:4 -A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ WasKicked | References$ WasKicked | SpellDescription$ CARDNAME deals 2 damage to target creature or player. If CARDNAME was kicked, it deals 4 damage to that creature or player instead. +A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ WasKicked | References$ WasKicked | SpellDescription$ CARDNAME deals 2 damage to any target. If CARDNAME was kicked, it deals 4 damage to that permanent or player instead. SVar:WasKicked:Count$Kicked.4.2 SVar:Picture:http://www.wizards.com/global/images/magic/general/burst_lightning.jpg -Oracle:Kicker {4} (You may pay an additional {4} as you cast this spell.)\nBurst Lightning deals 2 damage to target creature or player. If Burst Lightning was kicked, it deals 4 damage to that creature or player instead. +Oracle:Kicker {4} (You may pay an additional {4} as you cast this spell.)\nBurst Lightning deals 2 damage to any target. If this spell was kicked, it deals 4 damage to that permanent or player instead. diff --git a/forge-gui/res/cardsfolder/b/bushi_tenderfoot_kenzo_the_hardhearted.txt b/forge-gui/res/cardsfolder/b/bushi_tenderfoot_kenzo_the_hardhearted.txt index 6a09818ea85..eae910a877c 100644 --- a/forge-gui/res/cardsfolder/b/bushi_tenderfoot_kenzo_the_hardhearted.txt +++ b/forge-gui/res/cardsfolder/b/bushi_tenderfoot_kenzo_the_hardhearted.txt @@ -16,6 +16,6 @@ Colors:white Types:Legendary Creature Human Samurai PT:3/4 K:Double Strike -K:Bushido 2 +K:Bushido:2 SVar:Picture:http://www.wizards.com/global/images/magic/general/kenzo_the_hardhearted.jpg Oracle:Double strike, bushido 2 (When this blocks or becomes blocked, it gets +2/+2 until end of turn.) diff --git a/forge-gui/res/cardsfolder/b/butchers_glee.txt b/forge-gui/res/cardsfolder/b/butchers_glee.txt index 4411c388fc1..2cf53505e73 100644 --- a/forge-gui/res/cardsfolder/b/butchers_glee.txt +++ b/forge-gui/res/cardsfolder/b/butchers_glee.txt @@ -4,4 +4,4 @@ Types:Instant A:SP$ Pump | Cost$ 2 B | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +3 | KW$ Lifelink | SubAbility$ DBRegen | SpellDescription$ Target creature gets +3/+0 and gains lifelink until end of turn. Regenerate it. SVar:DBRegen:DB$ Regenerate | Defined$ ParentTarget SVar:Picture:http://www.wizards.com/global/images/magic/general/butchers_glee.jpg -Oracle:Target creature gets +3/+0 and gains lifelink until end of turn. Regenerate it. +Oracle:Target creature gets +3/+0 and gains lifelink until end of turn. Regenerate it. (Damage dealt by a creature with lifelink also causes its controller to gain that much life.) diff --git a/forge-gui/res/cardsfolder/c/cabal_paladin.txt b/forge-gui/res/cardsfolder/c/cabal_paladin.txt index a07f072dcb6..1dd15caff65 100644 --- a/forge-gui/res/cardsfolder/c/cabal_paladin.txt +++ b/forge-gui/res/cardsfolder/c/cabal_paladin.txt @@ -4,4 +4,4 @@ Types:Creature Human Knight PT:4/2 T:Mode$ SpellCast | ValidCard$ Card.Historic | ValidActivatingPlayer$ You | Execute$ TrigDamage | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast a historic spell, CARDNAME deals 2 damage to each opponent. (Artifacts, legendaries, and Sagas are historic.) SVar:TrigDamage:DB$ DealDamage | Defined$ Player.Opponent | NumDmg$ 2 -Oracle:Whenever you cast a historic spell, Cabal Paladin deals 2 damage to each opponent. (Artifacts, legendaries, and Sagas are historic.) +Oracle:Whenever you cast a historic spell, Cabal Paladin deals 2 damage to each opponent. (Artifacts, legendaries, and Sagas are historic.) diff --git a/forge-gui/res/cardsfolder/c/cabal_stronghold.txt b/forge-gui/res/cardsfolder/c/cabal_stronghold.txt index dadce30da29..41370785f81 100644 --- a/forge-gui/res/cardsfolder/c/cabal_stronghold.txt +++ b/forge-gui/res/cardsfolder/c/cabal_stronghold.txt @@ -4,5 +4,4 @@ Types:Land A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}. A:AB$ Mana | Cost$ 3 T | Produced$ B | Amount$ X | References$ X | SpellDescription$ Add {B} for each basic Swamp you control. SVar:X:Count$Valid Swamp.Basic+YouCtrl -SVar:RemAIDeck:True Oracle:{T}: Add {C}.\n{3}, {T}: Add {B} for each basic Swamp you control. diff --git a/forge-gui/res/cardsfolder/c/cabal_therapy.txt b/forge-gui/res/cardsfolder/c/cabal_therapy.txt index ab6f2be51e7..ff6441c3620 100644 --- a/forge-gui/res/cardsfolder/c/cabal_therapy.txt +++ b/forge-gui/res/cardsfolder/c/cabal_therapy.txt @@ -1,7 +1,7 @@ Name:Cabal Therapy ManaCost:B Types:Sorcery -K:Flashback Sac<1/Creature> +K:Flashback:Sac<1/Creature> A:SP$ NameCard | Cost$ B | Defined$ You | ValidCards$ Card.nonLand | ValidDesc$ nonland | SubAbility$ DBDiscard | SpellDescription$ Choose a nonland card name. Target player reveals their hand and discards all cards with that name. SVar:DBDiscard:DB$ Discard | ValidTgts$ Player | TgtPrompt$ Select target player | Mode$ RevealDiscardAll | DiscardValid$ Card.NamedCard SVar:RemAIDeck:True diff --git a/forge-gui/res/cardsfolder/c/cackling_counterpart.txt b/forge-gui/res/cardsfolder/c/cackling_counterpart.txt index 672505dedd6..7f68d809030 100644 --- a/forge-gui/res/cardsfolder/c/cackling_counterpart.txt +++ b/forge-gui/res/cardsfolder/c/cackling_counterpart.txt @@ -1,7 +1,7 @@ Name:Cackling Counterpart ManaCost:1 U U Types:Instant -K:Flashback 5 U U +K:Flashback:5 U U A:SP$ CopyPermanent | Cost$ 1 U U | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | SpellDescription$ Create a token that's a copy of target creature you control. SVar:Picture:http://www.wizards.com/global/images/magic/general/cackling_counterpart.jpg Oracle:Create a token that's a copy of target creature you control.\nFlashback {5}{U}{U} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/c/cackling_flames.txt b/forge-gui/res/cardsfolder/c/cackling_flames.txt index deebd93c69f..6cb46393a82 100644 --- a/forge-gui/res/cardsfolder/c/cackling_flames.txt +++ b/forge-gui/res/cardsfolder/c/cackling_flames.txt @@ -1,7 +1,7 @@ Name:Cackling Flames ManaCost:3 R Types:Instant -A:SP$ DealDamage | Cost$ 3 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals 3 damage to target creature or player. Hellbent — CARDNAME deals 5 damage to that creature or player instead if you have no cards in hand. +A:SP$ DealDamage | Cost$ 3 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals 3 damage to any target. Hellbent — CARDNAME deals 5 damage to that permanent or player instead if you have no cards in hand. SVar:X:Count$Hellbent.5.3 SVar:Picture:http://resources.wizards.com/magic/cards/dis/en-us/card107258.jpg -Oracle:Cackling Flames deals 3 damage to target creature or player.\nHellbent — Cackling Flames deals 5 damage to that creature or player instead if you have no cards in hand. +Oracle:Cackling Flames deals 3 damage to any target.\nHellbent — Cackling Flames deals 5 damage to that permanent or player instead if you have no cards in hand. diff --git a/forge-gui/res/cardsfolder/c/call_for_blood.txt b/forge-gui/res/cardsfolder/c/call_for_blood.txt index 283b9bb99db..d6c81454ce0 100644 --- a/forge-gui/res/cardsfolder/c/call_for_blood.txt +++ b/forge-gui/res/cardsfolder/c/call_for_blood.txt @@ -5,4 +5,4 @@ A:SP$ Pump | Cost$ 4 B Sac<1/Creature> | ValidTgts$ Creature | TgtPrompt$ Select SVar:X:Sacrificed$CardPower SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/call_for_blood.jpg -Oracle:As an additional cost to cast Call for Blood, sacrifice a creature.\nTarget creature gets -X/-X until end of turn, where X is the sacrificed creature's power. +Oracle:As an additional cost to cast this spell, sacrifice a creature.\nTarget creature gets -X/-X until end of turn, where X is the sacrificed creature's power. diff --git a/forge-gui/res/cardsfolder/c/call_of_the_full_moon.txt b/forge-gui/res/cardsfolder/c/call_of_the_full_moon.txt index ef5ab40712b..21b9a53205f 100644 --- a/forge-gui/res/cardsfolder/c/call_of_the_full_moon.txt +++ b/forge-gui/res/cardsfolder/c/call_of_the_full_moon.txt @@ -7,4 +7,4 @@ S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 3 | AddToughness T:Mode$Phase | Phase$ Upkeep | WerewolfUntransformCondition$ True | TriggerZones$ Battlefield | Execute$ TrigSac | TriggerDescription$ At the beginning of each upkeep, if a player cast two or more spells last turn, sacrifice CARDNAME. SVar:TrigSac:DB$ Sacrifice | Defined$ Self SVar:Picture:http://www.wizards.com/global/images/magic/general/call_of_the_full_moon.jpg -Oracle:Enchant creature\nEnchanted creature gets +3/+2 and has trample. (It can deal excess combat damage to defending player or planeswalker while attacking.)\nAt the beginning of each upkeep, if a player cast two or more spells last turn, sacrifice Call of the Full Moon. +Oracle:Enchant creature\nEnchanted creature gets +3/+2 and has trample. (It can deal excess combat damage to the player or planeswalker it's attacking.)\nAt the beginning of each upkeep, if a player cast two or more spells last turn, sacrifice Call of the Full Moon. diff --git a/forge-gui/res/cardsfolder/c/call_of_the_herd.txt b/forge-gui/res/cardsfolder/c/call_of_the_herd.txt index fcc4ae672eb..15f60106307 100644 --- a/forge-gui/res/cardsfolder/c/call_of_the_herd.txt +++ b/forge-gui/res/cardsfolder/c/call_of_the_herd.txt @@ -1,7 +1,7 @@ Name:Call of the Herd ManaCost:2 G Types:Sorcery -K:Flashback 3 G +K:Flashback:3 G A:SP$ Token | Cost$ 2 G | TokenAmount$ 1 | TokenName$ Elephant | TokenTypes$ Creature,Elephant | TokenColors$ Green | TokenPower$ 3 | TokenToughness$ 3 | TokenOwner$ You | TokenImage$ g 3 3 elephant ODY | SpellDescription$ Create a 3/3 green Elephant creature token. SVar:Picture:http://www.wizards.com/global/images/magic/general/call_of_the_herd.jpg Oracle:Create a 3/3 green Elephant creature token.\nFlashback {3}{G} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/c/caller_of_the_hunt.txt b/forge-gui/res/cardsfolder/c/caller_of_the_hunt.txt index 7c80ddf951d..e973b31e704 100644 --- a/forge-gui/res/cardsfolder/c/caller_of_the_hunt.txt +++ b/forge-gui/res/cardsfolder/c/caller_of_the_hunt.txt @@ -6,4 +6,4 @@ S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ SVar:X:Count$Valid Creature.ChosenType SVar:FullCost:2 G ChooseCreatureType<1>:MostProminentOnBattlefield SVar:Picture:http://www.wizards.com/global/images/magic/general/caller_of_the_hunt.jpg -Oracle:As an additional cost to cast Caller of the Hunt, choose a creature type.\nCaller of the Hunt's power and toughness are each equal to the number of creatures of the chosen type on the battlefield. +Oracle:As an additional cost to cast this spell, choose a creature type.\nCaller of the Hunt's power and toughness are each equal to the number of creatures of the chosen type on the battlefield. diff --git a/forge-gui/res/cardsfolder/c/calming_licid.txt b/forge-gui/res/cardsfolder/c/calming_licid.txt index f888cfb6a99..e6658df15bc 100644 --- a/forge-gui/res/cardsfolder/c/calming_licid.txt +++ b/forge-gui/res/cardsfolder/c/calming_licid.txt @@ -2,7 +2,7 @@ Name:Calming Licid ManaCost:2 W Types:Creature Licid PT:2/2 -A:AB$ Animate | Cost$ W T | Defined$ Self | RemoveThisAbility$ True | Permanent$ True | RevertCost$ W | Keywords$ Enchant creature | Abilities$ SPAttach | Types$ Enchantment,Aura | RemoveCardTypes$ True | RemoveSubTypes$ True | SubAbility$ DBAttach | SpellDescription$ CARDNAME loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {W} to end this effect. +A:AB$ Animate | Cost$ W T | Defined$ Self | RemoveThisAbility$ True | Permanent$ True | RevertCost$ W | Keywords$ Enchant creature | Abilities$ SPAttach | Types$ Enchantment,Aura | RemoveCardTypes$ True | RemoveEnchantmentTypes$ True | SubAbility$ DBAttach | SpellDescription$ CARDNAME loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {W} to end this effect. SVar:DBAttach:DB$ Attach | ValidTgts$ Creature | AILogic$ Curse SVar:SPAttach:SP$ Attach | Cost$ 0 | ValidTgts$ Creature S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddHiddenKeyword$ CARDNAME can't attack. | Description$ Enchanted creature can't attack. diff --git a/forge-gui/res/cardsfolder/c/caltrops.txt b/forge-gui/res/cardsfolder/c/caltrops.txt index 36f8c93b78e..54a95dcaaba 100644 --- a/forge-gui/res/cardsfolder/c/caltrops.txt +++ b/forge-gui/res/cardsfolder/c/caltrops.txt @@ -2,7 +2,7 @@ Name:Caltrops ManaCost:3 Types:Artifact T:Mode$ Attacks | ValidCard$ Creature | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever a creature attacks, CARDNAME deals 1 damage to it. -SVar:TrigDamage:DB$DealDamage | Defined$ TriggeredAttacker | NumDmg$ 1 +SVar:TrigDamage:DB$DealDamage | Defined$ TriggeredAttackerLKICopy | NumDmg$ 1 SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/caltrops.jpg Oracle:Whenever a creature attacks, Caltrops deals 1 damage to it. diff --git a/forge-gui/res/cardsfolder/c/candles_glow.txt b/forge-gui/res/cardsfolder/c/candles_glow.txt index 43cb94217d8..56302eba215 100644 --- a/forge-gui/res/cardsfolder/c/candles_glow.txt +++ b/forge-gui/res/cardsfolder/c/candles_glow.txt @@ -2,8 +2,8 @@ Name:Candles' Glow ManaCost:1 W Types:Instant Arcane K:Splice:Arcane:1 W -A:SP$ PreventDamage | Cost$ 1 W | ValidTgts$ Player,Creature | Amount$ 3 | PreventionSubAbility$ GlowOfLife | References$ GlowOfLife | ShieldEffectTarget$ You | TgtPrompt$ Select target creature or player | SpellDescription$ Prevent the next 3 damage that would be dealt to target creature or player this turn. You gain life equal to the damage prevented this way. +A:SP$ PreventDamage | Cost$ 1 W | ValidTgts$ Creature,Player,Planeswalker | Amount$ 3 | PreventionSubAbility$ GlowOfLife | References$ GlowOfLife | ShieldEffectTarget$ You | TgtPrompt$ Select any target | SpellDescription$ Prevent the next 3 damage that would be dealt to any target this turn. You gain life equal to the damage prevented this way. SVar:GlowOfLife:DB$ GainLife | Defined$ ShieldEffectTarget | LifeAmount$ PreventedDamage | SpellDescription$ You gain life equal to the damage prevented this way. DeckHints:Type$Arcane SVar:Picture:http://www.wizards.com/global/images/magic/general/candles_glow.jpg -Oracle:Prevent the next 3 damage that would be dealt to target creature or player this turn. You gain life equal to the damage prevented this way.\nSplice onto Arcane {1}{W} (As you cast an Arcane spell, you may reveal this card from your hand and pay its splice cost. If you do, add this card's effects to that spell.) +Oracle:Prevent the next 3 damage that would be dealt to any target this turn. You gain life equal to the damage prevented this way.\nSplice onto Arcane {1}{W} (As you cast an Arcane spell, you may reveal this card from your hand and pay its splice cost. If you do, add this card's effects to that spell.) diff --git a/forge-gui/res/cardsfolder/c/canopy_claws.txt b/forge-gui/res/cardsfolder/c/canopy_claws.txt index ea58ca443a6..7b3f6c62647 100644 --- a/forge-gui/res/cardsfolder/c/canopy_claws.txt +++ b/forge-gui/res/cardsfolder/c/canopy_claws.txt @@ -1,7 +1,7 @@ Name:Canopy Claws ManaCost:G Types:Instant -K:Flashback G +K:Flashback:G A:SP$ Debuff | Cost$ G | ValidTgts$ Creature | TgtPrompt$ Select target creature | Keywords$ Flying | SpellDescription$ Target creature loses flying until end of turn. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/canopy_claws.jpg diff --git a/forge-gui/res/cardsfolder/c/canopy_surge.txt b/forge-gui/res/cardsfolder/c/canopy_surge.txt index 5923affc573..9d33eca3e74 100644 --- a/forge-gui/res/cardsfolder/c/canopy_surge.txt +++ b/forge-gui/res/cardsfolder/c/canopy_surge.txt @@ -5,4 +5,4 @@ K:Kicker:2 A:SP$ DamageAll | Cost$ 1 G | ValidCards$ Creature.withFlying | ValidPlayers$ Player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals 1 damage to each creature with flying and each player. If CARDNAME was kicked, it deals 4 damage to each creature with flying and each player instead. SVar:X:Count$Kicked.4.1 SVar:Picture:http://www.wizards.com/global/images/magic/general/canopy_surge.jpg -Oracle:Kicker {2} (You may pay an additional {2} as you cast this spell.)\nCanopy Surge deals 1 damage to each creature with flying and each player. If Canopy Surge was kicked, it deals 4 damage to each creature with flying and each player instead. +Oracle:Kicker {2} (You may pay an additional {2} as you cast this spell.)\nCanopy Surge deals 1 damage to each creature with flying and each player. If this spell was kicked, it deals 4 damage to each creature with flying and each player instead. diff --git a/forge-gui/res/cardsfolder/c/canyon_wildcat.txt b/forge-gui/res/cardsfolder/c/canyon_wildcat.txt index b328e271e0d..dfd2b98f7f7 100644 --- a/forge-gui/res/cardsfolder/c/canyon_wildcat.txt +++ b/forge-gui/res/cardsfolder/c/canyon_wildcat.txt @@ -4,4 +4,4 @@ Types:Creature Cat PT:2/1 K:Mountainwalk SVar:Picture:http://resources.wizards.com/magic/cards/8ed/en-us/card45353.jpg -Oracle:Mountainwalk +Oracle:Mountainwalk (This creature can't be blocked as long as defending player controls a Mountain.) diff --git a/forge-gui/res/cardsfolder/c/capashen_knight.txt b/forge-gui/res/cardsfolder/c/capashen_knight.txt index b057983dea7..8d65e2a8cda 100644 --- a/forge-gui/res/cardsfolder/c/capashen_knight.txt +++ b/forge-gui/res/cardsfolder/c/capashen_knight.txt @@ -5,4 +5,4 @@ PT:1/1 K:First Strike A:AB$ Pump | Cost$ 1 W | NumAtt$ +1 | SpellDescription$ CARDNAME gets +1/+0 until end of turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/capashen_knight.jpg -Oracle:First strike\n{1}{W}: Capashen Knight gets +1/+0 until end of turn. +Oracle:First strike (This creature deals combat damage before creatures without first strike.)\n{1}{W}: Capashen Knight gets +1/+0 until end of turn. diff --git a/forge-gui/res/cardsfolder/c/capricious_sorcerer.txt b/forge-gui/res/cardsfolder/c/capricious_sorcerer.txt index cc56b3b66e7..787d6940d44 100644 --- a/forge-gui/res/cardsfolder/c/capricious_sorcerer.txt +++ b/forge-gui/res/cardsfolder/c/capricious_sorcerer.txt @@ -2,6 +2,6 @@ Name:Capricious Sorcerer ManaCost:2 U Types:Creature Human Wizard PT:1/1 -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | PlayerTurn$ True | ActivationPhases$ Upkeep->BeginCombat | SpellDescription$ CARDNAME deals 1 damage to target creature or player. Activate this ability only during your turn, before attackers are declared. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | PlayerTurn$ True | ActivationPhases$ Upkeep->BeginCombat | SpellDescription$ CARDNAME deals 1 damage to any target. Activate this ability only during your turn, before attackers are declared. SVar:Picture:http://resources.wizards.com/magic/cards/po/en-us/card4250.jpg -Oracle:{T}: Capricious Sorcerer deals 1 damage to target creature or player. Activate this ability only during your turn, before attackers are declared. +Oracle:{T}: Capricious Sorcerer deals 1 damage to any target. Activate this ability only during your turn, before attackers are declared. diff --git a/forge-gui/res/cardsfolder/c/captain_of_the_watch.txt b/forge-gui/res/cardsfolder/c/captain_of_the_watch.txt index a2d7fe7753b..2008d70d876 100644 --- a/forge-gui/res/cardsfolder/c/captain_of_the_watch.txt +++ b/forge-gui/res/cardsfolder/c/captain_of_the_watch.txt @@ -9,4 +9,4 @@ SVar:TrigToken:DB$ Token | TokenAmount$ 3 | TokenName$ Soldier | TokenTypes$ Cre SVar:PlayMain1:TRUE DeckHints:Type$Soldier SVar:Picture:http://www.wizards.com/global/images/magic/general/captain_of_the_watch.jpg -Oracle:Vigilance\nOther Soldier creatures you control get +1/+1 and have vigilance.\nWhen Captain of the Watch enters the battlefield, create three 1/1 white Soldier creature tokens. \ No newline at end of file +Oracle:Vigilance (Attacking doesn't cause this creature to tap.)\nOther Soldier creatures you control get +1/+1 and have vigilance.\nWhen Captain of the Watch enters the battlefield, create three 1/1 white Soldier creature tokens. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/c/captains_maneuver.txt b/forge-gui/res/cardsfolder/c/captains_maneuver.txt index 76199a5811c..d66b2188939 100644 --- a/forge-gui/res/cardsfolder/c/captains_maneuver.txt +++ b/forge-gui/res/cardsfolder/c/captains_maneuver.txt @@ -1,12 +1,12 @@ Name:Captain's Maneuver ManaCost:X R W Types:Instant -# turn targeted creature or player into choosen -A:SP$ ChoosePlayer | Cost$ X R W | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Choices$ TargetedPlayer | Defined$ You | SubAbility$ DBChooseCreature | StackDescription$ SpellDescription | SpellDescription$ The next X damage that would be dealt to target creature or player this turn is dealt to another target creature or player instead. +# turn targeted creature or player into chosen +A:SP$ ChoosePlayer | Cost$ X R W | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Choices$ TargetedPlayer | Defined$ You | SubAbility$ DBChooseCreature | StackDescription$ SpellDescription | SpellDescription$ The next X damage that would be dealt to target creature, planeswalker, or player this turn is dealt to another target creature, planeswalker, or player instead. SVar:DBChooseCreature:DB$ ChooseCard | DefinedCards$ Targeted | Mandatory$ True | Defined$ You | SubAbility$ DBSetVarBefore SVar:DBSetVarBefore:DB$ StoreSVar | SVar$ Y | Type$ CountSVar | Expression$ X | SubAbility$ DBEffect -SVar:DBEffect:DB$ Effect | ValidTgts$ Creature,Player | TargetUnique$ True | TgtPrompt$ Select target creature or player to redirect the damage to | ReplacementEffects$ ManeuverDamage | Triggers$ OutOfSight | SVars$ ManeuverDamage,ManeuverDmg,ExileEffect,OutOfSight,Y | References$ ManeuverDamage,OutOfSight,ManeuverDmg,ExileEffect,Y | RememberObjects$ ThisTargetedCard,ThisTargetedPlayer | SubAbility$ DBCleanup -SVar:ManeuverDamage:Event$ DamageDone | ValidTarget$ Card.Creature+ChosenCard,Player.Chosen | ReplaceWith$ ManeuverDmg | DamageTarget$ Remembered | References$ Y | Description$ The next X damage that would be dealt to target creature or player this turn is dealt to another target creature or player instead. +SVar:DBEffect:DB$ Effect | ValidTgts$ Creature,Player,Planeswalker | TargetUnique$ True | TgtPrompt$ Select another target to redirect the damage to | ReplacementEffects$ ManeuverDamage | Triggers$ OutOfSight | SVars$ ManeuverDamage,ManeuverDmg,ExileEffect,OutOfSight,Y | References$ ManeuverDamage,OutOfSight,ManeuverDmg,ExileEffect,Y | RememberObjects$ ThisTargetedCard,ThisTargetedPlayer | SubAbility$ DBCleanup +SVar:ManeuverDamage:Event$ DamageDone | ValidTarget$ Card.Creature+ChosenCard,Card.Planeswalker+ChosenCard,Player.Chosen | ReplaceWith$ ManeuverDmg | DamageTarget$ Remembered | References$ Y | Description$ The next X damage that would be dealt to target creature, planeswalker, or player this turn is dealt to another target creature, planeswalker, or player instead. SVar:ManeuverDmg:DB$ ReplaceSplitDamage | DamageTarget$ Remembered | VarName$ Y | References$ Y SVar:OutOfSight:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.ChosenCard,Card.IsRemembered | Execute$ ExileEffect | Static$ True SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile @@ -16,4 +16,4 @@ SVar:X:Count$xPaid SVar:Y:Number$0 SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/captains_maneuver.jpg -Oracle:The next X damage that would be dealt to target creature or player this turn is dealt to another target creature or player instead. +Oracle:The next X damage that would be dealt to target creature, planeswalker, or player this turn is dealt to another target creature, planeswalker, or player instead. diff --git a/forge-gui/res/cardsfolder/c/captured_sunlight.txt b/forge-gui/res/cardsfolder/c/captured_sunlight.txt index 7da8f843168..e4a2a69519b 100644 --- a/forge-gui/res/cardsfolder/c/captured_sunlight.txt +++ b/forge-gui/res/cardsfolder/c/captured_sunlight.txt @@ -4,4 +4,4 @@ Types:Sorcery A:SP$ GainLife | Cost$ 2 G W | LifeAmount$ 4 | SpellDescription$ You gain 4 life. K:Cascade SVar:Picture:http://www.wizards.com/global/images/magic/general/captured_sunlight.jpg -Oracle:Cascade (When you cast this spell, exile cards from the top of your library until you exile a nonland card that costs less. You may cast it without paying its mana cost. Put the exiled cards on the bottom in a random order.)\nYou gain 4 life. +Oracle:Cascade (When you cast this spell, exile cards from the top of your library until you exile a nonland card that costs less. You may cast it without paying its mana cost. Put the exiled cards on the bottom of your library in a random order.)\nYou gain 4 life. diff --git a/forge-gui/res/cardsfolder/c/carbonize.txt b/forge-gui/res/cardsfolder/c/carbonize.txt index 2338bad4ef7..919eec37c78 100644 --- a/forge-gui/res/cardsfolder/c/carbonize.txt +++ b/forge-gui/res/cardsfolder/c/carbonize.txt @@ -1,7 +1,7 @@ Name:Carbonize ManaCost:2 R Types:Instant -A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SubAbility$ DB | ReplaceDyingDefined$ Targeted | SpellDescription$ CARDNAME deals 3 damage to target creature or player. That creature can't be regenerated this turn. If the creature would die this turn, exile it instead. -SVar:DB:DB$Pump | KW$ HIDDEN CARDNAME can't be regenerated. | Defined$ Targeted +A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SubAbility$ DB | ReplaceDyingDefined$ Targeted.Creature | SpellDescription$ CARDNAME deals 3 damage to any target. If it's a creature, it can't be regenerated this turn, and if it would die this turn, exile it instead. +SVar:DB:DB$Pump | KW$ HIDDEN CARDNAME can't be regenerated. | Defined$ Targeted.Creature SVar:Picture:http://www.wizards.com/global/images/magic/general/carbonize.jpg -Oracle:Carbonize deals 3 damage to target creature or player. That creature can't be regenerated this turn. If the creature would die this turn, exile it instead. \ No newline at end of file +Oracle:Carbonize deals 3 damage to any target. If it's a creature, it can't be regenerated this turn, and if it would die this turn, exile it instead. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/c/caregiver.txt b/forge-gui/res/cardsfolder/c/caregiver.txt index 176bae8c360..ef6d1547d82 100644 --- a/forge-gui/res/cardsfolder/c/caregiver.txt +++ b/forge-gui/res/cardsfolder/c/caregiver.txt @@ -2,7 +2,7 @@ Name:Caregiver ManaCost:W Types:Creature Human Cleric PT:1/1 -A:AB$ PreventDamage | Cost$ W Sac<1/Creature> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ W Sac<1/Creature> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to any target this turn. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/caregiver.jpg -Oracle:{W}, Sacrifice a creature: Prevent the next 1 damage that would be dealt to target creature or player this turn. +Oracle:{W}, Sacrifice a creature: Prevent the next 1 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/c/carnage_tyrant.txt b/forge-gui/res/cardsfolder/c/carnage_tyrant.txt index ec2bf6b0151..dd2d6682ace 100644 --- a/forge-gui/res/cardsfolder/c/carnage_tyrant.txt +++ b/forge-gui/res/cardsfolder/c/carnage_tyrant.txt @@ -6,4 +6,4 @@ K:CARDNAME can't be countered. K:Trample K:Hexproof SVar:Picture:http://www.wizards.com/global/images/magic/general/carnage_tyrant.jpg -Oracle:Carnage Tyrant can't be countered.\nTrample, hexproof +Oracle:This spell can't be countered.\nTrample, hexproof diff --git a/forge-gui/res/cardsfolder/c/carnage_wurm.txt b/forge-gui/res/cardsfolder/c/carnage_wurm.txt index 8546e485983..f9afe9eb024 100644 --- a/forge-gui/res/cardsfolder/c/carnage_wurm.txt +++ b/forge-gui/res/cardsfolder/c/carnage_wurm.txt @@ -5,4 +5,4 @@ PT:6/6 K:Bloodthirst:3 K:Trample SVar:Picture:http://www.wizards.com/global/images/magic/general/carnage_wurm.jpg -Oracle:Bloodthirst 3 (If an opponent was dealt damage this turn, this creature enters the battlefield with three +1/+1 counters on it.)\nTrample (This creature can deal excess combat damage to defending player or planeswalker while attacking.) +Oracle:Bloodthirst 3 (If an opponent was dealt damage this turn, this creature enters the battlefield with three +1/+1 counters on it.)\nTrample (This creature can deal excess combat damage to the player or planeswalker it's attacking.) diff --git a/forge-gui/res/cardsfolder/c/carrion.txt b/forge-gui/res/cardsfolder/c/carrion.txt index f38951ac261..4d8319f1539 100644 --- a/forge-gui/res/cardsfolder/c/carrion.txt +++ b/forge-gui/res/cardsfolder/c/carrion.txt @@ -5,4 +5,4 @@ A:SP$ Token | Cost$ 1 B B Sac<1/Creature> | TokenName$ Insect | TokenColors$ Bla SVar:X:Sacrificed$CardPower SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/carrion.jpg -Oracle:As an additional cost to cast Carrion, sacrifice a creature.\nCreate X 0/1 black Insect creature tokens, where X is the sacrificed creature's power. +Oracle:As an additional cost to cast this spell, sacrifice a creature.\nCreate X 0/1 black Insect creature tokens, where X is the sacrificed creature's power. diff --git a/forge-gui/res/cardsfolder/c/carven_caryatid.txt b/forge-gui/res/cardsfolder/c/carven_caryatid.txt index c7bc462314e..7ab10c6db67 100644 --- a/forge-gui/res/cardsfolder/c/carven_caryatid.txt +++ b/forge-gui/res/cardsfolder/c/carven_caryatid.txt @@ -6,4 +6,4 @@ K:Defender T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerDescription$ When CARDNAME enters the battlefield, draw a card. SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/carven_caryatid.jpg -Oracle:Defender\nWhen Carven Caryatid enters the battlefield, draw a card. +Oracle:Defender (This creature can't attack.)\nWhen Carven Caryatid enters the battlefield, draw a card. diff --git a/forge-gui/res/cardsfolder/c/cat_warriors.txt b/forge-gui/res/cardsfolder/c/cat_warriors.txt index c384220b61f..69f4e47a817 100644 --- a/forge-gui/res/cardsfolder/c/cat_warriors.txt +++ b/forge-gui/res/cardsfolder/c/cat_warriors.txt @@ -4,4 +4,4 @@ Types:Creature Cat Warrior PT:2/2 K:Forestwalk SVar:Picture:http://resources.wizards.com/magic/cards/6e/en-us/card16450.jpg -Oracle:Forestwalk +Oracle:Forestwalk (This creature can't be blocked as long as defending player controls a Forest.) diff --git a/forge-gui/res/cardsfolder/c/catalyst_elemental.txt b/forge-gui/res/cardsfolder/c/catalyst_elemental.txt new file mode 100644 index 00000000000..912beb52ac3 --- /dev/null +++ b/forge-gui/res/cardsfolder/c/catalyst_elemental.txt @@ -0,0 +1,6 @@ +Name:Catalyst Elemental +ManaCost:2 R +Types:Creature Elemental +A:AB$ Mana | Cost$ Sac<1/CARDNAME> | Produced$ R R | SpellDescription$ Add {R}{R}. +Oracle:Sacrifice Catalyst Elemental: Add {R}{R}. +PT:2/2 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/c/cathartic_reunion.txt b/forge-gui/res/cardsfolder/c/cathartic_reunion.txt index a631a36a798..701a869a3d2 100644 --- a/forge-gui/res/cardsfolder/c/cathartic_reunion.txt +++ b/forge-gui/res/cardsfolder/c/cathartic_reunion.txt @@ -5,4 +5,4 @@ A:SP$ Draw | Cost$ 1 R Discard<2/Card> | CostDesc$ As an additional cost to cast DeckHas:Ability$Discard DeckHints:Keyword$Madness & Ability$Delirium SVar:Picture:http://www.wizards.com/global/images/magic/general/cathartic_reunion.jpg -Oracle:As an additional cost to cast Cathartic Reunion, discard two cards.\nDraw three cards. \ No newline at end of file +Oracle:As an additional cost to cast this spell, discard two cards.\nDraw three cards. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/c/cathedral_membrane.txt b/forge-gui/res/cardsfolder/c/cathedral_membrane.txt index 9519426d89f..c72997041ef 100644 --- a/forge-gui/res/cardsfolder/c/cathedral_membrane.txt +++ b/forge-gui/res/cardsfolder/c/cathedral_membrane.txt @@ -9,4 +9,4 @@ T:Mode$ Blocks | ValidCard$ Card.Self | Execute$ TrigRem | Secondary$ True | Tri SVar:TrigRem:DB$ Cleanup | ClearRemembered$ True | SubAbility$ DBRem SVar:DBRem:DB$ Pump | RememberObjects$ Valid Creature.blockedBySource SVar:Picture:http://www.wizards.com/global/images/magic/general/cathedral_membrane.jpg -Oracle:({P/W} can be paid with either {W} or 2 life.)\nDefender\nWhen Cathedral Membrane dies during combat, it deals 6 damage to each creature it blocked this combat. +Oracle:({W/P} can be paid with either {W} or 2 life.)\nDefender\nWhen Cathedral Membrane dies during combat, it deals 6 damage to each creature it blocked this combat. diff --git a/forge-gui/res/cardsfolder/c/cauldron_dance.txt b/forge-gui/res/cardsfolder/c/cauldron_dance.txt index d5420591736..8fdd27a6393 100644 --- a/forge-gui/res/cardsfolder/c/cauldron_dance.txt +++ b/forge-gui/res/cardsfolder/c/cauldron_dance.txt @@ -12,4 +12,4 @@ SVar:DelTrig2:DB$ DelayedTrigger | Mode$ Phase | Phase$ End Of Turn | Execute$ T SVar:TrigSac:DB$ SacrificeAll | Defined$ DelayTriggerRemembered SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/cauldron_dance.jpg -Oracle:Cast Cauldron Dance only during combat.\nReturn target creature card from your graveyard to the battlefield. That creature gains haste. Return it to your hand at the beginning of the next end step.\nYou may put a creature card from your hand onto the battlefield. That creature gains haste. Its controller sacrifices it at the beginning of the next end step. +Oracle:Cast this spell only during combat.\nReturn target creature card from your graveyard to the battlefield. That creature gains haste. Return it to your hand at the beginning of the next end step.\nYou may put a creature card from your hand onto the battlefield. That creature gains haste. Its controller sacrifices it at the beginning of the next end step. diff --git a/forge-gui/res/cardsfolder/c/cautery_sliver.txt b/forge-gui/res/cardsfolder/c/cautery_sliver.txt index 78b5380f419..6ac5ecea735 100644 --- a/forge-gui/res/cardsfolder/c/cautery_sliver.txt +++ b/forge-gui/res/cardsfolder/c/cautery_sliver.txt @@ -2,10 +2,10 @@ Name:Cautery Sliver ManaCost:R W Types:Creature Sliver PT:2/2 -S:Mode$ Continuous | Affected$ Sliver | AddAbility$ Damage | Description$ All Slivers have "{1}, Sacrifice this permanent: This permanent deals 1 damage to target creature or player." -SVar:Damage:AB$ DealDamage | Cost$ 1 Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. -S:Mode$ Continuous | Affected$ Sliver | AddAbility$ Prevent | Description$ All Slivers have "{1}, Sacrifice this permanent: Prevent the next 1 damage that would be dealt to target Sliver creature or player this turn." -SVar:Prevent:AB$ PreventDamage | Cost$ 1 Sac<1/CARDNAME> | ValidTgts$ Creature.Sliver,Player | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to target Sliver creature or player this turn. +S:Mode$ Continuous | Affected$ Sliver | AddAbility$ Damage | Description$ All Slivers have "{1}, Sacrifice this permanent: This permanent deals 1 damage to any target." +SVar:Damage:AB$ DealDamage | Cost$ 1 Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. +S:Mode$ Continuous | Affected$ Sliver | AddAbility$ Prevent | Description$ All Slivers have "{1}, Sacrifice this permanent: Prevent the next 1 damage that would be dealt to target player, planeswalker, or Sliver creature this turn." +SVar:Prevent:AB$ PreventDamage | Cost$ 1 Sac<1/CARDNAME> | ValidTgts$ Creature.Sliver,Player,Planeswalker | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to target player, planeswalker, or Sliver creature this turn. SVar:PlayMain1:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/cautery_sliver.jpg -Oracle:All Slivers have "{1}, Sacrifice this permanent: This permanent deals 1 damage to target creature or player."\nAll Slivers have "{1}, Sacrifice this permanent: Prevent the next 1 damage that would be dealt to target Sliver creature or player this turn." +Oracle:All Slivers have "{1}, Sacrifice this permanent: This permanent deals 1 damage to any target."\nAll Slivers have "{1}, Sacrifice this permanent: Prevent the next 1 damage that would be dealt to target player, planeswalker, or Sliver creature this turn." diff --git a/forge-gui/res/cardsfolder/c/cavalry_drillmaster.txt b/forge-gui/res/cardsfolder/c/cavalry_drillmaster.txt new file mode 100644 index 00000000000..4add8054232 --- /dev/null +++ b/forge-gui/res/cardsfolder/c/cavalry_drillmaster.txt @@ -0,0 +1,7 @@ +Name:Cavalry Drillmaster +ManaCost:1 W +Types:Creature Human Knight +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigPump | TriggerDescription$ When CARDNAME enters the battlefield, target creature gets +2/+0 and gains first strike until end of turn. +SVar:TrigPump:DB$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ 2 | NumDef$ 0 | KW$ First Strike +Oracle:When Cavalry Drillmaster enters the battlefield, target creature gets +2/+0 and gains first strike until end of turn. (It deals combat damage before creatures without first strike.) +PT:2/1 diff --git a/forge-gui/res/cardsfolder/c/cave_in.txt b/forge-gui/res/cardsfolder/c/cave_in.txt index 5465fc8fffe..0950ec2dcec 100644 --- a/forge-gui/res/cardsfolder/c/cave_in.txt +++ b/forge-gui/res/cardsfolder/c/cave_in.txt @@ -4,4 +4,4 @@ Types:Sorcery A:SP$ DamageAll | Cost$ 3 R R | NumDmg$ 2 | ValidCards$ Creature | ValidPlayers$ Player | ValidDescription$ each creature and each player. | SpellDescription$ CARDNAME deals 2 damage to each creature and each player. SVar:AltCost:Cost$ ExileFromHand<1/Card.Red> | Description$ You may exile a red card from your hand rather than pay Cave-In's mana cost. SVar:Picture:http://www.wizards.com/global/images/magic/general/cave_in.jpg -Oracle:You may exile a red card from your hand rather than pay Cave-In's mana cost.\nCave-In deals 2 damage to each creature and each player. +Oracle:You may exile a red card from your hand rather than pay this spell's mana cost.\nCave-In deals 2 damage to each creature and each player. diff --git a/forge-gui/res/cardsfolder/c/cave_people.txt b/forge-gui/res/cardsfolder/c/cave_people.txt index 898e136b5c6..8f848a3fc3b 100644 --- a/forge-gui/res/cardsfolder/c/cave_people.txt +++ b/forge-gui/res/cardsfolder/c/cave_people.txt @@ -6,4 +6,4 @@ T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigPump | TriggerDescription$ A:AB$ Pump | Cost$ 1 R R T | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ Mountainwalk | SpellDescription$ Target creature gains mountainwalk until end of turn. SVar:TrigPump:DB$Pump | Defined$ Self | NumAtt$ 1 | NumDef$ -2 SVar:Picture:http://www.wizards.com/global/images/magic/general/cave_people.jpg -Oracle:Whenever Cave People attacks, it gets +1/-2 until end of turn.\n{1}{R}{R}, {T}: Target creature gains mountainwalk until end of turn. +Oracle:Whenever Cave People attacks, it gets +1/-2 until end of turn.\n{1}{R}{R}, {T}: Target creature gains mountainwalk until end of turn. (It can't be blocked as long as defending player controls a Mountain.) diff --git a/forge-gui/res/cardsfolder/c/cave_sense.txt b/forge-gui/res/cardsfolder/c/cave_sense.txt index 48491a2c6e1..b89e2406385 100644 --- a/forge-gui/res/cardsfolder/c/cave_sense.txt +++ b/forge-gui/res/cardsfolder/c/cave_sense.txt @@ -5,4 +5,4 @@ K:Enchant creature A:SP$ Attach | Cost$ 1 R | ValidTgts$ Creature | AILogic$ Pump S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 1 | AddToughness$ 1 | AddKeyword$ Mountainwalk | Description$ Enchanted creature gets +1/+1 and has mountainwalk. SVar:Picture:http://www.wizards.com/global/images/magic/general/cave_sense.jpg -Oracle:Enchant creature\nEnchanted creature gets +1/+1 and has mountainwalk. +Oracle:Enchant creature\nEnchanted creature gets +1/+1 and has mountainwalk. (It can't be blocked as long as defending player controls a Mountain.) diff --git a/forge-gui/res/cardsfolder/c/cavern_crawler.txt b/forge-gui/res/cardsfolder/c/cavern_crawler.txt index 94755aa537c..5e99b555c3c 100644 --- a/forge-gui/res/cardsfolder/c/cavern_crawler.txt +++ b/forge-gui/res/cardsfolder/c/cavern_crawler.txt @@ -5,4 +5,4 @@ PT:0/3 K:Mountainwalk A:AB$ Pump | Cost$ R | NumAtt$ +1 | NumDef$ -1 | SpellDescription$ CARDNAME gets +1/-1 until end of turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/cavern_crawler.jpg -Oracle:Mountainwalk\n{R}: Cavern Crawler gets +1/-1 until end of turn. +Oracle:Mountainwalk (This creature can't be blocked as long as defending player controls a Mountain.)\n{R}: Cavern Crawler gets +1/-1 until end of turn. diff --git a/forge-gui/res/cardsfolder/c/cavern_lampad.txt b/forge-gui/res/cardsfolder/c/cavern_lampad.txt index 8920b1c763f..f64fbcba29b 100644 --- a/forge-gui/res/cardsfolder/c/cavern_lampad.txt +++ b/forge-gui/res/cardsfolder/c/cavern_lampad.txt @@ -6,4 +6,4 @@ K:Bestow:5 B K:Intimidate S:Mode$ Continuous | Affected$ Card.EnchantedBy | AddPower$ 2 | AddToughness$ 2 | AddKeyword$ Intimidate | Description$ Enchanted creature gets +2/+2 and has intimidate. SVar:Picture:http://www.wizards.com/global/images/magic/general/cavern_lampad.jpg -Oracle:Bestow {5}{B} (If you cast this card for its bestow cost, it's an Aura spell with enchant creature. It becomes a creature again if it's not attached to a creature.)\nIntimidate\nEnchanted creature gets +2/+2 and has intimidate. +Oracle:Bestow {5}{B} (If you cast this card for its bestow cost, it's an Aura spell with enchant creature. It becomes a creature again if it's not attached to a creature.)\nIntimidate (This creature can't be blocked except by artifact creatures and/or creatures that share a color with it.)\nEnchanted creature gets +2/+2 and has intimidate. diff --git a/forge-gui/res/cardsfolder/c/celestial_dawn.txt b/forge-gui/res/cardsfolder/c/celestial_dawn.txt index aa35ecf8e94..c3521f84c52 100644 --- a/forge-gui/res/cardsfolder/c/celestial_dawn.txt +++ b/forge-gui/res/cardsfolder/c/celestial_dawn.txt @@ -1,7 +1,7 @@ Name:Celestial Dawn ManaCost:1 W W Types:Enchantment -S:Mode$ Continuous | Affected$ Land.YouCtrl | AddType$ Plains | RemoveSubTypes$ True | RemoveAllAbilities$ True | Description$ Lands you control are Plains. +S:Mode$ Continuous | Affected$ Land.YouCtrl | AddType$ Plains | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True | Description$ Lands you control are Plains. S:Mode$ Continuous | Affected$ Card.YouOwn+nonLand | SetColor$ White | AffectedZone$ Hand,Library,Graveyard,Exile,Command | Description$ Nonland permanents you control are white. The same is true for spells you control and nonland cards you own that aren't on the battlefield. S:Mode$ Continuous | Affected$ Card.YouCtrl+nonLand | SetColor$ White | AffectedZone$ Battlefield,Stack S:Mode$ Continuous | Affected$ You | ManaColorConversion$ Additive | WhiteConversion$ All | Description$ You may spend white mana as though it were mana of any color. diff --git a/forge-gui/res/cardsfolder/c/cemetery_recruitment.txt b/forge-gui/res/cardsfolder/c/cemetery_recruitment.txt index 2e33e08e00b..0f5315edb96 100644 --- a/forge-gui/res/cardsfolder/c/cemetery_recruitment.txt +++ b/forge-gui/res/cardsfolder/c/cemetery_recruitment.txt @@ -1,9 +1,9 @@ Name:Cemetery Recruitment ManaCost:1 B Types:Sorcery -A:SP$ ChangeZone | Cost$ 1 B | Origin$ Graveyard | Destination$ Hand | TgtPrompt$ Choose target creature card in your graveyard | ValidTgts$ Creature.YouCtrl | SubAbility$ DBDraw | RememberTargets$ True | SpellDescription$ Return target creature card from your graveyard to your hand. If it is a Zombie card,draw a card. +A:SP$ ChangeZone | Cost$ 1 B | Origin$ Graveyard | Destination$ Hand | TgtPrompt$ Choose target creature card in your graveyard | ValidTgts$ Creature.YouCtrl | SubAbility$ DBDraw | RememberTargets$ True | SpellDescription$ Return target creature card from your graveyard to your hand. If it's a Zombie card, draw a card. SVar:DBDraw:DB$ Draw | NumCards$ 1 | ConditionDefined$ Remembered | ConditionPresent$ Card.Zombie | ConditionCompare$ GE1 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered DeckHints:Type$Zombie SVar:Picture:http://www.wizards.com/global/images/magic/general/cemetery_recruitment.jpg -Oracle:Return target creature from your graveyard to your hand. If it is a Zombie card,draw a card. \ No newline at end of file +Oracle:Return target creature card from your graveyard to your hand. If it's a Zombie card, draw a card. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/c/censor.txt b/forge-gui/res/cardsfolder/c/censor.txt index fa2e390b099..8b70ec932e6 100644 --- a/forge-gui/res/cardsfolder/c/censor.txt +++ b/forge-gui/res/cardsfolder/c/censor.txt @@ -4,4 +4,4 @@ Types:Instant A:SP$ Counter | Cost$ 1 U | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Card | UnlessCost$ 1 | SpellDescription$ Counter target spell unless its controller pays {1}. K:Cycling:U SVar:Picture:http://www.wizards.com/global/images/magic/general/censor.jpg -Oracle:Counter target spell unless its controller pays {1}.\nCycling {U} ({U}, Discard this card: Draw a card.) \ No newline at end of file +Oracle:Counter target spell unless its controller pays {1}.\nCycling {U} ({U}, Discard this card: Draw a card.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/c/chain_lightning.txt b/forge-gui/res/cardsfolder/c/chain_lightning.txt index d6c4e58669c..b5045e1c9bf 100644 --- a/forge-gui/res/cardsfolder/c/chain_lightning.txt +++ b/forge-gui/res/cardsfolder/c/chain_lightning.txt @@ -1,7 +1,7 @@ Name:Chain Lightning ManaCost:R Types:Sorcery -A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select target | NumDmg$ 3 | SubAbility$ DBCopy1 | SpellDescription$ CARDNAME deals 3 damage to any target. Then that player or that permanents's controller may pay {R}{R}. If the player does, they may copy this spell and may choose a new target for that copy. +A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select target | NumDmg$ 3 | SubAbility$ DBCopy1 | SpellDescription$ CARDNAME deals 3 damage to any target. Then that player or that permanent's controller may pay {R}{R}. If the player does, they may copy this spell and may choose a new target for that copy. SVar:DBCopy1:DB$ CopySpellAbility | Defined$ Parent | Controller$ TargetedController | UnlessPayer$ TargetedController | UnlessCost$ R R | UnlessSwitched$ True | ConditionDefined$ Targeted | ConditionPresent$ Permanent | ConditionCompare$ GE1 | SubAbility$ DBCopy2 | StackDescription$ None SVar:DBCopy2:DB$ CopySpellAbility | Defined$ Parent | Controller$ Targeted | UnlessPayer$ Targeted | UnlessCost$ R R | UnlessSwitched$ True | ConditionDefined$ Targeted | ConditionPresent$ Permanent | ConditionCompare$ EQ0 | StackDescription$ None SVar:Picture:http://www.wizards.com/global/images/magic/general/chain_lightning.jpg diff --git a/forge-gui/res/cardsfolder/c/chain_of_plasma.txt b/forge-gui/res/cardsfolder/c/chain_of_plasma.txt index ff0dd0645ad..8eea0a87f49 100644 --- a/forge-gui/res/cardsfolder/c/chain_of_plasma.txt +++ b/forge-gui/res/cardsfolder/c/chain_of_plasma.txt @@ -1,8 +1,8 @@ Name:Chain of Plasma ManaCost:1 R Types:Instant -A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SubAbility$ DBCopy1 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. Then that player or that creature's controller may discard a card. If the player does, they may copy this spell and may choose a new target for that copy. -SVar:DBCopy1:DB$ CopySpellAbility | Defined$ Parent | Controller$ TargetedController | UnlessPayer$ TargetedController | UnlessCost$ Discard<1/Card> | UnlessSwitched$ True | ConditionDefined$ Targeted | ConditionPresent$ Creature | ConditionCompare$ GE1 | SubAbility$ DBCopy2 | StackDescription$ None -SVar:DBCopy2:DB$ CopySpellAbility | Defined$ Parent | Controller$ Targeted | UnlessPayer$ Targeted | UnlessCost$ Discard<1/Card> | UnlessSwitched$ True | ConditionDefined$ Targeted | ConditionPresent$ Creature | ConditionCompare$ EQ0 | StackDescription$ None +A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SubAbility$ DBCopy1 | SpellDescription$ CARDNAME deals 3 damage to any target. Then that player or that permanent's controller may discard a card. If the player does, they may copy this spell and may choose a new target for that copy. +SVar:DBCopy1:DB$ CopySpellAbility | Defined$ Parent | Controller$ TargetedController | UnlessPayer$ TargetedController | UnlessCost$ Discard<1/Card> | UnlessSwitched$ True | ConditionDefined$ Targeted | ConditionPresent$ Permanent | ConditionCompare$ GE1 | SubAbility$ DBCopy2 | StackDescription$ None +SVar:DBCopy2:DB$ CopySpellAbility | Defined$ Parent | Controller$ Targeted | UnlessPayer$ Targeted | UnlessCost$ Discard<1/Card> | UnlessSwitched$ True | ConditionDefined$ Targeted | ConditionPresent$ Permanent | ConditionCompare$ EQ0 | StackDescription$ None SVar:Picture:http://www.wizards.com/global/images/magic/general/chain_of_plasma.jpg -Oracle:Chain of Plasma deals 3 damage to target creature or player. Then that player or that creature's controller may discard a card. If the player does, they may copy this spell and may choose a new target for that copy. +Oracle:Chain of Plasma deals 3 damage to any target. Then that player or that permanent's controller may discard a card. If the player does, they may copy this spell and may choose a new target for that copy. diff --git a/forge-gui/res/cardsfolder/c/chainers_edict.txt b/forge-gui/res/cardsfolder/c/chainers_edict.txt index 48a6fe66fab..ecf5da0d94a 100644 --- a/forge-gui/res/cardsfolder/c/chainers_edict.txt +++ b/forge-gui/res/cardsfolder/c/chainers_edict.txt @@ -1,7 +1,7 @@ Name:Chainer's Edict ManaCost:1 B Types:Sorcery -K:Flashback 5 B B +K:Flashback:5 B B A:SP$ Sacrifice | Cost$ 1 B | ValidTgts$ Player | SacValid$ Creature | SacMessage$ Creature | SpellDescription$ Target player sacrifices a creature. SVar:Picture:http://www.wizards.com/global/images/magic/general/chainers_edict.jpg Oracle:Target player sacrifices a creature.\nFlashback {5}{B}{B} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/c/chainers_torment.txt b/forge-gui/res/cardsfolder/c/chainers_torment.txt index 3bda70c2f5a..1e6da059e4a 100644 --- a/forge-gui/res/cardsfolder/c/chainers_torment.txt +++ b/forge-gui/res/cardsfolder/c/chainers_torment.txt @@ -8,4 +8,4 @@ SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenName$ Nightmare Horror | TokenOwn SVar:DBDamageYou:DB$ DealDamage | Defined$ You | NumDmg$ X | References$ X | DamageSource$ Remembered | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Count$YourLifeTotal/HalfUp -Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI, II — Chainer’s Torment deals 2 damage to each opponent and you gain 2 life.\nIII — Create an X/X black Nightmare Horror creature token, where X is half your life total, rounded up. It deals X damage to you. +Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI, II — Chainer's Torment deals 2 damage to each opponent and you gain 2 life.\nIII — Create an X/X black Nightmare Horror creature token, where X is half your life total, rounded up. It deals X damage to you. diff --git a/forge-gui/res/cardsfolder/c/chainflinger.txt b/forge-gui/res/cardsfolder/c/chainflinger.txt index a419d7eb4c9..d13f0c5f01a 100644 --- a/forge-gui/res/cardsfolder/c/chainflinger.txt +++ b/forge-gui/res/cardsfolder/c/chainflinger.txt @@ -2,7 +2,7 @@ Name:Chainflinger ManaCost:3 R Types:Creature Beast PT:2/2 -A:AB$ DealDamage | Cost$ 1 R T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ Chainflinger deals 1 damage to target creature or player. -A:AB$ DealDamage | Cost$ 2 R T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | Activation$ Threshold | PrecostDesc$ Threshold — | SpellDescription$ CARDNAME deals 2 damage to target creature or player. Activate this ability only if seven or more cards are in your graveyard. +A:AB$ DealDamage | Cost$ 1 R T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ Chainflinger deals 1 damage to any target. +A:AB$ DealDamage | Cost$ 2 R T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | Activation$ Threshold | PrecostDesc$ Threshold — | SpellDescription$ CARDNAME deals 2 damage to any target. Activate this ability only if seven or more cards are in your graveyard. SVar:Picture:http://www.wizards.com/global/images/magic/general/chainflinger.jpg -Oracle:{1}{R}, {T}: Chainflinger deals 1 damage to target creature or player.\nThreshold — {2}{R}, {T}: Chainflinger deals 2 damage to target creature or player. Activate this ability only if seven or more cards are in your graveyard. +Oracle:{1}{R}, {T}: Chainflinger deals 1 damage to any target.\nThreshold — {2}{R}, {T}: Chainflinger deals 2 damage to any target. Activate this ability only if seven or more cards are in your graveyard. diff --git a/forge-gui/res/cardsfolder/c/chakram_retriever.txt b/forge-gui/res/cardsfolder/c/chakram_retriever.txt new file mode 100644 index 00000000000..26361572ba2 --- /dev/null +++ b/forge-gui/res/cardsfolder/c/chakram_retriever.txt @@ -0,0 +1,10 @@ +Name:Chakram Retriever +ManaCost:4 U +Types:Creature Elemental Hound +PT:2/4 +K:Partner:Chakram Slinger +T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | PlayerTurn$ True | Execute$ TrigUntap | TriggerDescription$ Whenever you cast a spell during your turn, untap target creature. +SVar:TrigUntap:DB$ Untap | ValidTgts$ Creature | TgtPrompt$ Select target creature +DeckHints:Name$Chakram Slinger +SVar:Picture:http://www.wizards.com/global/images/magic/general/chakram_retriever.jpg +Oracle:Partner with Chakram Slinger (When this creature enters the battlefield, target player may put Chakram Slinger into their hand from their library, then shuffle.)\nWhenever you cast a spell during your turn, untap target creature. diff --git a/forge-gui/res/cardsfolder/c/chakram_slinger.txt b/forge-gui/res/cardsfolder/c/chakram_slinger.txt new file mode 100644 index 00000000000..1976e7e47cc --- /dev/null +++ b/forge-gui/res/cardsfolder/c/chakram_slinger.txt @@ -0,0 +1,9 @@ +Name:Chakram Slinger +ManaCost:4 R +Types:Creature Human Warrior +PT:2/4 +K:Partner:Chakram Retriever +A:AB$ DealDamage | Cost$ R T | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target player or planeswalker. +DeckHints:Name$Chakram Retriever +SVar:Picture:http://www.wizards.com/global/images/magic/general/chakram_slinger.jpg +Oracle:Partner with Chakram Retriever (When this creature enters the battlefield, target player may put Chakram Retriever into their hand from their library, then shuffle.)\n{R}, {T}: Chakram Slinger deals 2 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/c/champions_victory.txt b/forge-gui/res/cardsfolder/c/champions_victory.txt index 4f6afbc2112..17f053bf2d7 100644 --- a/forge-gui/res/cardsfolder/c/champions_victory.txt +++ b/forge-gui/res/cardsfolder/c/champions_victory.txt @@ -3,4 +3,4 @@ ManaCost:U Types:Instant A:SP$ ChangeZone | Cost$ U | ValidTgts$ Creature.attacking | TgtPrompt$ Select target attacking creature | Origin$ Battlefield | Destination$ Hand | OpponentTurn$ True | ActivationPhases$ Declare Attackers | SpellDescription$ Cast CARDNAME only during the declare attackers step and only if you've been attacked this step. Return target attacking creature to its owner's hand. SVar:Picture:http://www.wizards.com/global/images/magic/general/champions_victory.jpg -Oracle:Cast Champion's Victory only during the declare attackers step and only if you've been attacked this step.\nReturn target attacking creature to its owner's hand. +Oracle:Cast this spell only during the declare attackers step and only if you've been attacked this step.\nReturn target attacking creature to its owner's hand. diff --git a/forge-gui/res/cardsfolder/c/chandra_ablaze.txt b/forge-gui/res/cardsfolder/c/chandra_ablaze.txt index 13ad2d933c5..2fac634b23b 100644 --- a/forge-gui/res/cardsfolder/c/chandra_ablaze.txt +++ b/forge-gui/res/cardsfolder/c/chandra_ablaze.txt @@ -2,8 +2,8 @@ Name:Chandra Ablaze ManaCost:4 R R Types:Legendary Planeswalker Chandra Loyalty:5 -A:AB$ Discard | Cost$ AddCounter<1/LOYALTY> | Mode$ TgtChoose | NumCards$ 1 | Defined$ You | Planeswalker$ True | RememberDiscarded$ True | SubAbility$ DBChandraDealDamage | SpellDescription$ Discard a card. If a red card is discarded this way, CARDNAME deals 4 damage to target creature or player. -SVar:DBChandraDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 4 | ConditionDefined$ Remembered | ConditionPresent$ Card.Red | ConditionCompare$ EQ1 | SubAbility$ DBChandraCleanup +A:AB$ Discard | Cost$ AddCounter<1/LOYALTY> | Mode$ TgtChoose | NumCards$ 1 | Defined$ You | Planeswalker$ True | RememberDiscarded$ True | SubAbility$ DBChandraDealDamage | SpellDescription$ Discard a card. If a red card is discarded this way, CARDNAME deals 4 damage to any target. +SVar:DBChandraDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 4 | ConditionDefined$ Remembered | ConditionPresent$ Card.Red | ConditionCompare$ EQ1 | SubAbility$ DBChandraCleanup SVar:DBChandraCleanup:DB$ Cleanup | ClearRemembered$ True A:AB$ Discard | Cost$ SubCounter<2/LOYALTY> | Mode$ Hand | Defined$ Player | Planeswalker$ True | SubAbility$ DBChandraDraw | SpellDescription$ Each player discards their hand, then draws three cards. SVar:DBChandraDraw:DB$ Draw | Defined$ Player | NumCards$ 3 @@ -11,4 +11,4 @@ A:AB$ Play | Cost$ SubCounter<7/LOYALTY> | Valid$ Instant.Red+YouCtrl,Sorcery.Re SVar:ChandraX:Count$ValidGraveyard Instant.Red+YouOwn,Sorcery.Red+YouOwn SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/chandra_ablaze.jpg -Oracle:[+1]: Discard a card. If a red card is discarded this way, Chandra Ablaze deals 4 damage to target creature or player.\n[-2]: Each player discards their hand, then draws three cards.\n[-7]: Cast any number of red instant and/or sorcery cards from your graveyard without paying their mana costs. +Oracle:[+1]: Discard a card. If a red card is discarded this way, Chandra Ablaze deals 4 damage to any target.\n[-2]: Each player discards their hand, then draws three cards.\n[-7]: Cast any number of red instant and/or sorcery cards from your graveyard without paying their mana costs. diff --git a/forge-gui/res/cardsfolder/c/chandra_bold_pyromancer.txt b/forge-gui/res/cardsfolder/c/chandra_bold_pyromancer.txt index 4cdeb65f708..0e30ca4febc 100644 --- a/forge-gui/res/cardsfolder/c/chandra_bold_pyromancer.txt +++ b/forge-gui/res/cardsfolder/c/chandra_bold_pyromancer.txt @@ -7,4 +7,4 @@ SVar:DBDealDamage:DB$ DealDamage | ValidTgts$ Player | TgtPrompt$ Select target A:AB$ DealDamage | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature,Planeswalker | TgtPrompt$ Select target creature or planeswalker | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or planeswalker. A:AB$ DamageAll | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True | NumDmg$ 10 | ValidTgts$ Player | TgtPrompt$ Select a player | ValidCards$ Creature,Planeswalker | ValidPlayers$ Targeted | ValidDescription$ target player and each creature and planeswalker they control. | SpellDescription$ CARDNAME deals 10 damage to target player and each creature and planeswalker they control. SVar:Picture:http://www.wizards.com/global/images/magic/general/chandra_bold_pyromancer.jpg -Oracle:[+1]: Add {R}{R}. Chandra, Bold Pyromancer deals 2 damage to target player.\n[-3]: Chandra, Bold Pyromancer deals 3 damage to target creature or planeswalker.\n[-7]: Chandra, Bold Pyromancer deals 10 damage to target player and each creature and planeswalker they control. \ No newline at end of file +Oracle:+1: Add {R}{R}. Chandra, Bold Pyromancer deals 2 damage to target player.\n−3: Chandra, Bold Pyromancer deals 3 damage to target creature or planeswalker.\n−7: Chandra, Bold Pyromancer deals 10 damage to target player and each creature and planeswalker they control. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/c/chandra_fire_of_kaladesh.txt b/forge-gui/res/cardsfolder/c/chandra_fire_of_kaladesh.txt index 6f5c78aa627..7cfe6e9dc40 100644 --- a/forge-gui/res/cardsfolder/c/chandra_fire_of_kaladesh.txt +++ b/forge-gui/res/cardsfolder/c/chandra_fire_of_kaladesh.txt @@ -4,13 +4,13 @@ Types:Legendary Creature Human Shaman PT:2/2 T:Mode$ SpellCast | ValidCard$ Card.Red | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigUntap | TriggerDescription$ Whenever you cast a red spell, untap CARDNAME. SVar:TrigUntap:DB$ Untap | Defined$ Self -A:AB$ DealDamage | Cost$ T | ValidTgts$ Player | NumDmg$ 1 | References$ X | SubAbility$ DBTransform | SpellDescription$ CARDNAME deals 1 damage to target player. If CARDNAME has dealt 3 or more damage this turn, exile her, then return her to the battlefield transformed under her owner's control. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 | References$ X | SubAbility$ DBTransform | AILogic$ PingAfterAttack | SpellDescription$ CARDNAME deals 1 damage to target player or planeswalker. If CARDNAME has dealt 3 or more damage this turn, exile her, then return her to the battlefield transformed under her owner's control. SVar:DBTransform:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | SubAbility$ DBReturn | ConditionCheckSVar$ X | ConditionSVarCompare$ GE3 | References$ X | StackDescription$ If CARDNAME has dealt 3 or more damage this turn, exile her, then return her to the battlefield transformed under her owner's control. -SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | Transformed$ True | WithCounters$ LOYALTY_4 | SubAbility$ DBCleanup | StackDescription$ +SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | Transformed$ True | SubAbility$ DBCleanup | StackDescription$ SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Count$TotalDamageDoneByThisTurn AlternateMode:DoubleFaced -Oracle:Whenever you cast a red spell, untap Chandra, Fire of Kaladesh.\n{T}: Chandra, Fire of Kaladesh deals 1 damage to target player. If Chandra has dealt 3 or more damage this turn, exile her, then return her to the battlefield transformed under her owner's control. +Oracle:Whenever you cast a red spell, untap Chandra, Fire of Kaladesh.\n{T}: Chandra, Fire of Kaladesh deals 1 damage to target player or planeswalker. If Chandra has dealt 3 or more damage this turn, exile her, then return her to the battlefield transformed under her owner's control. ALTERNATE @@ -19,11 +19,11 @@ ManaCost:no cost Colors:red Types:Legendary Planeswalker Chandra Loyalty:4 -A:AB$ DealDamage | Cost$ AddCounter<1/LOYALTY> | ValidTgts$ Player | Planeswalker$ True | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target player +A:AB$ DealDamage | Cost$ AddCounter<1/LOYALTY> | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | Planeswalker$ True | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target player or planeswalker A:AB$ DealDamage | Cost$ SubCounter<2/LOYALTY> | ValidTgts$ Creature | Planeswalker$ True | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature. A:AB$ DealDamage | Cost$ SubCounter<7/LOYALTY> | Defined$ Player.Opponent | Planeswalker$ True | Ultimate$ True | NumDmg$ 6 | RememberDamaged$ True | SubAbility$ DBRoaringFlame | SpellDescription$ CARDNAME deals 6 damage to each opponent. Each player dealt damage this way gets an emblem with "At the beginning of your upkeep, this emblem deals 3 damage to you." SVar:DBRoaringFlame:DB$ RepeatEach | RepeatPlayers$ Player.IsRemembered | RepeatSubAbility$ DBUltimateEmblem | ClearRememberedBeforeLoop$ True | StackDescription$ Each player dealt damage this way gets an emblem with "At the beginning of your upkeep, this emblem deals 3 damage to you." SVar:DBUltimateEmblem:DB$ Effect | Name$ Emblem - Chandra, Roaring Flame | Image$ emblem_chandra_roaring_flame | Stackable$ True | Triggers$ FlameTrigger | SVars$ TrigDealDamage | Duration$ Permanent | AILogic$ Always | EffectOwner$ Player.IsRemembered | SpellDescription$ You get an emblem with "At the beginning of your upkeep, this emblem deals 3 damage to you." SVar:FlameTrigger:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Command | Execute$ TrigDealDamage | TriggerDescription$ At the beginning of your upkeep, CARDNAME deals 3 damage to you. SVar:TrigDealDamage:DB$DealDamage | Defined$ You | NumDmg$ 3 -Oracle:[+1]: Chandra, Roaring Flame deals 2 damage to target player.\n[-2]: Chandra, Roaring Flame deals 2 damage to target creature.\n[-7]: Chandra, Roaring Flame deals 6 damage to each opponent. Each player dealt damage this way gets an emblem with "At the beginning of your upkeep, this emblem deals 3 damage to you." \ No newline at end of file +Oracle:+1: Chandra, Roaring Flame deals 2 damage to target player or planeswalker.\n−2: Chandra, Roaring Flame deals 2 damage to target creature.\n−7: Chandra, Roaring Flame deals 6 damage to each opponent. Each player dealt damage this way gets an emblem with "At the beginning of your upkeep, this emblem deals 3 damage to you." diff --git a/forge-gui/res/cardsfolder/c/chandra_flamecaller.txt b/forge-gui/res/cardsfolder/c/chandra_flamecaller.txt index 25e3a149830..d2662a755d8 100644 --- a/forge-gui/res/cardsfolder/c/chandra_flamecaller.txt +++ b/forge-gui/res/cardsfolder/c/chandra_flamecaller.txt @@ -12,4 +12,4 @@ A:AB$ DamageAll | Cost$ SubCounter | NumDmg$ ChosenX | References$ X SVar:X:XChoice SVar:PlayMain1:ALWAYS SVar:Picture:http://www.wizards.com/global/images/magic/general/chandra_flamecaller.jpg -Oracle:[+1]: Create two 3/1 red Elemental creature tokens with haste. Exile them at the beginning of the next end step.\n[0]: Discard all the cards in your hand, then draw that many cards plus one.\n[-X]: Chandra, Flamecaller deals X damage to each creature. +Oracle:+1: Create two 3/1 red Elemental creature tokens with haste. Exile them at the beginning of the next end step.\n0: Discard all the cards in your hand, then draw that many cards plus one.\n−X: Chandra, Flamecaller deals X damage to each creature. diff --git a/forge-gui/res/cardsfolder/c/chandra_nalaar.txt b/forge-gui/res/cardsfolder/c/chandra_nalaar.txt index b44dce95c59..0af9e968418 100644 --- a/forge-gui/res/cardsfolder/c/chandra_nalaar.txt +++ b/forge-gui/res/cardsfolder/c/chandra_nalaar.txt @@ -2,9 +2,11 @@ Name:Chandra Nalaar ManaCost:3 R R Types:Legendary Planeswalker Chandra Loyalty:6 -A:AB$ DealDamage | Cost$ AddCounter<1/LOYALTY> | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 1 | Planeswalker$ True | SpellDescription$ CARDNAME deals 1 damage to target player. +A:AB$ DealDamage | Cost$ AddCounter<1/LOYALTY> | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 | Planeswalker$ True | SpellDescription$ CARDNAME deals 1 damage to target player or planeswalker. A:AB$ DealDamage | Cost$ SubCounter | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ ChosenX | Planeswalker$ True | References$ X | SpellDescription$ CARDNAME deals X damage to target creature. -A:AB$ DamageAll | Cost$ SubCounter<8/LOYALTY> | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 10 | ValidCards$ Creature | ValidPlayers$ Targeted | Planeswalker$ True | Ultimate$ True | ValidDescription$ target player and each creature they control. | SpellDescription$ CARDNAME deals 10 damage to target player and each creature they control. +A:AB$ DealDamage | Cost$ SubCounter<8/LOYALTY> | Planeswalker$ True | Ultimate$ True | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select a player or planeswalker | NumDmg$ 10 | SubAbility$ DmgAll | DamageMap$ True | SpellDescription$ CARDNAME deals 10 damage to target player or planeswalker and each creature that player or that planeswalker's controller controls. +SVar:DmgAll:DB$ DamageAll | NumDmg$ 10 | ValidCards$ Creature.ControlledBy TargetedOrController | SubAbility$ DBDamageResolve +SVar:DBDamageResolve:DB$ DamageResolve SVar:X:XChoice SVar:Picture:http://resources.wizards.com/magic/cards/lrw/en/card140176.jpg -Oracle:[+1]: Chandra Nalaar deals 1 damage to target player.\n[-X]: Chandra Nalaar deals X damage to target creature.\n[-8]: Chandra Nalaar deals 10 damage to target player and each creature they control. +Oracle:[+1]: Chandra Nalaar deals 1 damage to target player or planeswalker.\n[-X]: Chandra Nalaar deals X damage to target creature.\n[-8]: Chandra Nalaar deals 10 damage to target player or planeswalker and each creature that player or that planeswalker's controller controls. diff --git a/forge-gui/res/cardsfolder/c/chandra_pyrogenius.txt b/forge-gui/res/cardsfolder/c/chandra_pyrogenius.txt index 45c2fb38f2f..74b3bb0091a 100644 --- a/forge-gui/res/cardsfolder/c/chandra_pyrogenius.txt +++ b/forge-gui/res/cardsfolder/c/chandra_pyrogenius.txt @@ -4,7 +4,9 @@ Types:Legendary Planeswalker Chandra Loyalty:5 A:AB$ DealDamage | Cost$ AddCounter<2/LOYALTY> | Planeswalker$ True | Defined$ Player.Opponent | NumDmg$ 2 | AILogic$ Good | SpellDescription$ CARDNAME deals 2 damage to each opponent. A:AB$ DealDamage | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target creature. -A:AB$ DamageAll | Cost$ SubCounter<10/LOYALTY> | Planeswalker$ True | Ultimate$ True | NumDmg$ 6 | ValidTgts$ Player | TgtPrompt$ Select a player | ValidCards$ Creature | ValidPlayers$ Targeted | ValidDescription$ target player and each creature they control. | SpellDescription$ CARDNAME deals 6 damage to target player and each creature they control. +A:AB$ DealDamage | Cost$ SubCounter<10/LOYALTY> | Planeswalker$ True | Ultimate$ True | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select a player or planeswalker | NumDmg$ 6 | SubAbility$ DmgAll | DamageMap$ True | SpellDescription$ CARDNAME deals 6 damage to target player or planeswalker and each creature that player or that planeswalker's controller controls. +SVar:DmgAll:DB$ DamageAll | NumDmg$ 6 | ValidCards$ Creature.ControlledBy TargetedOrController | SubAbility$ DBDamageResolve +SVar:DBDamageResolve:DB$ DamageResolve DeckHints:Name$Liberating Combustion SVar:Picture:http://www.wizards.com/global/images/magic/general/chandra_pyrogenius.jpg -Oracle:[+2]: Chandra, Pyrogenius deals 2 damage to each opponent.\n[-3]: Chandra, Pyrogenius deals 4 damage to target creature.\n[-10]: Chandra, Pyrogenius deals 6 damage to target player and each creature they control. +Oracle:[+2]: Chandra, Pyrogenius deals 2 damage to each opponent.\n[-3]: Chandra, Pyrogenius deals 4 damage to target creature.\n[-10]: Chandra, Pyrogenius deals 6 damage to target player or planeswalker and each creature that player or that planeswalker's controller controls. diff --git a/forge-gui/res/cardsfolder/c/chandra_pyromaster.txt b/forge-gui/res/cardsfolder/c/chandra_pyromaster.txt index 6190927715b..493d1919a15 100644 --- a/forge-gui/res/cardsfolder/c/chandra_pyromaster.txt +++ b/forge-gui/res/cardsfolder/c/chandra_pyromaster.txt @@ -2,8 +2,9 @@ Name:Chandra, Pyromaster ManaCost:2 R R Types:Legendary Planeswalker Chandra Loyalty:4 -A:AB$ DealDamage | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 1 | SubAbility$ ChandraDamage | SpellDescription$ CARDNAME deals 1 damage to target player and 1 damage to up to one target creature that player controls. That creature can't block this turn. -SVar:ChandraDamage:DB$ DealDamage | ValidTgts$ Creature.TargetedPlayerCtrl | TgtPrompt$ Select target creature that player controls | TargetMin$ 0 | TargetMax$ 1 | NumDmg$ 1 | SubAbility$ DBPump +A:AB$ DealDamage | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 | DamageMap$ True | SubAbility$ ChandraDamage | SpellDescription$ CARDNAME 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. +SVar:ChandraDamage:DB$ DealDamage | ValidTgts$ Creature.ControlledBy TargetedOrController | TgtPrompt$ Select target creature that player or that planeswalker's controller controls | TargetMin$ 0 | TargetMax$ 1 | NumDmg$ 1 | SubAbility$ DBDamageResolve +SVar:DBDamageResolve:DB$ DamageResolve | SubAbility$ DBPump SVar:DBPump:DB$ Pump | Defined$ Targeted | IsCurse$ True | KW$ HIDDEN CARDNAME can't block. | ConditionDefined$ Targeted | ConditionPresent$ Creature | ConditionCompare$ GE1 A:AB$ Mill | Cost$ AddCounter<0/LOYALTY> | Planeswalker$ True | Defined$ You | NumCards$ 1 | Destination$ Exile | RememberMilled$ True | SubAbility$ DBEffect | SpellDescription$ Exile the top card of your library. You may play it this turn. SVar:DBEffect:DB$ Effect | RememberObjects$ RememberedCard | StaticAbilities$ Play | SubAbility$ DBCleanup | ExileOnMoved$ Exile @@ -14,4 +15,4 @@ SVar:DBChoose:DB$ ChooseCard | Choices$ Instant.IsRemembered,Sorcery.IsRemembere SVar:DBPlay:DB$ Play | Defined$ ChosenCard | WithoutManaCost$ True | CopyCard$ True | Amount$ 3 | AllowRepeats$ True | Controller$ You | Optional$ True | SubAbility$ DBCleanup SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/chandra_pyromaster.jpg -Oracle:[+1]: Chandra, Pyromaster deals 1 damage to target player and 1 damage to up to one target creature that player 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. +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.\n0: 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_the_firebrand.txt b/forge-gui/res/cardsfolder/c/chandra_the_firebrand.txt index 087329e66c5..bccabf0b2e4 100644 --- a/forge-gui/res/cardsfolder/c/chandra_the_firebrand.txt +++ b/forge-gui/res/cardsfolder/c/chandra_the_firebrand.txt @@ -2,11 +2,11 @@ Name:Chandra, the Firebrand ManaCost:3 R Types:Legendary Planeswalker Chandra Loyalty:3 -A:AB$DealDamage | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$DealDamage | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. A:AB$Effect | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | AILogic$ SpellCopy | Name$ Chandra, the Firebrand effect. | Image$ chandra_the_firebrand_effect | Triggers$ TrigCopy | SVars$ TrigCopyMain,DBCleanup | SpellDescription$ When you cast your next instant or sorcery spell this turn, copy that spell. You may choose new targets for the copy. -A:AB$DealDamage | Cost$ SubCounter<6/LOYALTY> | Planeswalker$ True | Ultimate$ True | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | TargetMin$ 0 | TargetMax$ 6 | NumDmg$ 6 | SpellDescription$ CARDNAME deals 6 damage to each of up to six target creatures and/or players. +A:AB$DealDamage | Cost$ SubCounter<6/LOYALTY> | Planeswalker$ True | Ultimate$ True | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | TargetMin$ 0 | TargetMax$ 6 | NumDmg$ 6 | SpellDescription$ CARDNAME deals 6 damage to each of up to six targets. SVar:TrigCopy:Mode$ SpellCast | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ You | OneOff$ True | Execute$ TrigCopyMain | TriggerZones$ Command | TriggerDescription$ When you cast your next instant or sorcery spell this turn, copy that spell. You may choose new targets for the copy. SVar:TrigCopyMain:DB$ CopySpellAbility | Defined$ TriggeredSpellAbility | SubAbility$ DBCleanup SVar:DBCleanup:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:Picture:http://www.wizards.com/global/images/magic/general/chandra_the_firebrand.jpg -Oracle:[+1]: Chandra, the Firebrand deals 1 damage to target creature or player.\n[-2]: When you cast your next instant or sorcery spell this turn, copy that spell. You may choose new targets for the copy.\n[-6]: Chandra, the Firebrand deals 6 damage to each of up to six target creatures and/or players. +Oracle:+1: Chandra, the Firebrand deals 1 damage to any target.\n−2: When you cast your next instant or sorcery spell this turn, copy that spell. You may choose new targets for the copy.\n−6: Chandra, the Firebrand deals 6 damage to each of up to six targets. 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 a84ca123197..8ce11d920c0 100644 --- a/forge-gui/res/cardsfolder/c/chandra_torch_of_defiance.txt +++ b/forge-gui/res/cardsfolder/c/chandra_torch_of_defiance.txt @@ -8,8 +8,8 @@ SVar:DBDamage:DB$ DealDamage | Defined$ Player.Opponent | NumDmg$ 2 | ConditionD SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True A:AB$ Mana | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | Produced$ R | Amount$ 2 | AILogic$ ManaRitual | SpellDescription$ Add {R}{R}. A:AB$ DealDamage | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target creature. -A:AB$ Effect | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True | Name$ Emblem - Chandra, Torch of Defiance | Image$ emblem_chandra_torch_of_defiance | Triggers$ TrigSpellCast | SVars$ EffSpellCast | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "Whenever you cast a spell, this emblem deals 5 damage to target creature or player." -SVar:TrigSpellCast:Mode$ SpellCast | ValidActivatingPlayer$ You | Execute$ EffSpellCast | TriggerDescription$ Whenever you cast a spell, this emblem deals 5 damage to target creature or player. -SVar:EffSpellCast:DB$ DealDamage | ValidTgts$ Creature,Player | NumDmg$ 5 +A:AB$ Effect | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True | Name$ Emblem - Chandra, Torch of Defiance | Image$ emblem_chandra_torch_of_defiance | Triggers$ TrigSpellCast | SVars$ EffSpellCast | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "Whenever you cast a spell, this emblem deals 5 damage to any target." +SVar:TrigSpellCast:Mode$ SpellCast | ValidActivatingPlayer$ You | Execute$ EffSpellCast | TriggerDescription$ Whenever you cast a spell, this emblem deals 5 damage to any target. +SVar:EffSpellCast:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | NumDmg$ 5 SVar:Picture:http://www.wizards.com/global/images/magic/general/chandra_torch_of_defiance.jpg -Oracle:[+1]: 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.\n[+1]: Add {R}{R}.\n[-3]: Chandra, Torch of Defiance deals 4 damage to target creature.\n[-7]: You get an emblem with "Whenever you cast a spell, this emblem deals 5 damage to target creature or player." \ No newline at end of file +Oracle:[+1]: 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.\n[+1]: Add {R}{R}.\n[-3]: Chandra, Torch of Defiance deals 4 damage to target creature.\n[-7]: You get an emblem with "Whenever you cast a spell, this emblem deals 5 damage to any target." \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/c/chandras_fury.txt b/forge-gui/res/cardsfolder/c/chandras_fury.txt index cdf83e8b939..79360e1f268 100644 --- a/forge-gui/res/cardsfolder/c/chandras_fury.txt +++ b/forge-gui/res/cardsfolder/c/chandras_fury.txt @@ -1,7 +1,8 @@ Name:Chandra's Fury ManaCost:4 R Types:Instant -A:SP$ DealDamage | Cost$ 4 R | ValidTgts$ Player | NumDmg$ 4 | SubAbility$ DmgAll | SpellDescription$ CARDNAME deals 4 damage to target player and 1 damage to each creature that player controls. -SVar:DmgAll:DB$ DamageAll | NumDmg$ 1 | ValidCards$ Creature.TargetedPlayerCtrl +A:SP$ DealDamage | Cost$ 4 R | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select a player or planeswalker | NumDmg$ 4 | SubAbility$ DmgAll | DamageMap$ True | SpellDescription$ CARDNAME deals 4 damage to target player or planeswalker and 1 damage to each creature that player or that planeswalker's controller controls. +SVar:DmgAll:DB$ DamageAll | NumDmg$ 1 | ValidCards$ Creature.ControlledBy TargetedOrController | SubAbility$ DBDamageResolve +SVar:DBDamageResolve:DB$ DamageResolve SVar:Picture:http://www.wizards.com/global/images/magic/general/chandras_fury.jpg -Oracle:Chandra's Fury deals 4 damage to target player and 1 damage to each creature that player controls. +Oracle:Chandra's Fury deals 4 damage to target player or planeswalker and 1 damage to each creature that player or that planeswalker's controller controls. diff --git a/forge-gui/res/cardsfolder/c/chandras_phoenix.txt b/forge-gui/res/cardsfolder/c/chandras_phoenix.txt index 8aaee35a9ba..9550b533349 100644 --- a/forge-gui/res/cardsfolder/c/chandras_phoenix.txt +++ b/forge-gui/res/cardsfolder/c/chandras_phoenix.txt @@ -4,9 +4,8 @@ Types:Creature Phoenix PT:2/2 K:Flying K:Haste -T:Mode$ DamageDone | ValidSource$ Instant.YouCtrl+Red | ValidTarget$ Opponent | TriggerZones$ Graveyard | Execute$ TrigReturn | TriggerDescription$ Whenever an opponent is dealt damage by a red instant or sorcery spell you control or by a red planeswalker you control, return Chandra's Phoenix from your graveyard to your hand. -T:Mode$ DamageDone | ValidSource$ Sorcery.YouCtrl+Red | ValidTarget$ Opponent | TriggerZones$ Graveyard | Execute$ TrigReturn | Secondary$ True | TriggerDescription$ Whenever an opponent is dealt damage by a red instant or sorcery spell you control or by a red planeswalker you control, return Chandra's Phoenix from your graveyard to your hand. +T:Mode$ DamageDone | ValidSource$ Spell.Instant+YouCtrl+Red,Spell.Sorcery+YouCtrl+Red | ValidTarget$ Opponent | TriggerZones$ Graveyard | Execute$ TrigReturn | TriggerDescription$ Whenever an opponent is dealt damage by a red instant or sorcery spell you control or by a red planeswalker you control, return Chandra's Phoenix from your graveyard to your hand. T:Mode$ DamageDone | ValidSource$ Planeswalker.YouCtrl+Red | ValidTarget$ Opponent | TriggerZones$ Graveyard | Execute$ TrigReturn | Secondary$ True | TriggerDescription$ Whenever an opponent is dealt damage by a red instant or sorcery spell you control or by a red planeswalker you control, return Chandra's Phoenix from your graveyard to your hand. SVar:TrigReturn:DB$ChangeZone | Defined$ Self | Origin$ Graveyard | Destination$ Hand SVar:Picture:http://www.wizards.com/global/images/magic/general/chandras_phoenix.jpg -Oracle:Flying, haste\nWhenever an opponent is dealt damage by a red instant or sorcery spell you control or by a red planeswalker you control, return Chandra's Phoenix from your graveyard to your hand. +Oracle:Flying\nHaste (This creature can attack and {T} as soon as it comes under your control.)\nWhenever an opponent is dealt damage by a red instant or sorcery spell you control or by a red planeswalker you control, return Chandra's Phoenix from your graveyard to your hand. diff --git a/forge-gui/res/cardsfolder/c/chandras_pyrohelix.txt b/forge-gui/res/cardsfolder/c/chandras_pyrohelix.txt index 648c069b270..13306ece801 100644 --- a/forge-gui/res/cardsfolder/c/chandras_pyrohelix.txt +++ b/forge-gui/res/cardsfolder/c/chandras_pyrohelix.txt @@ -1,6 +1,6 @@ Name:Chandra's Pyrohelix ManaCost:1 R Types:Instant -A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to distribute damage to | NumDmg$ 2 | TargetMin$ 1 | TargetMax$ 2 | DividedAsYouChoose$ 2 | SpellDescription$ CARDNAME deals 2 damage divided as you choose among one or two target creatures and/or players. +A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to distribute damage to | NumDmg$ 2 | TargetMin$ 1 | TargetMax$ 2 | DividedAsYouChoose$ 2 | SpellDescription$ CARDNAME deals 2 damage divided as you choose among one or two targets. SVar:Picture:http://www.wizards.com/global/images/magic/general/chandras_pyrohelix.jpg -Oracle:Chandra's Pyrohelix deals 2 damage divided as you choose among one or two target creatures and/or players. \ No newline at end of file +Oracle:Chandra's Pyrohelix deals 2 damage divided as you choose among one or two targets. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/c/chandras_revolution.txt b/forge-gui/res/cardsfolder/c/chandras_revolution.txt index 17b5b4f9c0d..d684aaa0ba6 100644 --- a/forge-gui/res/cardsfolder/c/chandras_revolution.txt +++ b/forge-gui/res/cardsfolder/c/chandras_revolution.txt @@ -6,5 +6,4 @@ SVar:DBTapLand:DB$ Tap | ValidTgts$ Land | TgtPrompt$ Choose target land | Remem SVar:DBPump:DB$ Pump | Defined$ Remembered | KW$ HIDDEN This card doesn't untap during your next untap step. | Permanent$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/chandras_revolution.jpg -Oracle:Chandra's Revolution deals 4 damage to target creature. Tap target land. That land doesn't untap during its -controller's next untap step. \ No newline at end of file +Oracle:Chandra's Revolution deals 4 damage to target creature. Tap target land. That land doesn't untap during its controller's next untap step. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/c/chaos_maw.txt b/forge-gui/res/cardsfolder/c/chaos_maw.txt index e8f921831d1..58b35b2fdf1 100644 --- a/forge-gui/res/cardsfolder/c/chaos_maw.txt +++ b/forge-gui/res/cardsfolder/c/chaos_maw.txt @@ -5,4 +5,4 @@ PT:6/6 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDamageAll | TriggerDescription$ When CARDNAME enters the battlefield, it deals 3 damage to each other creature. SVar:TrigDamageAll:DB$ DamageAll | ValidCards$ Creature.Other | NumDmg$ 3 | ValidDescription$ each other creature. SVar:Picture:http://www.wizards.com/global/images/magic/general/chaos_maw.jpg -Oracle:When Chaos Maw enters the battlefield, it deals 3 damage to each other creature. \ No newline at end of file +Oracle:When Chaos Maw enters the battlefield, it deals 3 damage to each other creature. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/c/chaos_wand.txt b/forge-gui/res/cardsfolder/c/chaos_wand.txt new file mode 100644 index 00000000000..30aa76db15a --- /dev/null +++ b/forge-gui/res/cardsfolder/c/chaos_wand.txt @@ -0,0 +1,9 @@ +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. +SVar:DBPlay:DB$ Play | Defined$ Remembered | ValidZone$ Exile | Valid$ Instant.IsRemembered,Sorcery.IsRemembered | WithoutManaCost$ True | RememberObjects$ Remembered | Optional$ 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 +Oracle:{4}, {T}: 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. diff --git a/forge-gui/res/cardsfolder/c/chaotic_strike.txt b/forge-gui/res/cardsfolder/c/chaotic_strike.txt index fc9429e81a2..adcea365957 100644 --- a/forge-gui/res/cardsfolder/c/chaotic_strike.txt +++ b/forge-gui/res/cardsfolder/c/chaotic_strike.txt @@ -6,4 +6,4 @@ A:SP$ FlipACoin | Cost$ 1 R | ValidTgts$ Creature | TgtPrompt$ Select target cre SVar:ChaoticStrikePump:DB$ Pump | Defined$ Targeted | NumAtt$ 1 | NumDef$ 1 | SubAbility$ ChaoticStrikeDraw SVar:ChaoticStrikeDraw:DB$ Draw | NumCards$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/chaotic_strike.jpg -Oracle:Cast Chaotic Strike only during combat after blockers are declared.\nFlip a coin. If you win the flip, target creature gets +1/+1 until end of turn.\nDraw a card. +Oracle:Cast this spell only during combat after blockers are declared.\nFlip a coin. If you win the flip, target creature gets +1/+1 until end of turn.\nDraw a card. diff --git a/forge-gui/res/cardsfolder/c/chaplains_blessing.txt b/forge-gui/res/cardsfolder/c/chaplains_blessing.txt index 63d368e6bb2..5c829de3087 100644 --- a/forge-gui/res/cardsfolder/c/chaplains_blessing.txt +++ b/forge-gui/res/cardsfolder/c/chaplains_blessing.txt @@ -3,4 +3,4 @@ ManaCost:W Types:Sorcery A:SP$ GainLife | Cost$ W | LifeAmount$ 5 | SpellDescription$ You gain 5 life. SVar:Picture:http://www.wizards.com/global/images/magic/general/chaplains_blessing.jpg -Oracle:You gain 5 life. +Oracle:You gain 5 life. diff --git a/forge-gui/res/cardsfolder/c/char.txt b/forge-gui/res/cardsfolder/c/char.txt index c8555b3e925..1722ec2b511 100644 --- a/forge-gui/res/cardsfolder/c/char.txt +++ b/forge-gui/res/cardsfolder/c/char.txt @@ -1,7 +1,8 @@ Name:Char ManaCost:2 R Types:Instant -A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 4 | SubAbility$ DBDealDamage | SpellDescription$ CARDNAME deals 4 damage to target creature or player and 2 damage to you. -SVar:DBDealDamage:DB$DealDamage | Defined$ You | NumDmg$ 2 +A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 4 | DamageMap$ True | SubAbility$ DBDealDamage | SpellDescription$ CARDNAME deals 4 damage to any target and 2 damage to you. +SVar:DBDealDamage:DB$DealDamage | Defined$ You | NumDmg$ 2 | SubAbility$ DBDamageResolve +SVar:DBDamageResolve:DB$ DamageResolve SVar:Picture:http://resources.wizards.com/magic/cards/rav/en-us/card87942.jpg -Oracle:Char deals 4 damage to target creature or player and 2 damage to you. +Oracle:Char deals 4 damage to any target and 2 damage to you. diff --git a/forge-gui/res/cardsfolder/c/charging_cinderhorn.txt b/forge-gui/res/cardsfolder/c/charging_cinderhorn.txt index b835dea6a11..73ac1e1ea65 100644 --- a/forge-gui/res/cardsfolder/c/charging_cinderhorn.txt +++ b/forge-gui/res/cardsfolder/c/charging_cinderhorn.txt @@ -9,4 +9,4 @@ SVar:DBDealDamage:DB$ DealDamage | Defined$ TriggeredPlayer | NumDmg$ X | Refere SVar:AttackedThisTurn:PlayerCountPlayers$AttackersDeclared SVar:X:Count$CardCounters.FURY SVar:Picture:http://www.wizards.com/global/images/magic/general/charging_cinderhorn.jpg -Oracle:At the beginning of each player's end step, if no creatures attacked this turn, put a fury counter on Charging Cinderhorn. Then Charging Cinderhorn deals damage equal to the number of fury counters on it to that player. \ No newline at end of file +Oracle:Haste\nAt the beginning of each player's end step, if no creatures attacked this turn, put a fury counter on Charging Cinderhorn. Then Charging Cinderhorn deals damage equal to the number of fury counters on it to that player. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/c/charging_griffin.txt b/forge-gui/res/cardsfolder/c/charging_griffin.txt index 2aac6c281ac..a5e303dd3c8 100644 --- a/forge-gui/res/cardsfolder/c/charging_griffin.txt +++ b/forge-gui/res/cardsfolder/c/charging_griffin.txt @@ -6,4 +6,4 @@ K:Flying T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigPump | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME attacks, it gets +1/+1 until end of turn. SVar:TrigPump:DB$ Pump | Defined$ Self | NumAtt$ 1 | NumDef$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/charging_griffin.jpg -Oracle:Flying\nWhenever Charging Griffin attacks, it gets +1/+1 until end of turn. +Oracle:Flying (This creature can't be blocked except by creatures with flying or reach.)\nWhenever Charging Griffin attacks, it gets +1/+1 until end of turn. diff --git a/forge-gui/res/cardsfolder/c/chatter_of_the_squirrel.txt b/forge-gui/res/cardsfolder/c/chatter_of_the_squirrel.txt index aed2d4a5d20..f5e76e894c4 100644 --- a/forge-gui/res/cardsfolder/c/chatter_of_the_squirrel.txt +++ b/forge-gui/res/cardsfolder/c/chatter_of_the_squirrel.txt @@ -1,7 +1,7 @@ Name:Chatter of the Squirrel ManaCost:G Types:Sorcery -K:Flashback 1 G +K:Flashback:1 G A:SP$ Token | Cost$ G | TokenAmount$ 1 | TokenName$ Squirrel | TokenColors$ Green | TokenTypes$ Creature,Squirrel | TokenOwner$ You | TokenPower$ 1 | TokenToughness$ 1 | SpellDescription$ Create a 1/1 green Squirrel creature token. SVar:Picture:http://www.wizards.com/global/images/magic/general/chatter_of_the_squirrel.jpg Oracle:Create a 1/1 green Squirrel creature token.\nFlashback {1}{G} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/c/cherished_hatchling.txt b/forge-gui/res/cardsfolder/c/cherished_hatchling.txt index 01dd0675bc7..5e0cd69466c 100644 --- a/forge-gui/res/cardsfolder/c/cherished_hatchling.txt +++ b/forge-gui/res/cardsfolder/c/cherished_hatchling.txt @@ -8,7 +8,7 @@ SVar:STFlash:Mode$ Continuous | EffectZone$ Command | Affected$ Dinosaur.nonToke SVar:HatchlingCast:Mode$ SpellCast | ValidCard$ Dinosaur | ValidActivatingPlayer$ You | Execute$ TrigHatchlingAnimate | TriggerZones$ Command | TriggerDescription$ Whenever you cast a Dinosaur spell this turn, it gains "When this creature enters the battlefield, you may have it fight another target creature." SVar:TrigHatchlingAnimate:DB$ Animate | Defined$ TriggeredCard | Permanent$ True | Triggers$ TrigETBHatchling | sVars$ HatchlingFight SVar:TrigETBHatchling:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ HatchlingFight | OptionalDecider$ You | TriggerDescription$ When this creature enters the battlefield, you may have it fight another target creature. -SVar:HatchlingFight:DB$ Fight | Defined$ TriggeredCard | ValidTgts$ Creature.Other | TgtPrompt$ Select another target creature +SVar:HatchlingFight:DB$ Fight | Defined$ TriggeredCardLKICopy | ValidTgts$ Creature.Other | TgtPrompt$ Select another target creature DeckHints:Type$Dinosaur SVar:Picture:http://www.wizards.com/global/images/magic/general/cherished_hatchling.jpg Oracle:When Cherished Hatchling dies, you may cast Dinosaur spells this turn as though they had flash, and whenever you cast a Dinosaur spell this turn, it gains "When this creature enters the battlefield, you may have it fight another target creature." diff --git a/forge-gui/res/cardsfolder/c/child_of_night.txt b/forge-gui/res/cardsfolder/c/child_of_night.txt index a7a9fd43650..24381fd744d 100644 --- a/forge-gui/res/cardsfolder/c/child_of_night.txt +++ b/forge-gui/res/cardsfolder/c/child_of_night.txt @@ -4,4 +4,4 @@ Types:Creature Vampire PT:2/1 K:Lifelink SVar:Picture:http://www.wizards.com/global/images/magic/general/child_of_night.jpg -Oracle:Lifelink +Oracle:Lifelink (Damage dealt by this creature also causes you to gain that much life.) diff --git a/forge-gui/res/cardsfolder/c/chill_haunting.txt b/forge-gui/res/cardsfolder/c/chill_haunting.txt index 70e5b64fe00..50793721bcf 100644 --- a/forge-gui/res/cardsfolder/c/chill_haunting.txt +++ b/forge-gui/res/cardsfolder/c/chill_haunting.txt @@ -6,4 +6,4 @@ SVar:X:XChoice #ChosenX SVar created by Cost payment SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/chill_haunting.jpg -Oracle:As an additional cost to cast Chill Haunting, exile X creature cards from your graveyard.\nTarget creature gets -X/-X until end of turn. +Oracle:As an additional cost to cast this spell, exile X creature cards from your graveyard.\nTarget creature gets -X/-X until end of turn. diff --git a/forge-gui/res/cardsfolder/c/chill_of_foreboding.txt b/forge-gui/res/cardsfolder/c/chill_of_foreboding.txt index 7f852eec269..c964c017eb5 100644 --- a/forge-gui/res/cardsfolder/c/chill_of_foreboding.txt +++ b/forge-gui/res/cardsfolder/c/chill_of_foreboding.txt @@ -1,7 +1,7 @@ Name:Chill of Foreboding ManaCost:2 U Types:Sorcery -K:Flashback 7 U +K:Flashback:7 U A:SP$ Mill | Cost$ 2 U | NumCards$ 5 | Defined$ Player | SpellDescription$ Each player puts the top five cards of their library into their graveyard. SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/chill_of_foreboding.jpg diff --git a/forge-gui/res/cardsfolder/c/chilling_grasp.txt b/forge-gui/res/cardsfolder/c/chilling_grasp.txt index 9ee5f49acf6..354844e9992 100644 --- a/forge-gui/res/cardsfolder/c/chilling_grasp.txt +++ b/forge-gui/res/cardsfolder/c/chilling_grasp.txt @@ -6,4 +6,4 @@ SVar:TrigPump:DB$ Pump | Defined$ Targeted | KW$ HIDDEN This card doesn't untap K:Madness:3 U DeckHints:Ability$Discard SVar:Picture:http://www.wizards.com/global/images/magic/general/chilling_grasp.jpg -Oracle:Tap up to two target creatures. Those creatures don't untap during their controller's next untap step.\nMadness {3}{U} (If you discard this card, discard it into exile. When you do, cast it for it's madness cost or put it into your graveyard.) \ No newline at end of file +Oracle:Tap up to two target creatures. Those creatures don't untap during their controller's next untap step.\nMadness {3}{U} (If you discard this card, discard it into exile. When you do, cast it for its madness cost or put it into your graveyard.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/c/choking_vines.txt b/forge-gui/res/cardsfolder/c/choking_vines.txt index ce04b20b74c..0a245935b6b 100644 --- a/forge-gui/res/cardsfolder/c/choking_vines.txt +++ b/forge-gui/res/cardsfolder/c/choking_vines.txt @@ -8,4 +8,4 @@ SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:TargetedObjects$Amount SVar:Maxtgt:Count$Valid Creature.attacking SVar:Picture:http://www.wizards.com/global/images/magic/general/choking_vines.jpg -Oracle:Cast Choking Vines only during the declare blockers step.\nX target attacking creatures become blocked. Choking Vines deals 1 damage to each of those creatures. (This spell works on creatures that can't be blocked.) +Oracle:Cast this spell only during the declare blockers step.\nX target attacking creatures become blocked. Choking Vines deals 1 damage to each of those creatures. (This spell works on creatures that can't be blocked.) diff --git a/forge-gui/res/cardsfolder/c/chorus_of_the_conclave.txt b/forge-gui/res/cardsfolder/c/chorus_of_the_conclave.txt index b9e3a840f6f..3c3a06d29f1 100644 --- a/forge-gui/res/cardsfolder/c/chorus_of_the_conclave.txt +++ b/forge-gui/res/cardsfolder/c/chorus_of_the_conclave.txt @@ -5,4 +5,4 @@ PT:3/8 K:Forestwalk K:As an additional cost to cast creature spells, you may pay any amount of mana. If you do, that creature enters the battlefield with that many additional +1/+1 counters on it. SVar:Picture:http://www.wizards.com/global/images/magic/general/chorus_of_the_conclave.jpg -Oracle:Forestwalk\nAs an additional cost to cast creature spells, you may pay any amount of mana. If you do, that creature enters the battlefield with that many additional +1/+1 counters on it. +Oracle:Forestwalk (This creature can't be blocked as long as defending player controls a Forest.)\nAs an additional cost to cast creature spells, you may pay any amount of mana. If you do, that creature enters the battlefield with that many additional +1/+1 counters on it. diff --git a/forge-gui/res/cardsfolder/c/chromium.txt b/forge-gui/res/cardsfolder/c/chromium.txt index f7b3c2ad845..ce23d300bc6 100644 --- a/forge-gui/res/cardsfolder/c/chromium.txt +++ b/forge-gui/res/cardsfolder/c/chromium.txt @@ -3,7 +3,7 @@ ManaCost:2 W W U U B B Types:Legendary Creature Elder Dragon PT:7/7 K:Flying -K:Rampage 2 +K:Rampage:2 K:UpkeepCost:W U B SVar:Picture:http://www.wizards.com/global/images/magic/general/chromium.jpg Oracle:Flying\nRampage 2 (Whenever this creature becomes blocked, it gets +2/+2 until end of turn for each creature blocking it beyond the first.)\nAt the beginning of your upkeep, sacrifice Chromium unless you pay {W}{U}{B}. diff --git a/forge-gui/res/cardsfolder/c/chromium_the_mutable.txt b/forge-gui/res/cardsfolder/c/chromium_the_mutable.txt new file mode 100644 index 00000000000..fb7be3eee4a --- /dev/null +++ b/forge-gui/res/cardsfolder/c/chromium_the_mutable.txt @@ -0,0 +1,9 @@ +Name:Chromium, the Mutable +ManaCost:4 W U B +Types:Legendary Creature Elder Dragon +PT:7/7 +K:Flash +K:Flying +K:CARDNAME can't be countered. +A:AB$ Animate | Cost$ Discard<1/Card> | Types$ Human | Power$ 1 | Toughness$ 1 | Keywords$ Hexproof | HiddenKeywords$ Unblockable | RemoveAllAbilities$ True | RemoveCreatureTypes$ True | SpellDescription$ Until end of turn, CARDNAME becomes a Human with base power and toughness 1/1, loses all abilities, and gains hexproof. It can’t be blocked this turn. +Oracle:Flash\nThis spell can’t be countered.\nFlying\nDiscard a card: Until end of turn, Chromium, the Mutable becomes a Human with base power and toughness 1/1, loses all abilities, and gains hexproof. It can’t be blocked this turn. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/c/cinder_elemental.txt b/forge-gui/res/cardsfolder/c/cinder_elemental.txt index b3ed1301b2d..3027ef1f821 100644 --- a/forge-gui/res/cardsfolder/c/cinder_elemental.txt +++ b/forge-gui/res/cardsfolder/c/cinder_elemental.txt @@ -2,7 +2,7 @@ Name:Cinder Elemental ManaCost:3 R Types:Creature Elemental PT:2/2 -A:AB$ DealDamage | Cost$ X R T Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | AITgts$ BetterThanSource | SpellDescription$ CARDNAME deals X damage to target creature or player. +A:AB$ DealDamage | Cost$ X R T Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | AITgts$ BetterThanSource | SpellDescription$ CARDNAME deals X damage to any target. SVar:X:Count$xPaid SVar:Picture:http://www.wizards.com/global/images/magic/general/cinder_elemental.jpg -Oracle:{X}{R}, {T}, Sacrifice Cinder Elemental: Cinder Elemental deals X damage to target creature or player. +Oracle:{X}{R}, {T}, Sacrifice Cinder Elemental: Cinder Elemental deals X damage to any target. diff --git a/forge-gui/res/cardsfolder/c/cinder_hellion.txt b/forge-gui/res/cardsfolder/c/cinder_hellion.txt index 616511327a0..afc07c35a1b 100644 --- a/forge-gui/res/cardsfolder/c/cinder_hellion.txt +++ b/forge-gui/res/cardsfolder/c/cinder_hellion.txt @@ -3,7 +3,7 @@ ManaCost:4 R Types:Creature Hellion PT:4/4 K:Trample -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 2 damage to target opponent. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | NumDmg$ 2 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 2 damage to target opponent or planeswalker. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Opponent,Planeswalker | TgtPrompt$ Select target opponent or planeswalker | NumDmg$ 2 SVar:Picture:http://www.wizards.com/global/images/magic/general/cinder_hellion.jpg -Oracle:Trample\nWhen Cinder Hellion enters the battlefield, it deals 2 damage to target opponent. +Oracle:Trample\nWhen Cinder Hellion enters the battlefield, it deals 2 damage to target opponent or planeswalker. diff --git a/forge-gui/res/cardsfolder/c/cinder_pyromancer.txt b/forge-gui/res/cardsfolder/c/cinder_pyromancer.txt index a1fec6ffc69..3b226eefb95 100644 --- a/forge-gui/res/cardsfolder/c/cinder_pyromancer.txt +++ b/forge-gui/res/cardsfolder/c/cinder_pyromancer.txt @@ -2,8 +2,8 @@ Name:Cinder Pyromancer ManaCost:2 R Types:Creature Elemental Shaman PT:0/1 -A:AB$ DealDamage | Cost$ T | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target player. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target player or planeswalker. T:Mode$ SpellCast | ValidCard$ Card.Red | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigUntap | TriggerDescription$ Whenever you cast a red spell, you may untap CARDNAME. SVar:TrigUntap:DB$Untap | Defined$ Self SVar:Picture:http://www.wizards.com/global/images/magic/general/cinder_pyromancer.jpg -Oracle:{T}: Cinder Pyromancer deals 1 damage to target player.\nWhenever you cast a red spell, you may untap Cinder Pyromancer. \ No newline at end of file +Oracle:{T}: Cinder Pyromancer deals 1 damage to target player or planeswalker.\nWhenever you cast a red spell, you may untap Cinder Pyromancer. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/c/cinder_seer.txt b/forge-gui/res/cardsfolder/c/cinder_seer.txt index bffeb15b7cd..5a4d7442bc5 100644 --- a/forge-gui/res/cardsfolder/c/cinder_seer.txt +++ b/forge-gui/res/cardsfolder/c/cinder_seer.txt @@ -2,10 +2,10 @@ Name:Cinder Seer ManaCost:3 R Types:Creature Human Wizard PT:1/1 -A:AB$ Reveal | Cost$ 2 R T | Defined$ You | RevealValid$ Card.Red | AnyNumber$ True | RememberRevealed$ True | SubAbility$ DBCinderDamage | SpellDescription$ Reveal any number of red cards in your hand. CARDNAME deals X damage to target creature or player, where X is the number of cards revealed this way. -SVar:DBCinderDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | SubAbility$ DBCinderCleanup | References$ X +A:AB$ Reveal | Cost$ 2 R T | Defined$ You | RevealValid$ Card.Red | AnyNumber$ True | RememberRevealed$ True | SubAbility$ DBCinderDamage | SpellDescription$ Reveal any number of red cards in your hand. CARDNAME deals X damage to any target, where X is the number of cards revealed this way. +SVar:DBCinderDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | SubAbility$ DBCinderCleanup | References$ X SVar:X:Remembered$Amount SVar:DBCinderCleanup:DB$ Cleanup | ClearRemembered$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/cinder_seer.jpg -Oracle:{2}{R}, {T}: Reveal any number of red cards in your hand. Cinder Seer deals X damage to target creature or player, where X is the number of cards revealed this way. +Oracle:{2}{R}, {T}: Reveal any number of red cards in your hand. Cinder Seer deals X damage to any target, where X is the number of cards revealed this way. diff --git a/forge-gui/res/cardsfolder/c/cinder_shade.txt b/forge-gui/res/cardsfolder/c/cinder_shade.txt index 8bf8ff8aa25..26260de3c00 100644 --- a/forge-gui/res/cardsfolder/c/cinder_shade.txt +++ b/forge-gui/res/cardsfolder/c/cinder_shade.txt @@ -6,4 +6,4 @@ A:AB$ Pump | Cost$ B | NumAtt$ +1 | NumDef$ +1 | SpellDescription$ CARDNAME gets A:AB$ DealDamage | Cost$ R Sac<1/CARDNAME> | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to its power to target creature. SVar:X:Count$CardPower SVar:Picture:http://www.wizards.com/global/images/magic/general/cinder_shade.jpg -Oracle:{B}: Cinder Shade gets +1/+1 until end of turn.\n{R}, Sacrifice Cinder Shade: Cinder Shade deals damage equal to its power to target creature. +Oracle:{B}: Cinder Shade gets +1/+1 until end of turn.\n{R}, Sacrifice Cinder Shade: It deals damage equal to its power to target creature. diff --git a/forge-gui/res/cardsfolder/c/cinder_storm.txt b/forge-gui/res/cardsfolder/c/cinder_storm.txt index 28df92f8598..f3dc8628704 100644 --- a/forge-gui/res/cardsfolder/c/cinder_storm.txt +++ b/forge-gui/res/cardsfolder/c/cinder_storm.txt @@ -1,6 +1,6 @@ Name:Cinder Storm ManaCost:6 R Types:Sorcery -A:SP$ DealDamage | Cost$ 6 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 7 | SpellDescription$ CARDNAME deals 7 damage to target creature or player. +A:SP$ DealDamage | Cost$ 6 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 7 | SpellDescription$ CARDNAME deals 7 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/cinder_storm.jpg -Oracle:Cinder Storm deals 7 damage to target creature or player. +Oracle:Cinder Storm deals 7 damage to any target. diff --git a/forge-gui/res/cardsfolder/c/circle_of_despair.txt b/forge-gui/res/cardsfolder/c/circle_of_despair.txt index 05a6993e947..6a40341eeb3 100644 --- a/forge-gui/res/cardsfolder/c/circle_of_despair.txt +++ b/forge-gui/res/cardsfolder/c/circle_of_despair.txt @@ -1,14 +1,13 @@ Name:Circle of Despair ManaCost:1 W B Types:Enchantment -A:AB$ ChooseSource | Cost$ 1 Sac<1/Creature> | Choices$ Card,Emblem | AILogic$ NeedsPrevention | SubAbility$ DBEffect | SpellDescription$ The next time a source of your choice would deal damage to target creature or player this turn, prevent that damage. -SVar:DBEffect:DB$ Effect | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to prevent damage to | Triggers$ OutOfSight | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Targeted | SVars$ RPreventNextFromSource,ExileEffect,OutOfSight | SubAbility$ DBCleanup | ConditionDefined$ ChosenCard | ConditionPresent$ Card,Emblem | ConditionCompare$ GE1 -SVar:OutOfSight:Mode$ ChangesZone | TriggerZones$ Command | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.IsRemembered | Execute$ ExileEffect | Static$ True -SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.ChosenCard,Emblem.ChosenCard | ValidTarget$ Card.IsRemembered,Player.IsRemembered | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time the chosen source deals damage to the targeted creature or player, prevent that damage. +A:AB$ ChooseSource | Cost$ 1 Sac<1/Creature> | Choices$ Card,Emblem | AILogic$ NeedsPrevention | SubAbility$ DBEffect | SpellDescription$ The next time a source of your choice would deal damage to any target this turn, prevent that damage. +SVar:DBEffect:DB$ Effect | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to prevent damage to | ExileOnMoved$ Battlefield | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Targeted | SVars$ RPreventNextFromSource,ExileEffect | SubAbility$ DBCleanup | ConditionDefined$ ChosenCard | ConditionPresent$ Card,Emblem | ConditionCompare$ GE1 +SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.ChosenCard,Emblem.ChosenCard | ValidTarget$ Card.IsRemembered,Player.IsRemembered | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time the chosen source deals damage to the targeted permanent or player, prevent that damage. SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True SVar:NonStackingEffect:True SVar:AIPreference:SacCost$Creature.namedBrood of Cockroaches,Creature.token SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/circle_of_despair.jpg -Oracle:{1}, Sacrifice a creature: The next time a source of your choice would deal damage to target creature or player this turn, prevent that damage. +Oracle:{1}, Sacrifice a creature: The next time a source of your choice would deal damage to any target this turn, prevent that damage. diff --git a/forge-gui/res/cardsfolder/c/circle_of_flame.txt b/forge-gui/res/cardsfolder/c/circle_of_flame.txt index a849343cb5b..5ee48bb2c72 100644 --- a/forge-gui/res/cardsfolder/c/circle_of_flame.txt +++ b/forge-gui/res/cardsfolder/c/circle_of_flame.txt @@ -2,6 +2,6 @@ Name:Circle of Flame ManaCost:1 R Types:Enchantment T:Mode$ Attacks | ValidCard$ Creature.withoutFlying | Attacked$ You,Planeswalker.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever a creature without flying attacks you or a planeswalker you control, CARDNAME deals 1 damage to that creature. -SVar:TrigDamage:DB$ DealDamage | Defined$ TriggeredAttacker | NumDmg$ 1 +SVar:TrigDamage:DB$ DealDamage | Defined$ TriggeredAttackerLKICopy | NumDmg$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/circle_of_flame.jpg Oracle:Whenever a creature without flying attacks you or a planeswalker you control, Circle of Flame deals 1 damage to that creature. diff --git a/forge-gui/res/cardsfolder/c/citadel_castellan.txt b/forge-gui/res/cardsfolder/c/citadel_castellan.txt index c56fcc1ce7b..4791a31dddf 100644 --- a/forge-gui/res/cardsfolder/c/citadel_castellan.txt +++ b/forge-gui/res/cardsfolder/c/citadel_castellan.txt @@ -6,4 +6,4 @@ K:Vigilance K:Renown:2 DeckHas:Ability$Counters SVar:Picture:http://www.wizards.com/global/images/magic/general/citadel_castellan.jpg -Oracle:Vigilance\nRenown 2 (When this creature deals combat damage to a player, if it isn't renowned, put two +1/+1 counters on it and it becomes renowned.) +Oracle:Vigilance (Attacking doesn't cause this creature to tap.)\nRenown 2 (When this creature deals combat damage to a player, if it isn't renowned, put two +1/+1 counters on it and it becomes renowned.) diff --git a/forge-gui/res/cardsfolder/c/city_in_a_bottle.txt b/forge-gui/res/cardsfolder/c/city_in_a_bottle.txt index be6a7f557dc..0caf421c97a 100644 --- a/forge-gui/res/cardsfolder/c/city_in_a_bottle.txt +++ b/forge-gui/res/cardsfolder/c/city_in_a_bottle.txt @@ -1,7 +1,7 @@ Name:City in a Bottle ManaCost:2 Types:Artifact -T:Mode$ Always | TriggerZones$ Battlefield | IsPresent$ Permanent.nontoken+setARN+Other | Execute$ TrigSac | TriggerDescription$ Whenever a nontoken permanent originally printed in the Arabian Nights expansion other than CARDNAME is on the battlefield, its controller sacrifices it. +T:Mode$ Always | TriggerZones$ Battlefield | IsPresent$ Permanent.nontoken+setARN+Other | Execute$ TrigSac | TriggerDescription$ Whenever another nontoken permanent with a name originally printed in the Arabian Nights expansion is on the battlefield, its controller sacrifices it. SVar:TrigSac:DB$ SacrificeAll | ValidCards$ Permanent.nontoken+setARN+Other S:Mode$ CantPlayLand | ValidCard$ Card.setARN | Description$ Players can't cast spells or play lands with a name originally printed in the Arabian Nights expansion. S:Mode$ CantBeCast | ValidCard$ Card.setARN @@ -9,4 +9,4 @@ SVar:RemAIDeck:True SVar:RemRandomDeck:True SVar:NonStackingEffect:True SVar:Picture:http://www.wizards.com/global/images/magic/general/city_in_a_bottle.jpg -Oracle:Whenever a nontoken permanent originally printed in the Arabian Nights expansion other than City in a Bottle is on the battlefield, its controller sacrifices it.\nPlayers can't cast spells or play lands with a name originally printed in the Arabian Nights expansion. +Oracle:Whenever another nontoken permanent with a name originally printed in the Arabian Nights expansion is on the battlefield, its controller sacrifices it.\nPlayers can't cast spells or play lands with a name originally printed in the Arabian Nights expansion. diff --git a/forge-gui/res/cardsfolder/c/city_of_solitude.txt b/forge-gui/res/cardsfolder/c/city_of_solitude.txt index c6e63509b87..b47a9677d30 100644 --- a/forge-gui/res/cardsfolder/c/city_of_solitude.txt +++ b/forge-gui/res/cardsfolder/c/city_of_solitude.txt @@ -1,10 +1,8 @@ Name:City of Solitude ManaCost:2 G Types:Enchantment -S:Mode$ CantBeCast | ValidCard$ Card | Condition$ PlayerTurn | Caster$ Opponent | Description$ Players can cast spells and activate abilities only during their own turns. -S:Mode$ CantBeCast | ValidCard$ Card | Condition$ NotPlayerTurn | Caster$ You -S:Mode$ CantBeActivated | ValidCard$ Card | Condition$ PlayerTurn | Activator$ Opponent -S:Mode$ CantBeActivated | ValidCard$ Card | Condition$ NotPlayerTurn | Activator$ You +S:Mode$ CantBeCast | ValidCard$ Card | NonCasterTurn$ True | Description$ Players can cast spells and activate abilities only during their own turns. +S:Mode$ CantBeActivated | ValidCard$ Card | NonActivatorTurn$ True SVar:NonStackingEffect:True SVar:RemRandomDeck:True SVar:Picture:http://wizards.com/global/images/magic/general/city_of_solitude.jpg diff --git a/forge-gui/res/cardsfolder/c/clan_defiance.txt b/forge-gui/res/cardsfolder/c/clan_defiance.txt index 056a333ba75..667d4f4e0a5 100644 --- a/forge-gui/res/cardsfolder/c/clan_defiance.txt +++ b/forge-gui/res/cardsfolder/c/clan_defiance.txt @@ -4,7 +4,7 @@ Types:Sorcery A:SP$ Charm | Cost$ X R G | MinCharmNum$ 1 | CharmNum$ 3 | Choices$ DamageFlyingCreature,DamageNonFlyingCreature,DamagePlayer SVar:DamageFlyingCreature:DB$ DealDamage | ValidTgts$ Creature.withFlying | TgtPrompt$ Select target creature with flying | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to target creature with flying. SVar:DamageNonFlyingCreature: DB$ DealDamage | ValidTgts$ Creature.withoutFlying | TgtPrompt$ Select target creature without flying | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to target creature without flying. -SVar:DamagePlayer:DB$ DealDamage | ValidTgts$ Player | TgtPrompt$ Select target Player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to target player. +SVar:DamagePlayer:DB$ DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target Player or Planeswalker | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to target player or planeswalker. SVar:X:Count$xPaid SVar:Picture:http://www.wizards.com/global/images/magic/general/clan_defiance.jpg -Oracle:Choose one or more —\n• Clan Defiance deals X damage to target creature with flying.\n• Clan Defiance deals X damage to target creature without flying.\n• Clan Defiance deals X damage to target player. +Oracle:Choose one or more —\n• Clan Defiance deals X damage to target creature with flying.\n• Clan Defiance deals X damage to target creature without flying.\n• Clan Defiance deals X damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/c/claustrophobia.txt b/forge-gui/res/cardsfolder/c/claustrophobia.txt index a39f9d50e81..13256ac4414 100644 --- a/forge-gui/res/cardsfolder/c/claustrophobia.txt +++ b/forge-gui/res/cardsfolder/c/claustrophobia.txt @@ -7,4 +7,4 @@ T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefi SVar:TrigTap:DB$ Tap | Defined$ Enchanted S:Mode$ Continuous | Affected$ Creature.AttachedBy | AddHiddenKeyword$ CARDNAME doesn't untap during your untap step. | Description$ Enchanted creature doesn't untap during its controller's untap step. SVar:Picture:http://www.wizards.com/global/images/magic/general/claustrophobia.jpg -Oracle:Enchant creature\nWhen Claustrophobia enters the battlefield, tap enchanted creature.\nEnchanted creature doesn't untap during its controller's untap step. \ No newline at end of file +Oracle:Enchant creature\nWhen Claustrophobia enters the battlefield, tap enchanted creature.\nEnchanted creature doesn't untap during its controller's untap step. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/c/cleansing_nova.txt b/forge-gui/res/cardsfolder/c/cleansing_nova.txt new file mode 100644 index 00000000000..f632fceb5d1 --- /dev/null +++ b/forge-gui/res/cardsfolder/c/cleansing_nova.txt @@ -0,0 +1,7 @@ +Name:Cleansing Nova +ManaCost:3 W W +Types:Sorcery +A:SP$ Charm | Cost$ 3 W W | Choices$ DBDestroyAllCreatures,DBDestroyAllArtifactsAndEnchantments | CharmNum$ 1 +SVar:DBDestroyAllCreatures:DB$ DestroyAll | ValidCards$ Creature | SpellDescription$ Destroy all creatures. +SVar:DBDestroyAllArtifactsAndEnchantments:DB$ DestroyAll | ValidCards$ Artifact,Enchantment | SpellDescription$ Destroy all artifacts and enchantments. +Oracle:Choose one —\n• Destroy all creatures.\n•Destroy all artifacts and enchantments. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/c/cleansing_screech.txt b/forge-gui/res/cardsfolder/c/cleansing_screech.txt new file mode 100644 index 00000000000..6ff63c07a6b --- /dev/null +++ b/forge-gui/res/cardsfolder/c/cleansing_screech.txt @@ -0,0 +1,5 @@ +Name:Cleansing Screech +ManaCost:4 R +Types:Sorcery +A:SP$ DealDamage | Cost$ 4 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to any target. +Oracle:Cleansing Screech deals 4 damage to any target. diff --git a/forge-gui/res/cardsfolder/c/cleaver_riot.txt b/forge-gui/res/cardsfolder/c/cleaver_riot.txt index b16d29fc700..f233ad6fc13 100644 --- a/forge-gui/res/cardsfolder/c/cleaver_riot.txt +++ b/forge-gui/res/cardsfolder/c/cleaver_riot.txt @@ -3,4 +3,4 @@ ManaCost:4 R Types:Sorcery A:SP$ PumpAll | Cost$ 4 R | ValidCards$ Creature.YouCtrl | KW$ Double Strike | SpellDescription$ Creatures you control gain double strike until end of turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/cleaver_riot.jpg -Oracle:Creatures you control gain double strike until end of turn. +Oracle:Creatures you control gain double strike until end of turn. (They deal both first-strike and regular combat damage.) diff --git a/forge-gui/res/cardsfolder/c/clergy_en_vec.txt b/forge-gui/res/cardsfolder/c/clergy_en_vec.txt index c6582cfb29e..eeece54b60f 100644 --- a/forge-gui/res/cardsfolder/c/clergy_en_vec.txt +++ b/forge-gui/res/cardsfolder/c/clergy_en_vec.txt @@ -2,7 +2,7 @@ Name:Clergy en-Vec ManaCost:1 W Types:Creature Human Cleric PT:1/1 -A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to any target this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/clergy_en_vec.jpg SVar:NonCombatPriority:10 -Oracle:{T}: Prevent the next 1 damage that would be dealt to target creature or player this turn. +Oracle:{T}: Prevent the next 1 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/c/clever_impersonator.txt b/forge-gui/res/cardsfolder/c/clever_impersonator.txt index 1d20b2ed845..e9e0c5e2f44 100644 --- a/forge-gui/res/cardsfolder/c/clever_impersonator.txt +++ b/forge-gui/res/cardsfolder/c/clever_impersonator.txt @@ -2,8 +2,7 @@ Name:Clever Impersonator ManaCost:2 U U Types:Creature Shapeshifter PT:0/0 -K:ETBReplacement:Copy:ChoosePermanent:Optional -SVar:ChoosePermanent:DB$ ChooseCard | Defined$ You | Amount$ 1 | Choices$ Permanent.nonLand+Other | SubAbility$ DBCopy | AILogic$ Clone | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of any nonland permanent on the battlefield. -SVar:DBCopy:DB$ Clone | Defined$ ChosenCard +K:ETBReplacement:Copy:DBCopy:Optional +SVar:DBCopy:DB$ Clone | Choices$ Permanent.nonLand+Other | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of any nonland permanent on the battlefield. SVar:Picture:http://www.wizards.com/global/images/magic/general/clever_impersonator.jpg Oracle:You may have Clever Impersonator enter the battlefield as a copy of any nonland permanent on the battlefield. diff --git a/forge-gui/res/cardsfolder/c/cliff_threader.txt b/forge-gui/res/cardsfolder/c/cliff_threader.txt index ad612995d44..758dbc397b3 100644 --- a/forge-gui/res/cardsfolder/c/cliff_threader.txt +++ b/forge-gui/res/cardsfolder/c/cliff_threader.txt @@ -4,4 +4,4 @@ Types:Creature Kor Scout PT:2/1 K:Mountainwalk SVar:Picture:http://www.wizards.com/global/images/magic/general/cliff_threader.jpg -Oracle:Mountainwalk +Oracle:Mountainwalk (This creature can't be blocked as long as defending player controls a Mountain.) diff --git a/forge-gui/res/cardsfolder/c/clockwork_hydra.txt b/forge-gui/res/cardsfolder/c/clockwork_hydra.txt index e2c363025a7..860cee5c3fa 100644 --- a/forge-gui/res/cardsfolder/c/clockwork_hydra.txt +++ b/forge-gui/res/cardsfolder/c/clockwork_hydra.txt @@ -3,12 +3,12 @@ ManaCost:5 Types:Artifact Creature Hydra PT:0/0 K:etbCounter:P1P1:4 -T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigClockworkRemoveCounter | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME attacks or blocks, remove a +1/+1 counter from it. If you do, CARDNAME deals 1 damage to target creature or player. -T:Mode$ Blocks | ValidCard$ Card.Self | Execute$ TrigClockworkRemoveCounter | TriggerZones$ Battlefield | Secondary$ True | TriggerDescription$ Whenever CARDNAME attacks or blocks, remove a +1/+1 counter from it. If you do, CARDNAME deals 1 damage to target creature or player. +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigClockworkRemoveCounter | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME attacks or blocks, remove a +1/+1 counter from it. If you do, CARDNAME deals 1 damage to any target. +T:Mode$ Blocks | ValidCard$ Card.Self | Execute$ TrigClockworkRemoveCounter | TriggerZones$ Battlefield | Secondary$ True | TriggerDescription$ Whenever CARDNAME attacks or blocks, remove a +1/+1 counter from it. If you do, CARDNAME deals 1 damage to any target. SVar:TrigClockworkRemoveCounter:DB$ RemoveCounter | CounterType$ P1P1 | CounterNum$ 1 | RememberRemoved$ True | SubAbility$ DBClockworkDamage -SVar:DBClockworkDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | References$ ClockworkX | ConditionCheckSVar$ ClockworkX | ConditionSVarCompare$ GE1 | SubAbility$ DBClockworkCleanup +SVar:DBClockworkDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | References$ ClockworkX | ConditionCheckSVar$ ClockworkX | ConditionSVarCompare$ GE1 | SubAbility$ DBClockworkCleanup A:AB$ PutCounter | Cost$ T | CounterType$ P1P1 | CounterNum$ 1 | SpellDescription$ Put a +1/+1 counter on CARDNAME. SVar:DBClockworkCleanup:DB$ Cleanup | ClearRemembered$ True SVar:ClockworkX:Count$RememberedSize SVar:Picture:http://www.wizards.com/global/images/magic/general/clockwork_hydra.jpg -Oracle:Clockwork Hydra enters the battlefield with four +1/+1 counters on it.\nWhenever Clockwork Hydra attacks or blocks, remove a +1/+1 counter from it. If you do, Clockwork Hydra deals 1 damage to target creature or player.\n{T}: Put a +1/+1 counter on Clockwork Hydra. +Oracle:Clockwork Hydra enters the battlefield with four +1/+1 counters on it.\nWhenever Clockwork Hydra attacks or blocks, remove a +1/+1 counter from it. If you do, Clockwork Hydra deals 1 damage to any target.\n{T}: Put a +1/+1 counter on Clockwork Hydra. diff --git a/forge-gui/res/cardsfolder/c/clone.txt b/forge-gui/res/cardsfolder/c/clone.txt index ac6656d4471..2c207534487 100644 --- a/forge-gui/res/cardsfolder/c/clone.txt +++ b/forge-gui/res/cardsfolder/c/clone.txt @@ -2,8 +2,7 @@ Name:Clone ManaCost:3 U Types:Creature Shapeshifter PT:0/0 -K:ETBReplacement:Copy:ChooseCreature:Optional -SVar:ChooseCreature:DB$ ChooseCard | Defined$ You | Amount$ 1 | Choices$ Creature.Other | SubAbility$ DBCopy | RememberChosen$ True | AILogic$ Clone | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of any creature on the battlefield. -SVar:DBCopy:DB$ Clone | Defined$ Remembered +K:ETBReplacement:Copy:DBCopy:Optional +SVar:DBCopy:DB$ Clone | Choices$ Creature.Other | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of any creature on the battlefield. SVar:Picture:http://www.wizards.com/global/images/magic/general/clone.jpg Oracle:You may have Clone enter the battlefield as a copy of any creature on the battlefield. diff --git a/forge-gui/res/cardsfolder/c/close_quarters.txt b/forge-gui/res/cardsfolder/c/close_quarters.txt index 41432622b58..2dfa5b8f8cf 100644 --- a/forge-gui/res/cardsfolder/c/close_quarters.txt +++ b/forge-gui/res/cardsfolder/c/close_quarters.txt @@ -1,7 +1,7 @@ Name:Close Quarters ManaCost:2 R R Types:Enchantment -T:Mode$ AttackerBlocked | ValidCard$ Card.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever a creature you control becomes blocked, CARDNAME deals 1 damage to target creature or player. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 +T:Mode$ AttackerBlocked | ValidCard$ Card.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever a creature you control becomes blocked, CARDNAME deals 1 damage to any target. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/close_quarters.jpg -Oracle:Whenever a creature you control becomes blocked, Close Quarters deals 1 damage to target creature or player. +Oracle:Whenever a creature you control becomes blocked, Close Quarters deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/c/cloud_sprite.txt b/forge-gui/res/cardsfolder/c/cloud_sprite.txt index 67a08513332..438a7ea17e3 100644 --- a/forge-gui/res/cardsfolder/c/cloud_sprite.txt +++ b/forge-gui/res/cardsfolder/c/cloud_sprite.txt @@ -5,4 +5,4 @@ PT:1/1 K:Flying K:CARDNAME can block only creatures with flying. SVar:Picture:http://www.wizards.com/global/images/magic/general/cloud_sprite.jpg -Oracle:Flying\nCloud Sprite can block only creatures with flying. +Oracle:Flying (This creature can't be blocked except by creatures with flying or reach.)\nCloud Sprite can block only creatures with flying. diff --git a/forge-gui/res/cardsfolder/c/cloudcrown_oak.txt b/forge-gui/res/cardsfolder/c/cloudcrown_oak.txt index 531463df836..ef4d7709c52 100644 --- a/forge-gui/res/cardsfolder/c/cloudcrown_oak.txt +++ b/forge-gui/res/cardsfolder/c/cloudcrown_oak.txt @@ -4,4 +4,4 @@ Types:Creature Treefolk Warrior PT:3/4 K:Reach SVar:Picture:http://resources.wizards.com/magic/cards/lrw/en/card139492.jpg -Oracle:Reach +Oracle:Reach (This creature can block creatures with flying.) diff --git a/forge-gui/res/cardsfolder/c/cloudreader_sphinx.txt b/forge-gui/res/cardsfolder/c/cloudreader_sphinx.txt index 186cdca3b14..00e540e69fd 100644 --- a/forge-gui/res/cardsfolder/c/cloudreader_sphinx.txt +++ b/forge-gui/res/cardsfolder/c/cloudreader_sphinx.txt @@ -5,4 +5,4 @@ PT:3/4 K:Flying T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigScry | TriggerDescription$ When CARDNAME enters the battlefield, scry 2. (To scry 2, look at the top two cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) SVar:TrigScry:DB$ Scry | ScryNum$ 2 -Oracle:When Cloudreader Sphinx enters the battlefield, scry 2. (Look at the top two cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) +Oracle:Flying\nWhen Cloudreader Sphinx enters the battlefield, scry 2. (Look at the top two cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) diff --git a/forge-gui/res/cardsfolder/c/coat_of_arms.txt b/forge-gui/res/cardsfolder/c/coat_of_arms.txt index 45e23dd859a..9e67c3200ee 100644 --- a/forge-gui/res/cardsfolder/c/coat_of_arms.txt +++ b/forge-gui/res/cardsfolder/c/coat_of_arms.txt @@ -6,4 +6,4 @@ SVar:AffectedX:Count$Valid Creature.sharesCreatureTypeWith+Other SVar:PlayMain1:TRUE SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/coat_of_arms.jpg -Oracle:Each creature gets +1/+1 for each other creature on the battlefield that shares at least one creature type with it. \ No newline at end of file +Oracle:Each creature gets +1/+1 for each other creature on the battlefield that shares at least one creature type with it. (For example, if two Goblin Warriors and a Goblin Shaman are on the battlefield, each gets +2/+2.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/c/cobbled_wings.txt b/forge-gui/res/cardsfolder/c/cobbled_wings.txt index 715066a8ad8..d3aa25e9e56 100644 --- a/forge-gui/res/cardsfolder/c/cobbled_wings.txt +++ b/forge-gui/res/cardsfolder/c/cobbled_wings.txt @@ -4,4 +4,4 @@ Types:Artifact Equipment K:Equip:1 S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddKeyword$ Flying | Description$ Equipped creature has flying. SVar:Picture:http://www.wizards.com/global/images/magic/general/cobbled_wings.jpg -Oracle:Equipped creature has flying.\nEquip {1} +Oracle:Equipped creature has flying.\nEquip {1} ({1}: Attach to target creature you control. Equip only as a sorcery.) diff --git a/forge-gui/res/cardsfolder/c/cobra_trap.txt b/forge-gui/res/cardsfolder/c/cobra_trap.txt index 1f1ccdb293b..55700714305 100644 --- a/forge-gui/res/cardsfolder/c/cobra_trap.txt +++ b/forge-gui/res/cardsfolder/c/cobra_trap.txt @@ -9,4 +9,4 @@ SVar:SetTrap:Number$0 SVar:AltCost:Cost$ G | CheckSVar$ SetTrap | SVarCompare$ GE1 | Description$ If a noncreature permanent under your control was destroyed this turn by a spell or ability an opponent controlled, you may pay {G} rather than pay CARDNAME's mana cost. A:SP$ Token | Cost$ 4 G G | TokenAmount$ 4 | TokenName$ Snake | TokenTypes$ Creature,Snake | TokenOwner$ You | TokenColors$ Green | TokenPower$ 1 | TokenToughness$ 1 | SpellDescription$ Create four 1/1 green Snake creature tokens. SVar:Picture:http://www.wizards.com/global/images/magic/general/cobra_trap.jpg -Oracle:If a noncreature permanent under your control was destroyed this turn by a spell or ability an opponent controlled, you may pay {G} rather than pay Cobra Trap's mana cost.\nCreate four 1/1 green Snake creature tokens. +Oracle:If a noncreature permanent under your control was destroyed this turn by a spell or ability an opponent controlled, you may pay {G} rather than pay this spell's mana cost.\nCreate four 1/1 green Snake creature tokens. diff --git a/forge-gui/res/cardsfolder/c/cocoon.txt b/forge-gui/res/cardsfolder/c/cocoon.txt index 07f0283f086..d61ac601170 100644 --- a/forge-gui/res/cardsfolder/c/cocoon.txt +++ b/forge-gui/res/cardsfolder/c/cocoon.txt @@ -6,13 +6,15 @@ A:SP$ Attach | Cost$ G | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigTap | TriggerDescription$ When CARDNAME enters the battlefield, tap enchanted creature and put three pupa counters on CARDNAME. SVar:TrigTap:DB$ Tap | Defined$ Enchanted | SubAbility$ DBPutCounter SVar:DBPutCounter:DB$ PutCounter | CounterType$ PUPA | CounterNum$ 3 -S:Mode$ Continuous | Affected$ Creature.AttachedBy | AddHiddenKeyword$ CARDNAME doesn't untap during your untap step. | CheckSVar$ X | Description$ Enchanted creature doesn't untap during your untap step if CARDNAME has a pupa counter on it. -T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of your upkeep, remove a pupa counter from CARDNAME. If you can't, sacrifice it, put a +1/+1 counter on enchanted creature, and that creature gains flying. (This effect lasts indefinitely.) +S:Mode$ Continuous | Affected$ Creature.AttachedBy | AddHiddenKeyword$ CARDNAME doesn't untap during your untap step. | IsPresent$ Card.Self+counters_GE1_PUPA | Description$ Enchanted creature doesn't untap during your untap step if CARDNAME has a pupa counter on it. +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigRemoveCounter | TriggerDescription$ At the beginning of your upkeep, remove a pupa counter from CARDNAME. If you can't, sacrifice it, put a +1/+1 counter on enchanted creature, and that creature gains flying. (This effect lasts indefinitely.) +SVar:TrigRemoveCounter:DB$ RemoveCounter | Defined$ Self | CounterType$ PUPA | CounterNum$ 1 | RememberRemoved$ True | SubAbility$ TrigPutCounter +# TODO need EnchantedLKI because it isn't enchanted anymore if this is sacrificed SVar:TrigPutCounter:DB$ PutCounter | Defined$ Enchanted | CounterType$ P1P1 | CounterNum$ 1 | ConditionCheckSVar$ X | ConditionSVarCompare$ LE0 | References$ X | SubAbility$ TrigPump SVar:TrigPump:DB$ Pump | Defined$ Enchanted | KW$ Flying | Permanent$ True | ConditionCheckSVar$ X | ConditionSVarCompare$ LE0 | References$ X | SubAbility$ TrigSac -SVar:TrigSac:DB$ Sacrifice | Defined$ Self | ConditionCheckSVar$ X | ConditionSVarCompare$ LE0 | References$ X | SubAbility$ TrigRemoveCounter -SVar:TrigRemoveCounter:DB$ RemoveCounter | Defined$ Self | CounterType$ PUPA | CounterNum$ 1 -SVar:X:Count$Valid Card.Self+counters_GE1_PUPA +SVar:TrigSac:DB$ Sacrifice | Defined$ Self | ConditionCheckSVar$ X | ConditionSVarCompare$ LE0 | References$ X | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:Count$RememberedSize SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/cocoon.jpg -Oracle:Enchant creature you control\nEnchanted creature doesn't untap during your untap step if Cocoon has a pupa counter on it.\nWhen Cocoon enters the battlefield, tap enchanted creature and put three pupa counters on Cocoon.\nAt the beginning of your upkeep, remove a pupa counter from Cocoon. If you can't, sacrifice it, put a +1/+1 counter on enchanted creature, and that creature gains flying. (This effect lasts indefinitely.) +Oracle:Enchant creature you control\nWhen Cocoon enters the battlefield, tap enchanted creature and put three pupa counters on Cocoon.\nEnchanted creature doesn't untap during your untap step if Cocoon has a pupa counter on it.\nAt the beginning of your upkeep, remove a pupa counter from Cocoon. If you can't, sacrifice it, put a +1/+1 counter on enchanted creature, and that creature gains flying. diff --git a/forge-gui/res/cardsfolder/c/coffin_purge.txt b/forge-gui/res/cardsfolder/c/coffin_purge.txt index e7d4ed6cbcf..a65a64c8013 100644 --- a/forge-gui/res/cardsfolder/c/coffin_purge.txt +++ b/forge-gui/res/cardsfolder/c/coffin_purge.txt @@ -1,7 +1,7 @@ Name:Coffin Purge ManaCost:B Types:Instant -K:Flashback B +K:Flashback:B A:SP$ ChangeZone | Cost$ B | Origin$ Graveyard | Destination$ Exile | TgtPrompt$ Choose target card in a graveyard | ValidTgts$ Card | SpellDescription$ Exile target card from a graveyard. SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/coffin_purge.jpg diff --git a/forge-gui/res/cardsfolder/c/collateral_damage.txt b/forge-gui/res/cardsfolder/c/collateral_damage.txt index 901e679a6d6..277e5d60bb4 100644 --- a/forge-gui/res/cardsfolder/c/collateral_damage.txt +++ b/forge-gui/res/cardsfolder/c/collateral_damage.txt @@ -1,8 +1,8 @@ Name:Collateral Damage ManaCost:R Types:Instant -A:SP$ DealDamage | Cost$ R Sac<1/Creature> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. +A:SP$ DealDamage | Cost$ R Sac<1/Creature> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. SVar:AIPreference:SacCost$Creature.token+powerLE2+toughnessLE2,Creature.powerLE1+toughnessLE2+cmcLE2 SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/collateral_damage.jpg -Oracle:As an additional cost to cast Collateral Damage, sacrifice a creature.\nCollateral Damage deals 3 damage to target creature or player. +Oracle:As an additional cost to cast this spell, sacrifice a creature.\nCollateral Damage deals 3 damage to any target. diff --git a/forge-gui/res/cardsfolder/c/collective_defiance.txt b/forge-gui/res/cardsfolder/c/collective_defiance.txt index 2121f88f051..4b0991a3d70 100644 --- a/forge-gui/res/cardsfolder/c/collective_defiance.txt +++ b/forge-gui/res/cardsfolder/c/collective_defiance.txt @@ -8,6 +8,6 @@ SVar:DBDraw:DB$ Draw | NumCards$ X | Defined$ ParentTarget | SubAbility$ DBClean SVar:DBCleanup:DB$Cleanup | ClearRemembered$ True SVar:X:Remembered$Amount SVar:DBDamage1:DB$ DealDamage | ValidTgts$ Creature | TgtPrompt$ Select target creature (to deal 4 damage) | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target creature. -SVar:DBDamage2:DB$ DealDamage | ValidTgts$ Opponent | AILogic$ ChoiceBurn | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target opponent. +SVar:DBDamage2:DB$ DealDamage | ValidTgts$ Opponent,Planeswalker | AILogic$ ChoiceBurn | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target opponent or planeswalker. SVar:Picture:http://www.wizards.com/global/images/magic/general/collective_defiance.jpg -Oracle:Escalate {1} (Pay this cost for each mode chosen beyond the first.)\nChoose one or more —\n• Target player discards all the cards in their hand, then draws that many cards.\n• Collective Defiance deals 4 damage to target creature.\n• Collective Defiance deals 3 damage to target opponent. +Oracle:Escalate {1} (Pay this cost for each mode chosen beyond the first.)\nChoose one or more —\n• Target player discards all the cards in their hand, then draws that many cards.\n• Collective Defiance deals 4 damage to target creature.\n• Collective Defiance deals 3 damage to target opponent or planeswalker. diff --git a/forge-gui/res/cardsfolder/c/collective_effort.txt b/forge-gui/res/cardsfolder/c/collective_effort.txt index 2453cf1d45e..0411393cddf 100644 --- a/forge-gui/res/cardsfolder/c/collective_effort.txt +++ b/forge-gui/res/cardsfolder/c/collective_effort.txt @@ -7,4 +7,4 @@ SVar:DBDestroyCreature:DB$Destroy | ValidTgts$ Creature.powerGE4 | TgtPrompt$ Se SVar:DBDestroyEnchantment:DB$Destroy | ValidTgts$ Enchantment | TgtPrompt$ Select target enchantment | SpellDescription$ Destroy target enchantment. SVar:DBPutCounterAll:DB$PutCounterAll | ValidTgts$ Player | TgtPrompt$ Select a player | ValidCards$ Creature | CounterType$ P1P1 | CounterNum$ 1 | SpellDescription$ Put a +1/+1 counter on each creature target player controls. SVar:Picture:http://www.wizards.com/global/images/magic/general/collective_effort.jpg -Oracle:Escalate—Tap an untapped creature you control (Pay this cost for each mode chosen beyond the first.)\nChoose one or more —\n• Destroy target creature with power 4 or greater.\n• Destroy target enchantment\n• Put a +1/+1 counter on each creature target player controls \ No newline at end of file +Oracle:Escalate—Tap an untapped creature you control. (Pay this cost for each mode chosen beyond the first.)\nChoose one or more —\n• Destroy target creature with power 4 or greater.\n• Destroy target enchantment.\n• Put a +1/+1 counter on each creature target player controls. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/c/colorful_feiyi_sparrow.txt b/forge-gui/res/cardsfolder/c/colorful_feiyi_sparrow.txt new file mode 100644 index 00000000000..9e828a95d55 --- /dev/null +++ b/forge-gui/res/cardsfolder/c/colorful_feiyi_sparrow.txt @@ -0,0 +1,6 @@ +Name:Colorful Feiyi Sparrow +ManaCost:1 W +Types:Creature Bird +K:Flying +Oracle:Flying (This creature can't be blocked except by creatures with flying or reach.) +PT:1/3 diff --git a/forge-gui/res/cardsfolder/c/colos_yearling.txt b/forge-gui/res/cardsfolder/c/colos_yearling.txt index e422476d656..b6b60d30bc4 100644 --- a/forge-gui/res/cardsfolder/c/colos_yearling.txt +++ b/forge-gui/res/cardsfolder/c/colos_yearling.txt @@ -5,4 +5,4 @@ PT:1/1 K:Mountainwalk A:AB$ Pump | Cost$ R | NumAtt$ +1 | SpellDescription$ CARDNAME gets +1/+0 until end of turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/colos_yearling.jpg -Oracle:Mountainwalk\n{R}: Colos Yearling gets +1/+0 until end of turn. +Oracle:Mountainwalk (This creature can't be blocked as long as defending player controls a Mountain.)\n{R}: Colos Yearling gets +1/+0 until end of turn. diff --git a/forge-gui/res/cardsfolder/c/colossal_heroics.txt b/forge-gui/res/cardsfolder/c/colossal_heroics.txt index 323e2ceac7b..70dd985166a 100644 --- a/forge-gui/res/cardsfolder/c/colossal_heroics.txt +++ b/forge-gui/res/cardsfolder/c/colossal_heroics.txt @@ -6,4 +6,4 @@ A:SP$ Pump | Cost$ 2 G | ValidTgts$ Creature | NumAtt$ +2 | NumDef$ +2 | TargetM SVar:DBUntap:DB$ Untap | Defined$ Targeted SVar:MaxTargets:Count$Valid Creature SVar:Picture:http://www.wizards.com/global/images/magic/general/colossal_heroics.jpg -Oracle:Strive — Colossal Heroics costs {1}{G} more to cast for each target beyond the first.\nAny number of target creatures each get +2/+2 until end of turn. Untap those creatures. +Oracle:Strive — This spell costs {1}{G} more to cast for each target beyond the first.\nAny number of target creatures each get +2/+2 until end of turn. Untap those creatures. diff --git a/forge-gui/res/cardsfolder/c/colossal_majesty.txt b/forge-gui/res/cardsfolder/c/colossal_majesty.txt new file mode 100644 index 00000000000..1c69bfd29f2 --- /dev/null +++ b/forge-gui/res/cardsfolder/c/colossal_majesty.txt @@ -0,0 +1,6 @@ +Name:Colossal Majesty +ManaCost:2 G +Types:Enchantment +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | IsPresent$ Creature.YouCtrl+powerGE4 | PresentCompare$ GE1 | Execute$ TrigDraw | TriggerDescription$ At the beginning of your upkeep, if you control a creature with power 4 or greater, draw a card. +SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1 +Oracle:At the beginning of your upkeep, if you control a creature with power 4 or greater, draw a card. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/c/colossus_of_sardia.txt b/forge-gui/res/cardsfolder/c/colossus_of_sardia.txt index ae939766669..d1ffcbd10fd 100644 --- a/forge-gui/res/cardsfolder/c/colossus_of_sardia.txt +++ b/forge-gui/res/cardsfolder/c/colossus_of_sardia.txt @@ -6,4 +6,4 @@ K:Trample K:CARDNAME doesn't untap during your untap step. A:AB$ Untap | Cost$ 9 | ActivationPhases$ Upkeep | PlayerTurn$ True | SpellDescription$ Untap CARDNAME. Activate this ability only during your upkeep. SVar:Picture:http://www.wizards.com/global/images/magic/general/colossus_of_sardia.jpg -Oracle:Trample\nColossus of Sardia doesn't untap during your untap step.\n{9}: Untap Colossus of Sardia. Activate this ability only during your upkeep. +Oracle:Trample (This creature can deal excess combat damage to the player or planeswalker it's attacking.)\nColossus of Sardia doesn't untap during your untap step.\n{9}: Untap Colossus of Sardia. Activate this ability only during your upkeep. diff --git a/forge-gui/res/cardsfolder/c/combat_medic.txt b/forge-gui/res/cardsfolder/c/combat_medic.txt index 1d14b3eab85..46afae21133 100644 --- a/forge-gui/res/cardsfolder/c/combat_medic.txt +++ b/forge-gui/res/cardsfolder/c/combat_medic.txt @@ -2,6 +2,6 @@ Name:Combat Medic ManaCost:2 W Types:Creature Human Cleric Soldier PT:0/2 -A:AB$ PreventDamage | Cost$ 1 W | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ 1 W | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to any target this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/combat_medic.jpg -Oracle:{1}{W}: Prevent the next 1 damage that would be dealt to target creature or player this turn. +Oracle:{1}{W}: Prevent the next 1 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/c/combust.txt b/forge-gui/res/cardsfolder/c/combust.txt index e23a53aff89..625506c93b1 100644 --- a/forge-gui/res/cardsfolder/c/combust.txt +++ b/forge-gui/res/cardsfolder/c/combust.txt @@ -5,4 +5,4 @@ K:CARDNAME can't be countered. A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature.White,Creature.Blue | NumDmg$ 5 | NoPrevention$ True | TgtPrompt$ Select target white or blue creature. | SpellDescription$ CARDNAME deals 5 damage to target white or blue creature. The damage can't be prevented. SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/combust.jpg -Oracle:Combust can't be countered by spells or abilities.\nCombust deals 5 damage to target white or blue creature. The damage can't be prevented. +Oracle:This spell can't be countered.\nCombust deals 5 damage to target white or blue creature. The damage can't be prevented. diff --git a/forge-gui/res/cardsfolder/c/comet_storm.txt b/forge-gui/res/cardsfolder/c/comet_storm.txt index 293aabcdecc..599d811ad97 100644 --- a/forge-gui/res/cardsfolder/c/comet_storm.txt +++ b/forge-gui/res/cardsfolder/c/comet_storm.txt @@ -1,9 +1,9 @@ Name:Comet Storm ManaCost:X R R Types:Instant -A:SP$ DealDamage | Cost$ X R R | Announce$ Multikicker,X | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | TargetMin$ TargetsNum | TargetMax$ TargetsNum | References$ X,TargetsNum | SpellDescription$ CARDNAME deals X damage to each target creature and/or player. +A:SP$ DealDamage | Cost$ X R R | Announce$ Multikicker,X | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | TargetMin$ TargetsNum | TargetMax$ TargetsNum | References$ X,TargetsNum | SpellDescription$ CARDNAME deals X damage to each targets. K:Multikicker:1 SVar:TargetsNum:Count$TimesKicked/Plus.1 SVar:Picture:http://www.wizards.com/global/images/magic/general/comet_storm.jpg SVar:X:Count$xPaid -Oracle:Multikicker {1} (You may pay an additional {1} any number of times as you cast this spell.)\nChoose target creature or player, then choose another target creature or player for each time Comet Storm was kicked. Comet Storm deals X damage to each of them. +Oracle:Multikicker {1} (You may pay an additional {1} any number of times as you cast this spell.)\nChoose any target, then choose another target for each time this spell was kicked. Comet Storm deals X damage to each of them. diff --git a/forge-gui/res/cardsfolder/c/command_of_unsummoning.txt b/forge-gui/res/cardsfolder/c/command_of_unsummoning.txt index e114bdcf043..88a6aa62412 100644 --- a/forge-gui/res/cardsfolder/c/command_of_unsummoning.txt +++ b/forge-gui/res/cardsfolder/c/command_of_unsummoning.txt @@ -3,4 +3,4 @@ ManaCost:2 U Types:Instant A:SP$ ChangeZone | Cost$ 2 U | TargetMin$ 1 | TargetMax$ 2 | ValidTgts$ Creature.attacking | TgtPrompt$ Select target attacking creature | Origin$ Battlefield | Destination$ Hand | OpponentTurn$ True | ActivationPhases$ Declare Attackers | SpellDescription$ Cast CARDNAME only during the declare attackers step and only if you've been attacked this step. Return one or two target attacking creatures to their owner's hand. SVar:Picture:http://serv3.tcgimages.eu/img/cards/Portal/command_of_unsummoning.jpg -Oracle:Cast Command of Unsummoning only during the declare attackers step and only if you've been attacked this step.\nReturn one or two target attacking creatures to their owner's hand. +Oracle:Cast this spell only during the declare attackers step and only if you've been attacked this step.\nReturn one or two target attacking creatures to their owner's hand. diff --git a/forge-gui/res/cardsfolder/c/commandeer.txt b/forge-gui/res/cardsfolder/c/commandeer.txt index 13cc9ea0f48..81df52642c6 100644 --- a/forge-gui/res/cardsfolder/c/commandeer.txt +++ b/forge-gui/res/cardsfolder/c/commandeer.txt @@ -6,4 +6,4 @@ SVar:DBChooseTargets:DB$ ChangeTargets | Defined$ Targeted | Optional$ True SVar:AltCost:Cost$ ExileFromHand<2/Card.Blue> | Description$ You may exile two blue cards from your hand rather than pay CARDNAME's mana cost. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/commandeer.jpg -Oracle:You may exile two blue cards from your hand rather than pay Commandeer's mana cost.\nGain control of target noncreature spell. You may choose new targets for it. (If that spell is an artifact, enchantment, or planeswalker, the permanent enters the battlefield under your control.) +Oracle:You may exile two blue cards from your hand rather than pay this spell's mana cost.\nGain control of target noncreature spell. You may choose new targets for it. (If that spell is an artifact, enchantment, or planeswalker, the permanent enters the battlefield under your control.) diff --git a/forge-gui/res/cardsfolder/c/commencement_of_festivities.txt b/forge-gui/res/cardsfolder/c/commencement_of_festivities.txt index 5f52e0672a5..e4fee4ef9b6 100644 --- a/forge-gui/res/cardsfolder/c/commencement_of_festivities.txt +++ b/forge-gui/res/cardsfolder/c/commencement_of_festivities.txt @@ -4,4 +4,4 @@ Types:Instant A:SP$ Effect | Cost$ 1 G | Name$ Commencement of Festivities Effect | ReplacementEffects$ RPrevent | AILogic$ Fog | SpellDescription$ Prevent all combat damage that would be dealt to players this turn. SVar:RPrevent:Event$ DamageDone | Prevent$ True | IsCombat$ True | ActiveZones$ Command | ValidTarget$ Player | Description$ Prevent all combat damage that would be dealt to players this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/commencement_of_festivities.jpg -Oracle:Prevent all combat damage that would be dealt to players this turn. +Oracle:Prevent all combat damage that would be dealt to players this turn. diff --git a/forge-gui/res/cardsfolder/c/concerted_effort.txt b/forge-gui/res/cardsfolder/c/concerted_effort.txt index f061dd660e1..b4ff186faf4 100644 --- a/forge-gui/res/cardsfolder/c/concerted_effort.txt +++ b/forge-gui/res/cardsfolder/c/concerted_effort.txt @@ -1,7 +1,7 @@ Name:Concerted Effort ManaCost:2 W W Types:Enchantment -T:Mode$ Phase | Phase$ Upkeep | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ At the beginning of each upkeep, all creatures you control gain flying until end of turn if a creature you control has flying. The same is true for fear, first strike, double strike, landwalk, protection, trample, and vigilance. +T:Mode$ Phase | Phase$ Upkeep | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ At the beginning of each upkeep, creatures you control gain flying until end of turn if a creature you control has flying. The same is true for fear, first strike, double strike, landwalk, protection, trample, and vigilance. SVar:TrigPump:DB$ PumpAll | ValidCards$ Creature.YouCtrl | KW$ Flying & Fear & First Strike & Double Strike & Landwalk & Protection & Trample & Vigilance | SharedKeywordsZone$ Battlefield | SharedRestrictions$ Creature.YouCtrl SVar:Picture:http://www.wizards.com/global/images/magic/general/concerted_effort.jpg -Oracle:At the beginning of each upkeep, all creatures you control gain flying until end of turn if a creature you control has flying. The same is true for fear, first strike, double strike, landwalk, protection, trample, and vigilance. +Oracle:At the beginning of each upkeep, creatures you control gain flying until end of turn if a creature you control has flying. The same is true for fear, first strike, double strike, landwalk, protection, trample, and vigilance. diff --git a/forge-gui/res/cardsfolder/c/concussive_bolt.txt b/forge-gui/res/cardsfolder/c/concussive_bolt.txt index 95220ff4d8e..2bccd588ef4 100644 --- a/forge-gui/res/cardsfolder/c/concussive_bolt.txt +++ b/forge-gui/res/cardsfolder/c/concussive_bolt.txt @@ -1,7 +1,7 @@ Name:Concussive Bolt ManaCost:3 R R Types:Sorcery -A:SP$ DealDamage | Cost$ 3 R R | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 4 | SubAbility$ DBPump | SpellDescription$ CARDNAME deals 4 damage to target player. Metalcraft — If you control three or more artifacts, creatures that player controls can't block this turn. -SVar:DBPump:DB$ PumpAll | Defined$ Targeted | ValidCards$ Creature | ConditionPresent$ Artifact.YouCtrl | ConditionCompare$ GE3 | KW$ HIDDEN CARDNAME can't block. +A:SP$ DealDamage | Cost$ 3 R R | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or Planeswalker | NumDmg$ 4 | SubAbility$ DBPump | SpellDescription$ CARDNAME deals 4 damage to target player or planeswalker. Metalcraft — If you control three or more artifacts, creatures controlled by that player or by that planeswalker's controller can't block this turn. +SVar:DBPump:DB$ PumpAll | Defined$ TargetedOrController | ValidCards$ Creature | Condition$ Metalcraft | KW$ HIDDEN CARDNAME can't block. SVar:Picture:http://www.wizards.com/global/images/magic/general/concussive_bolt.jpg -Oracle:Concussive Bolt deals 4 damage to target player.\nMetalcraft — If you control three or more artifacts, creatures that player controls can't block this turn. +Oracle:Concussive Bolt deals 4 damage to target player or planeswalker.\nMetalcraft — If you control three or more artifacts, creatures controlled by that player or by that planeswalker's controller can't block this turn. diff --git a/forge-gui/res/cardsfolder/c/condescend.txt b/forge-gui/res/cardsfolder/c/condescend.txt index c14561ac338..ad0a959fd7f 100644 --- a/forge-gui/res/cardsfolder/c/condescend.txt +++ b/forge-gui/res/cardsfolder/c/condescend.txt @@ -5,4 +5,4 @@ A:SP$ Counter | Cost$ X U | TargetType$ Spell | TgtPrompt$ Select target spell | SVar:DBScry:DB$Scry | ScryNum$ 2 SVar:X:Count$xPaid SVar:Picture:http://www.wizards.com/global/images/magic/general/condescend.jpg -Oracle:Counter target spell unless its controller pays {X}. Scry 2. +Oracle:Counter target spell unless its controller pays {X}. Scry 2. (Look at the top two cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) diff --git a/forge-gui/res/cardsfolder/c/conduit_of_ruin.txt b/forge-gui/res/cardsfolder/c/conduit_of_ruin.txt index d706f86fc5b..fbfb44bad4d 100644 --- a/forge-gui/res/cardsfolder/c/conduit_of_ruin.txt +++ b/forge-gui/res/cardsfolder/c/conduit_of_ruin.txt @@ -2,9 +2,9 @@ Name:Conduit of Ruin ManaCost:6 Types:Creature Eldrazi PT:5/5 -T:Mode$ SpellCast | ValidCard$ Card.Self | Execute$ TrigSearch | OptionalDecider$ You | TriggerDescription$ When you cast CARDNAME, you may search your library for a colorless creature card with converted mana cost 7 or higher and reveal it. If you do, shuffle your library, then put that card on top of it. +T:Mode$ SpellCast | ValidCard$ Card.Self | Execute$ TrigSearch | OptionalDecider$ You | TriggerDescription$ When you cast CARDNAME, you may search your library for a colorless creature card with converted mana cost 7 or greater, reveal it, then shuffle your library and put that card on top of it. SVar:TrigSearch:DB$ ChangeZone | Origin$ Library | Destination$ Library | LibraryPosition$ 0 | ChangeType$ Creature.Colorless+cmcGE7 | ChangeNum$ 1 | ShuffleNonMandatory$ True S:Mode$ ReduceCost | EffectZone$ Battlefield | ValidCard$ Card.Creature | Activator$ You | Type$ Spell | OnlyFirstSpell$ True | Amount$ 2 | Description$ The first creature spell you cast each turn costs {2} less to cast. SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/conduit_of_ruin.jpg -Oracle:When you cast Conduit of Ruin, you may search your library for a colorless creature card with converted mana cost 7 or higher and reveal it. If you do, shuffle your library, then put that card on top of it.\nThe first creature spell you cast each turn costs {2} less to cast. \ No newline at end of file +Oracle:When you cast this spell, you may search your library for a colorless creature card with converted mana cost 7 or greater, reveal it, then shuffle your library and put that card on top of it.\nThe first creature spell you cast each turn costs {2} less to cast. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/c/cone_of_flame.txt b/forge-gui/res/cardsfolder/c/cone_of_flame.txt index 145509c6c32..8447aeb0032 100644 --- a/forge-gui/res/cardsfolder/c/cone_of_flame.txt +++ b/forge-gui/res/cardsfolder/c/cone_of_flame.txt @@ -1,9 +1,9 @@ Name:Cone of Flame ManaCost:3 R R Types:Sorcery -A:SP$ DealDamage | Cost$ 3 R R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to deal 1 damage to | NumDmg$ 1 | DamageMap$ True | SubAbility$ DBDamageTwo | SpellDescription$ CARDNAME deals 1 damage to target creature or player, 2 damage to another target creature or player, and 3 damage to a third target creature or player. -SVar:DBDamageTwo:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select another target creature or player to deal 2 damage to | NumDmg$ 2 | TargetUnique$ True | SubAbility$ DBDamageThree -SVar:DBDamageThree:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select another target creature or player to deal 3 damage to | NumDmg$ 3 |TargetUnique$ True | SubAbility$ DBDamageResolve +A:SP$ DealDamage | Cost$ 3 R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to deal 1 damage to | NumDmg$ 1 | DamageMap$ True | SubAbility$ DBDamageTwo | SpellDescription$ CARDNAME deals 1 damage to any target, 2 damage to another target, and 3 damage to a third target. +SVar:DBDamageTwo:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select another target to deal 2 damage to | NumDmg$ 2 | TargetUnique$ True | SubAbility$ DBDamageThree +SVar:DBDamageThree:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select another target to deal 3 damage to | NumDmg$ 3 |TargetUnique$ True | SubAbility$ DBDamageResolve SVar:DBDamageResolve:DB$ DamageResolve SVar:Picture:http://www.wizards.com/global/images/magic/general/cone_of_flame.jpg -Oracle:Cone of Flame deals 1 damage to target creature or player, 2 damage to another target creature or player, and 3 damage to a third target creature or player. +Oracle:Cone of Flame deals 1 damage to any target, 2 damage to another target, and 3 damage to a third target. diff --git a/forge-gui/res/cardsfolder/c/confidence_from_strength.txt b/forge-gui/res/cardsfolder/c/confidence_from_strength.txt new file mode 100644 index 00000000000..332ffb88e16 --- /dev/null +++ b/forge-gui/res/cardsfolder/c/confidence_from_strength.txt @@ -0,0 +1,5 @@ +Name:Confidence from Strength +ManaCost:2 G +Types:Sorcery +A:SP$ Pump | Cost$ 2 G | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +4 | NumDef$ +4 | KW$ Trample | SpellDescription$ Target creature gets +4/+4 and gains trample until end of turn. +Oracle:Target creature gets +4/+4 and gains trample until end of turn. (It can deal excess combat damage to defending player or planeswalker while attacking.) diff --git a/forge-gui/res/cardsfolder/c/conflagrate.txt b/forge-gui/res/cardsfolder/c/conflagrate.txt index 1760c968c10..cb17cbd820e 100644 --- a/forge-gui/res/cardsfolder/c/conflagrate.txt +++ b/forge-gui/res/cardsfolder/c/conflagrate.txt @@ -1,12 +1,12 @@ Name:Conflagrate ManaCost:X X R Types:Sorcery -A:SP$ DealDamage | Cost$ X X R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature and/or player to distribute damage to | NumDmg$ X | TargetMin$ Min | TargetMax$ MaxTgts | DividedAsYouChoose$ X | References$ X,Min,MaxTgts | SpellDescription$ CARDNAME deals X damage divided as you choose among any number of target creatures and/or players. +A:SP$ DealDamage | Cost$ X X R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to distribute damage to | NumDmg$ X | TargetMin$ Min | TargetMax$ MaxTgts | DividedAsYouChoose$ X | References$ X,Min,MaxTgts | SpellDescription$ CARDNAME deals X damage divided as you choose among any number of targets. SVar:MaxTgts:PlayerCountPlayers$Amount/Plus.NumCreatures -SVar:NumCreatures:Count$Valid Creature +SVar:NumCreatures:Count$Valid Creature,Planeswalker SVar:Min:SVar$X/LimitMax.1 SVar:X:Count$xPaid #X Will get overwritten by Announce -K:Flashback R R Discard +K:Flashback:R R Discard SVar:Picture:http://www.wizards.com/global/images/magic/general/conflagrate.jpg -Oracle:Conflagrate deals X damage divided as you choose among any number of target creatures and/or players.\nFlashback—{R}{R}, Discard X cards. (You may cast this card from your graveyard for its flashback cost. Then exile it.) +Oracle:Conflagrate deals X damage divided as you choose among any number of targets.\nFlashback—{R}{R}, Discard X cards. (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/c/confound.txt b/forge-gui/res/cardsfolder/c/confound.txt index b42c6f4d4b5..d98123d56a1 100644 --- a/forge-gui/res/cardsfolder/c/confound.txt +++ b/forge-gui/res/cardsfolder/c/confound.txt @@ -1,7 +1,7 @@ Name:Confound ManaCost:1 U Types:Instant -A:SP$ Counter | Cost$ 1 U | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Card | TargetValidTargeting$ Creature | SubAbility$ DBDraw | SpellDescription$ Counter target spell that targets one or more creatures. Draw a card. +A:SP$ Counter | Cost$ 1 U | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Card | TargetValidTargeting$ Creature | SubAbility$ DBDraw | SpellDescription$ Counter target spell that targets a creature. Draw a card. SVar:DBDraw:DB$Draw | NumCards$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/confound.jpg -Oracle:Counter target spell that targets one or more creatures.\nDraw a card. +Oracle:Counter target spell that targets a creature.\nDraw a card. diff --git a/forge-gui/res/cardsfolder/c/conquerors_pledge.txt b/forge-gui/res/cardsfolder/c/conquerors_pledge.txt index e8851d7347f..62c731fcdb6 100644 --- a/forge-gui/res/cardsfolder/c/conquerors_pledge.txt +++ b/forge-gui/res/cardsfolder/c/conquerors_pledge.txt @@ -5,4 +5,4 @@ K:Kicker:6 A:SP$ Token | Cost$ 2 W W W | TokenAmount$ WasKicked | References$ WasKicked | TokenName$ Kor Soldier | TokenTypes$ Creature,Kor,Soldier | TokenOwner$ You | TokenColors$ White | TokenPower$ 1 | TokenToughness$ 1 | SpellDescription$ Create six 1/1 white Kor Soldier creature tokens. If CARDNAME was kicked, create twelve of those tokens instead. SVar:WasKicked:Count$Kicked.12.6 SVar:Picture:http://www.wizards.com/global/images/magic/general/conquerors_pledge.jpg -Oracle:Kicker {6} (You may pay an additional {6} as you cast this spell.)\nCreate six 1/1 white Kor Soldier creature tokens. If Conqueror's Pledge was kicked, create twelve of those tokens instead. +Oracle:Kicker {6} (You may pay an additional {6} as you cast this spell.)\nCreate six 1/1 white Kor Soldier creature tokens. If this spell was kicked, create twelve of those tokens instead. diff --git a/forge-gui/res/cardsfolder/c/consign_to_dust.txt b/forge-gui/res/cardsfolder/c/consign_to_dust.txt index 55991a955bf..788107a95d3 100644 --- a/forge-gui/res/cardsfolder/c/consign_to_dust.txt +++ b/forge-gui/res/cardsfolder/c/consign_to_dust.txt @@ -5,4 +5,4 @@ K:Strive:2 G A:SP$ Destroy | Cost$ 2 G | ValidTgts$ Artifact,Enchantment | TgtPrompt$ Select target artifact or enchantment | TargetMin$ 0 | TargetMax$ MaxTargets | References$ MaxTargets | SpellDescription$ Destroy any number of target artifacts and/or enchantments. SVar:MaxTargets:Count$Valid Artifact,Enchantment SVar:Picture:http://www.wizards.com/global/images/magic/general/consign_to_dust.jpg -Oracle:Strive — Consign to Dust costs {2}{G} more to cast for each target beyond the first.\nDestroy any number of target artifacts and/or enchantments. +Oracle:Strive — This spell costs {2}{G} more to cast for each target beyond the first.\nDestroy any number of target artifacts and/or enchantments. diff --git a/forge-gui/res/cardsfolder/c/constant_mists.txt b/forge-gui/res/cardsfolder/c/constant_mists.txt index 89c9dde63f1..85219fb6fda 100644 --- a/forge-gui/res/cardsfolder/c/constant_mists.txt +++ b/forge-gui/res/cardsfolder/c/constant_mists.txt @@ -4,4 +4,4 @@ Types:Instant A:SP$ Fog | Cost$ 1 G | SpellDescription$ Prevent all combat damage that would be dealt this turn. K:Buyback:Sac<1/Land> SVar:Picture:http://www.wizards.com/global/images/magic/general/constant_mists.jpg -Oracle:Buyback-Sacrifice a land. (You may sacrifice a land in addition to any other costs as you cast this spell. If you do, put this card into your hand as it resolves.)\nPrevent all combat damage that would be dealt this turn. +Oracle:Buyback—Sacrifice a land. (You may sacrifice a land in addition to any other costs as you cast this spell. If you do, put this card into your hand as it resolves.)\nPrevent all combat damage that would be dealt this turn. diff --git a/forge-gui/res/cardsfolder/c/consulate_turret.txt b/forge-gui/res/cardsfolder/c/consulate_turret.txt index 3f53f84d490..5ee544139e4 100644 --- a/forge-gui/res/cardsfolder/c/consulate_turret.txt +++ b/forge-gui/res/cardsfolder/c/consulate_turret.txt @@ -2,6 +2,6 @@ Name:Consulate Turret ManaCost:3 Types:Artifact A:AB$ PutCounter | Cost$ T | Defined$ You | CounterType$ ENERGY | CounterNum$ 1 | AILogic$ AlwaysAtOppEOT | SpellDescription$ You get {E} (an energy counter). -A:AB$ DealDamage | Cost$ T PayEnergy<3> | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target player. +A:AB$ DealDamage | Cost$ T PayEnergy<3> | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target player or planeswalker. SVar:Picture:http://www.wizards.com/global/images/magic/general/consulate_turret.jpg -Oracle:{T}: You get {E} (an energy counter).\n{T}, Pay {E}{E}{E}: Consulate Turret deals 2 damage to target player. \ No newline at end of file +Oracle:{T}: You get {E} (an energy counter).\n{T}, Pay {E}{E}{E}: Consulate Turret deals 2 damage to target player or planeswalker. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/c/consume_spirit.txt b/forge-gui/res/cardsfolder/c/consume_spirit.txt index 98692166a00..475cb9d45ea 100644 --- a/forge-gui/res/cardsfolder/c/consume_spirit.txt +++ b/forge-gui/res/cardsfolder/c/consume_spirit.txt @@ -1,8 +1,8 @@ Name:Consume Spirit ManaCost:X 1 B Types:Sorcery -A:SP$DealDamage | Cost$ X 1 B | XColor$ B | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | SubAbility$ DBGainLife | References$ X | SpellDescription$ Spend only black mana on X. Consume Spirit deals X damage to target creature or player and you gain X life. +A:SP$DealDamage | Cost$ X 1 B | XColor$ B | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | SubAbility$ DBGainLife | References$ X | SpellDescription$ Spend only black mana on X. Consume Spirit deals X damage to any target and you gain X life. SVar:DBGainLife:DB$GainLife | Defined$ You | LifeAmount$ X | References$ X SVar:X:Count$xPaid SVar:Picture:http://www.wizards.com/global/images/magic/general/consume_spirit.jpg -Oracle:Spend only black mana on X.\nConsume Spirit deals X damage to target creature or player and you gain X life. +Oracle:Spend only black mana on X.\nConsume Spirit deals X damage to any target and you gain X life. diff --git a/forge-gui/res/cardsfolder/c/consuming_sinkhole.txt b/forge-gui/res/cardsfolder/c/consuming_sinkhole.txt index 01819bfbec4..48b0ca369b7 100644 --- a/forge-gui/res/cardsfolder/c/consuming_sinkhole.txt +++ b/forge-gui/res/cardsfolder/c/consuming_sinkhole.txt @@ -4,6 +4,6 @@ Types:Instant K:Devoid A:SP$ Charm | Cost$ 3 R | Choices$ ExileLandCreature,DealDmg | CharmNum$ 1 SVar:ExileLandCreature:DB$ ChangeZone | ValidTgts$ Creature.Land | TgtPrompt$ Choose target land creature | Origin$ Battlefield | Destination$ Exile | SpellDescription$ Exile target land creature. -SVar:DealDmg:DB$ DealDamage | ValidTgts$ Player | AILogic$ ChoiceBurn | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target player. +SVar:DealDmg:DB$ DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Choose player or planeswalker | AILogic$ ChoiceBurn | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target player or planeswalker. SVar:Picture:http://www.wizards.com/global/images/magic/general/consuming_sinkhole.jpg -Oracle:Devoid (This card has no color.)\nChoose one —\n• Exile target land creature.\n• Consuming Sinkhole deals 4 damage to target player. +Oracle:Devoid (This card has no color.)\nChoose one —\n• Exile target land creature.\n• Consuming Sinkhole deals 4 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/c/contagion.txt b/forge-gui/res/cardsfolder/c/contagion.txt index 9d622f1f173..320d8d10836 100644 --- a/forge-gui/res/cardsfolder/c/contagion.txt +++ b/forge-gui/res/cardsfolder/c/contagion.txt @@ -5,4 +5,4 @@ A:SP$ PutCounter | Cost$ 3 B B | ValidTgts$ Creature | TgtPrompt$ Select target SVar:AltCost:Cost$ PayLife<1> ExileFromHand<1/Card.Black> | Description$ You may pay 1 life and exile a black card from your hand rather than pay Contagion's mana cost. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/contagion.jpg -Oracle:You may pay 1 life and exile a black card from your hand rather than pay Contagion's mana cost.\nDistribute two -2/-1 counters among one or two target creatures. +Oracle:You may pay 1 life and exile a black card from your hand rather than pay this spell's mana cost.\nDistribute two -2/-1 counters among one or two target creatures. diff --git a/forge-gui/res/cardsfolder/c/contaminated_ground.txt b/forge-gui/res/cardsfolder/c/contaminated_ground.txt index 7a3410d5d8d..1d0189ebb8a 100644 --- a/forge-gui/res/cardsfolder/c/contaminated_ground.txt +++ b/forge-gui/res/cardsfolder/c/contaminated_ground.txt @@ -3,7 +3,7 @@ ManaCost:1 B Types:Enchantment Aura K:Enchant land A:SP$ Attach | Cost$ 1 B | ValidTgts$ Land | AILogic$ ChangeType -S:Mode$ Continuous | Affected$ Card.EnchantedBy | AddType$ Swamp | RemoveSubTypes$ True | RemoveAllAbilities$ True | Description$ Enchanted land is a Swamp. +S:Mode$ Continuous | Affected$ Card.EnchantedBy | AddType$ Swamp | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True | Description$ Enchanted land is a Swamp. T:Mode$ Taps | ValidCard$ Card.AttachedBy | TriggerZones$ Battlefield | Execute$ TrigLose | TriggerDescription$ Whenever enchanted land becomes tapped, its controller loses 2 life. SVar:TrigLose:DB$LoseLife | Defined$ TriggeredCardController | LifeAmount$ 2 SVar:Picture:http://www.wizards.com/global/images/magic/general/contaminated_ground.jpg diff --git a/forge-gui/res/cardsfolder/c/contingency_plan.txt b/forge-gui/res/cardsfolder/c/contingency_plan.txt index 9c1b0adc354..bea3d6cad22 100644 --- a/forge-gui/res/cardsfolder/c/contingency_plan.txt +++ b/forge-gui/res/cardsfolder/c/contingency_plan.txt @@ -4,4 +4,4 @@ Types:Sorcery A:SP$ Dig | Cost$ 1 U | DigNum$ 5 | AnyNumber$ True | DestinationZone$ Graveyard | LibraryPosition2$ 0 | SpellDescription$ Look at the top five cards of your library. Put any number of them into your graveyard and the rest back on top of your library in any order. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/contingency_plan.jpg -Oracle:Look at the top five cards of your library. Put any number of them into your graveyard and the rest back on top of your library in any order. +Oracle:Look at the top five cards of your library. Put any number of them into your graveyard and the rest back on top of your library in any order. diff --git a/forge-gui/res/cardsfolder/c/conversion.txt b/forge-gui/res/cardsfolder/c/conversion.txt index ee053732125..1ae932bceaf 100644 --- a/forge-gui/res/cardsfolder/c/conversion.txt +++ b/forge-gui/res/cardsfolder/c/conversion.txt @@ -2,7 +2,7 @@ Name:Conversion ManaCost:2 W W Types:Enchantment K:UpkeepCost:W W -S:Mode$ Continuous | Affected$ Mountain | AddType$ Plains | RemoveSubTypes$ True | RemoveAllAbilities$ True | Description$ All Mountains are Plains. +S:Mode$ Continuous | Affected$ Mountain | AddType$ Plains | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True | Description$ All Mountains are Plains. SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/conversion.jpg Oracle:At the beginning of your upkeep, sacrifice Conversion unless you pay {W}{W}.\nAll Mountains are Plains. diff --git a/forge-gui/res/cardsfolder/c/convincing_mirage.txt b/forge-gui/res/cardsfolder/c/convincing_mirage.txt index 0166192e03d..75f1c3a335e 100644 --- a/forge-gui/res/cardsfolder/c/convincing_mirage.txt +++ b/forge-gui/res/cardsfolder/c/convincing_mirage.txt @@ -5,7 +5,7 @@ K:Enchant land A:SP$ Attach | Cost$ 1 U | ValidTgts$ Land | AILogic$ ChangeType K:ETBReplacement:Other:DBChooseBasic SVar:DBChooseBasic:DB$ ChooseType | Type$ Basic Land | SpellDescription$ As CARDNAME enters the battlefield, choose a basic land type. -S:Mode$ Continuous | Affected$ Card.EnchantedBy | AddType$ ChosenType | RemoveSubTypes$ True | RemoveAllAbilities$ True | Description$ Enchanted land is the chosen type. +S:Mode$ Continuous | Affected$ Card.EnchantedBy | AddType$ ChosenType | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True | Description$ Enchanted land is the chosen type. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/convincing_mirage.jpg Oracle:Enchant land\nAs Convincing Mirage enters the battlefield, choose a basic land type.\nEnchanted land is the chosen type. diff --git a/forge-gui/res/cardsfolder/c/convulsing_licid.txt b/forge-gui/res/cardsfolder/c/convulsing_licid.txt index c9a6d8efce4..9506bc828bc 100644 --- a/forge-gui/res/cardsfolder/c/convulsing_licid.txt +++ b/forge-gui/res/cardsfolder/c/convulsing_licid.txt @@ -2,7 +2,7 @@ Name:Convulsing Licid ManaCost:2 R Types:Creature Licid PT:2/2 -A:AB$ Animate | Cost$ R T | Defined$ Self | RemoveThisAbility$ True | Permanent$ True | RevertCost$ R | Keywords$ Enchant creature | Abilities$ SPAttach | Types$ Enchantment,Aura | RemoveCardTypes$ True | RemoveSubTypes$ True | SubAbility$ DBAttach | SpellDescription$ CARDNAME loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {R} to end this effect. +A:AB$ Animate | Cost$ R T | Defined$ Self | RemoveThisAbility$ True | Permanent$ True | RevertCost$ R | Keywords$ Enchant creature | Abilities$ SPAttach | Types$ Enchantment,Aura | RemoveCardTypes$ True | RemoveEnchantmentTypes$ True | SubAbility$ DBAttach | SpellDescription$ CARDNAME loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {R} to end this effect. SVar:DBAttach:DB$ Attach | ValidTgts$ Creature | AILogic$ Curse SVar:SPAttach:SP$ Attach | Cost$ 0 | ValidTgts$ Creature S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddHiddenKeyword$ CARDNAME can't block. | Description$ Enchanted creature can't block. diff --git a/forge-gui/res/cardsfolder/c/copy_artifact.txt b/forge-gui/res/cardsfolder/c/copy_artifact.txt index 40bbca8c51b..0fc73efaa1c 100644 --- a/forge-gui/res/cardsfolder/c/copy_artifact.txt +++ b/forge-gui/res/cardsfolder/c/copy_artifact.txt @@ -1,8 +1,7 @@ Name:Copy Artifact ManaCost:1 U Types:Enchantment -K:ETBReplacement:Copy:ChooseArtifact:Optional -SVar:ChooseArtifact:DB$ ChooseCard | Defined$ You | Amount$ 1 | Choices$ Artifact.Other | SubAbility$ DBCopy | RememberChosen$ True | AILogic$ Clone | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of any artifact on the battlefield, except it's an enchantment in addition to its other types. -SVar:DBCopy:DB$ Clone | Defined$ Remembered | AddTypes$ Enchantment +K:ETBReplacement:Copy:DBCopy:Optional +SVar:DBCopy:DB$ Clone | Choices$ Artifact.Other | AddTypes$ Enchantment | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of any artifact on the battlefield, except it's an enchantment in addition to its other types. SVar:Picture:http://www.wizards.com/global/images/magic/general/copy_artifact.jpg Oracle:You may have Copy Artifact enter the battlefield as a copy of any artifact on the battlefield, except it's an enchantment in addition to its other types. diff --git a/forge-gui/res/cardsfolder/c/copy_enchantment.txt b/forge-gui/res/cardsfolder/c/copy_enchantment.txt index 494f5b269e5..50d5e2e4919 100644 --- a/forge-gui/res/cardsfolder/c/copy_enchantment.txt +++ b/forge-gui/res/cardsfolder/c/copy_enchantment.txt @@ -1,9 +1,8 @@ Name:Copy Enchantment ManaCost:2 U Types:Enchantment -K:ETBReplacement:Copy:ChooseEnchantment:Optional -SVar:ChooseEnchantment:DB$ ChooseCard | Defined$ You | Amount$ 1 | Choices$ Enchantment.Other | SubAbility$ DBCopy | RememberChosen$ True | AILogic$ Clone | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of any enchantment on the battlefield. -SVar:DBCopy:DB$ Clone | Defined$ Remembered +K:ETBReplacement:Copy:DBCopy:Optional +SVar:DBCopy:DB$ Clone | Choices$ Enchantment.Other | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of any enchantment on the battlefield. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/copy_enchantment.jpg Oracle:You may have Copy Enchantment enter the battlefield as a copy of any enchantment on the battlefield. diff --git a/forge-gui/res/cardsfolder/c/corpse_lunge.txt b/forge-gui/res/cardsfolder/c/corpse_lunge.txt index 38238277449..05eda004e38 100644 --- a/forge-gui/res/cardsfolder/c/corpse_lunge.txt +++ b/forge-gui/res/cardsfolder/c/corpse_lunge.txt @@ -5,4 +5,4 @@ A:SP$ DealDamage | Cost$ 2 B ExileFromGrave<1/Creature> | NumDmg$ X | ValidTgts$ SVar:X:Exiled$CardPower SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/corpse_lunge.jpg -Oracle:As an additional cost to cast Corpse Lunge, exile a creature card from your graveyard.\nCorpse Lunge deals damage equal to the exiled card's power to target creature. +Oracle:As an additional cost to cast this spell, exile a creature card from your graveyard.\nCorpse Lunge deals damage equal to the exiled card's power to target creature. diff --git a/forge-gui/res/cardsfolder/c/corrosive_gale.txt b/forge-gui/res/cardsfolder/c/corrosive_gale.txt index 76f4fe06ad0..06bd5cb19e0 100644 --- a/forge-gui/res/cardsfolder/c/corrosive_gale.txt +++ b/forge-gui/res/cardsfolder/c/corrosive_gale.txt @@ -4,4 +4,4 @@ Types:Sorcery A:SP$ DamageAll | Cost$ X PG | ValidCards$ Creature.withFlying | ValidDescription$ each creature with flying. | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to each creature with flying. SVar:X:Count$xPaid SVar:Picture:http://www.wizards.com/global/images/magic/general/corrosive_gale.jpg -Oracle:({P/G} can be paid with either {G} or 2 life.)\nCorrosive Gale deals X damage to each creature with flying. +Oracle:({G/P} can be paid with either {G} or 2 life.)\nCorrosive Gale deals X damage to each creature with flying. diff --git a/forge-gui/res/cardsfolder/c/corrupt.txt b/forge-gui/res/cardsfolder/c/corrupt.txt index 8fbb692588f..93d92bf9fa7 100644 --- a/forge-gui/res/cardsfolder/c/corrupt.txt +++ b/forge-gui/res/cardsfolder/c/corrupt.txt @@ -1,9 +1,9 @@ Name:Corrupt ManaCost:5 B Types:Sorcery -A:SP$ DealDamage | Cost$ 5 B | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | SubAbility$ DBGainLife | References$ X | SpellDescription$ CARDNAME deals damage to target creature or player equal to the number of Swamps you control. You gain life equal to the damage dealt this way. +A:SP$ DealDamage | Cost$ 5 B | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | SubAbility$ DBGainLife | References$ X | SpellDescription$ CARDNAME deals damage to any target equal to the number of Swamps you control. You gain life equal to the damage dealt this way. SVar:DBGainLife:DB$GainLife | Defined$ You | LifeAmount$ Y | References$ Y | StackDescription$ You gain life equal to the damage dealt this way. SVar:X:Count$TypeYouCtrl.Swamp SVar:Y:Count$TotalDamageDoneByThisTurn SVar:Picture:http://www.wizards.com/global/images/magic/general/corrupt.jpg -Oracle:Corrupt deals damage to target creature or player equal to the number of Swamps you control. You gain life equal to the damage dealt this way. +Oracle:Corrupt deals damage to any target equal to the number of Swamps you control. You gain life equal to the damage dealt this way. diff --git a/forge-gui/res/cardsfolder/c/corrupting_licid.txt b/forge-gui/res/cardsfolder/c/corrupting_licid.txt index 6b51baaa81d..0d9576a8e7a 100644 --- a/forge-gui/res/cardsfolder/c/corrupting_licid.txt +++ b/forge-gui/res/cardsfolder/c/corrupting_licid.txt @@ -2,7 +2,7 @@ Name:Corrupting Licid ManaCost:2 B Types:Creature Licid PT:2/2 -A:AB$ Animate | Cost$ B T | Defined$ Self | RemoveThisAbility$ True | Permanent$ True | RevertCost$ B | Keywords$ Enchant creature | Abilities$ SPAttach | Types$ Enchantment,Aura | RemoveCardTypes$ True | RemoveSubTypes$ True | SubAbility$ DBAttach | SpellDescription$ CARDNAME loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {B} to end this effect. +A:AB$ Animate | Cost$ B T | Defined$ Self | RemoveThisAbility$ True | Permanent$ True | RevertCost$ B | Keywords$ Enchant creature | Abilities$ SPAttach | Types$ Enchantment,Aura | RemoveCardTypes$ True | RemoveEnchantmentTypes$ True | SubAbility$ DBAttach | SpellDescription$ CARDNAME loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {B} to end this effect. SVar:DBAttach:DB$ Attach | ValidTgts$ Creature | AILogic$ Pump SVar:SPAttach:SP$ Attach | Cost$ 0 | ValidTgts$ Creature S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Fear | Description$ Enchanted creature has fear. (It can't be blocked except by artifact creatures and/or black creatures.) diff --git a/forge-gui/res/cardsfolder/c/cosis_ravager.txt b/forge-gui/res/cardsfolder/c/cosis_ravager.txt index 30968b94505..bce9b3c5a6b 100644 --- a/forge-gui/res/cardsfolder/c/cosis_ravager.txt +++ b/forge-gui/res/cardsfolder/c/cosis_ravager.txt @@ -2,7 +2,7 @@ Name:Cosi's Ravager ManaCost:3 R Types:Creature Elemental PT:2/2 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Land.YouCtrl | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigDealDamage | TriggerDescription$ Landfall — Whenever a land enters the battlefield under your control, you may have CARDNAME deal 1 damage to target player. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 1 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Land.YouCtrl | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigDealDamage | TriggerDescription$ Landfall — Whenever a land enters the battlefield under your control, you may have CARDNAME deal 1 damage to target player or planeswalker. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/cosis_ravager.jpg -Oracle:Landfall — Whenever a land enters the battlefield under your control, you may have Cosi's Ravager deal 1 damage to target player. +Oracle:Landfall — Whenever a land enters the battlefield under your control, you may have Cosi's Ravager deal 1 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/c/costly_plunder.txt b/forge-gui/res/cardsfolder/c/costly_plunder.txt index 90119f8ac8d..429d3dd60a2 100644 --- a/forge-gui/res/cardsfolder/c/costly_plunder.txt +++ b/forge-gui/res/cardsfolder/c/costly_plunder.txt @@ -3,4 +3,4 @@ ManaCost:1 B Types:Instant A:SP$ Draw | Cost$ 1 B Sac<1/Artifact;Creature/artifact or creature> | NumCards$ 2 | SpellDescription$ Draw two cards. SVar:Picture:http://www.wizards.com/global/images/magic/general/costly_plunder.jpg -Oracle:As an additional cost to cast Costly Plunder, sacrifice an artifact or creature.\nDraw two cards. \ No newline at end of file +Oracle:As an additional cost to cast this spell, sacrifice an artifact or creature.\nDraw two cards. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/c/counterflux.txt b/forge-gui/res/cardsfolder/c/counterflux.txt index d47f99d0790..a766bc8f789 100644 --- a/forge-gui/res/cardsfolder/c/counterflux.txt +++ b/forge-gui/res/cardsfolder/c/counterflux.txt @@ -5,4 +5,4 @@ K:CARDNAME can't be countered. A:SP$ Counter | Cost$ U U R | TargetType$ Spell | TgtPrompt$ Select target spell you don't control. | ValidTgts$ Card.YouDontCtrl | SpellDescription$ Counter target spell you don't control. A:SP$ Counter | Cost$ 1 U U R | AllType$ Spell | AllValid$ Card.YouDontCtrl | PrecostDesc$ Overload | CostDesc$ {1}{U}{U}{R} | NonBasicSpell$ True | 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$ Counter each spell you don't control. SVar:Picture:http://www.wizards.com/global/images/magic/general/counterflux.jpg -Oracle:Counterflux can't be countered by spells or abilities.\nCounter target spell you don't control.\nOverload {1}{U}{U}{R} (You may cast this spell for its overload cost. If you do, change its text by replacing all instances of "target" with "each.") +Oracle:This spell can't be countered.\nCounter target spell you don't control.\nOverload {1}{U}{U}{R} (You may cast this spell for its overload cost. If you do, change its text by replacing all instances of "target" with "each.") diff --git a/forge-gui/res/cardsfolder/c/court_cleric.txt b/forge-gui/res/cardsfolder/c/court_cleric.txt new file mode 100644 index 00000000000..34fddac4439 --- /dev/null +++ b/forge-gui/res/cardsfolder/c/court_cleric.txt @@ -0,0 +1,9 @@ +Name:Court Cleric +ManaCost:W +Types:Creature Human Cleric +PT:1/1 +K:Lifelink +S:Mode$ Continuous | Affected$ Card.Self | AddPower$ 1 | AddToughness$ 1 | IsPresent$ Planeswalker.Ajani+YouCtrl | Description$ CARDNAME gets +1/+1 as long as you control an Ajani planeswalker. +SVar:BuffedBy:Ajani +DeckNeeds:Type$Ajani +Oracle:Lifelink (Damage dealt by this creature also causes you to gain that much life.)\nCourt Cleric gets +1/+1 as long as you control an Ajani planeswalker. diff --git a/forge-gui/res/cardsfolder/c/covenant_of_blood.txt b/forge-gui/res/cardsfolder/c/covenant_of_blood.txt index 1b0f49b600e..0fdf96b4dd9 100644 --- a/forge-gui/res/cardsfolder/c/covenant_of_blood.txt +++ b/forge-gui/res/cardsfolder/c/covenant_of_blood.txt @@ -2,7 +2,7 @@ Name:Covenant of Blood ManaCost:6 B Types:Sorcery K:Convoke -A:SP$ DealDamage | Cost$ 6 B | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 4 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 4 damage to target creature or player and you gain 4 life. +A:SP$ DealDamage | Cost$ 6 B | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 4 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 4 damage to any target and you gain 4 life. SVar:DBGainLife:DB$GainLife | Defined$ You | LifeAmount$ 4 SVar:Picture:http://www.wizards.com/global/images/magic/general/covenant_of_blood.jpg -Oracle:Convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for {1} or one mana of that creature's color.)\nCovenant of Blood deals 4 damage to target creature or player and you gain 4 life. +Oracle:Convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for {1} or one mana of that creature's color.)\nCovenant of Blood deals 4 damage to any target and you gain 4 life. diff --git a/forge-gui/res/cardsfolder/c/crackleburr.txt b/forge-gui/res/cardsfolder/c/crackleburr.txt index 616a1717c5f..828da58ee93 100644 --- a/forge-gui/res/cardsfolder/c/crackleburr.txt +++ b/forge-gui/res/cardsfolder/c/crackleburr.txt @@ -2,7 +2,7 @@ Name:Crackleburr ManaCost:1 UR UR Types:Creature Elemental PT:2/2 -A:AB$ DealDamage | Cost$ UR UR T tapXType<2/Creature.Red/red creature> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. +A:AB$ DealDamage | Cost$ UR UR T tapXType<2/Creature.Red/red creature> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. A:AB$ ChangeZone | Cost$ UR UR Q untapYType<2/Creature.Blue+YouCtrl/blue creature> | ValidTgts$ Creature | TgtPrompt$ Select target creature | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return target creature to its owner's hand. SVar:Picture:http://www.wizards.com/global/images/magic/general/crackleburr.jpg -Oracle:{U/R}{U/R}, {T}, Tap two untapped red creatures you control: Crackleburr deals 3 damage to target creature or player.\n{U/R}{U/R}, {Q}, Untap two tapped blue creatures you control: Return target creature to its owner's hand. ({Q} is the untap symbol.) +Oracle:{U/R}{U/R}, {T}, Tap two untapped red creatures you control: Crackleburr deals 3 damage to any target.\n{U/R}{U/R}, {Q}, Untap two tapped blue creatures you control: Return target creature to its owner's hand. ({Q} is the untap symbol.) diff --git a/forge-gui/res/cardsfolder/c/crackling_club.txt b/forge-gui/res/cardsfolder/c/crackling_club.txt index 25d7718e7c4..216c4e9b001 100644 --- a/forge-gui/res/cardsfolder/c/crackling_club.txt +++ b/forge-gui/res/cardsfolder/c/crackling_club.txt @@ -6,4 +6,4 @@ A:SP$ Attach | Cost$ R | ValidTgts$ Creature | AILogic$ Pump S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 1 | Description$ Enchanted creature gets +1/+0. A:AB$ DealDamage | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature. SVar:Picture:http://www.wizards.com/global/images/magic/general/crackling_club.jpg -Oracle:Enchant creature\nEnchanted creature gets +1/+0.\nSacrifice Crackling Club: Crackling Club deals 1 damage to target creature. +Oracle:Enchant creature\nEnchanted creature gets +1/+0.\nSacrifice Crackling Club: It deals 1 damage to target creature. diff --git a/forge-gui/res/cardsfolder/c/crackling_triton.txt b/forge-gui/res/cardsfolder/c/crackling_triton.txt index 0316b9cd15a..79063dfec22 100644 --- a/forge-gui/res/cardsfolder/c/crackling_triton.txt +++ b/forge-gui/res/cardsfolder/c/crackling_triton.txt @@ -2,6 +2,6 @@ Name:Crackling Triton ManaCost:2 U Types:Creature Merfolk Wizard PT:2/3 -A:AB$ DealDamage | Cost$ 2 R Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:AB$ DealDamage | Cost$ 2 R Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/crackling_triton.jpg -Oracle:{2}{R}, Sacrifice Crackling Triton: Crackling Triton deals 2 damage to target creature or player. +Oracle:{2}{R}, Sacrifice Crackling Triton: Crackling Triton deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/c/cragganwick_cremator.txt b/forge-gui/res/cardsfolder/c/cragganwick_cremator.txt index 78b732c5dc5..643ff8cc324 100644 --- a/forge-gui/res/cardsfolder/c/cragganwick_cremator.txt +++ b/forge-gui/res/cardsfolder/c/cragganwick_cremator.txt @@ -2,10 +2,10 @@ Name:Cragganwick Cremator ManaCost:2 R R Types:Creature Giant Shaman PT:5/4 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDiscard | TriggerDescription$ When CARDNAME enters the battlefield, discard a card at random. If you discard a creature card this way, CARDNAME deals damage equal to that card's power to target player. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDiscard | TriggerDescription$ When CARDNAME enters the battlefield, discard a card at random. If you discard a creature card this way, CARDNAME deals damage equal to that card's power to target player or planeswalker. SVar:TrigDiscard:DB$ Discard | Defined$ You | NumCards$ 1 | Mode$ Random | RememberDiscarded$ True | SubAbility$ DBDmg -SVar:DBDmg:DB$ DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | ConditionDefined$ Remembered | ConditionPresent$ Card.Creature | ConditionCompare$ EQ1 | NumDmg$ X | SubAbility$ DBCleanup | References$ X +SVar:DBDmg:DB$ DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | ConditionDefined$ Remembered | ConditionPresent$ Card.Creature | ConditionCompare$ EQ1 | NumDmg$ X | SubAbility$ DBCleanup | References$ X SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Remembered$CardPower SVar:Picture:http://www.wizards.com/global/images/magic/general/cragganwick_cremator.jpg -Oracle:When Cragganwick Cremator enters the battlefield, discard a card at random. If you discard a creature card this way, Cragganwick Cremator deals damage equal to that card's power to target player. +Oracle:When Cragganwick Cremator enters the battlefield, discard a card at random. If you discard a creature card this way, Cragganwick Cremator deals damage equal to that card's power to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/c/crash.txt b/forge-gui/res/cardsfolder/c/crash.txt index 09e1604994a..61d5820ebb8 100644 --- a/forge-gui/res/cardsfolder/c/crash.txt +++ b/forge-gui/res/cardsfolder/c/crash.txt @@ -4,4 +4,4 @@ Types:Instant A:SP$ Destroy | Cost$ 2 R | ValidTgts$ Artifact | TgtPrompt$ Select target artifact | SpellDescription$ Destroy target artifact. SVar:AltCost:Cost$ Sac<1/Mountain> SVar:Picture:http://www.wizards.com/global/images/magic/general/crash.jpg -Oracle:You may sacrifice a Mountain rather than pay Crash's mana cost.\nDestroy target artifact. +Oracle:You may sacrifice a Mountain rather than pay this spell's mana cost.\nDestroy target artifact. diff --git a/forge-gui/res/cardsfolder/c/crash_of_rhino_beetles.txt b/forge-gui/res/cardsfolder/c/crash_of_rhino_beetles.txt new file mode 100644 index 00000000000..f4fb1b77234 --- /dev/null +++ b/forge-gui/res/cardsfolder/c/crash_of_rhino_beetles.txt @@ -0,0 +1,7 @@ +Name:Crash of Rhino Beetles +ManaCost:4 G +Types:Creature Insect +PT:5/5 +K:Trample +S:Mode$ Continuous | Affected$ Card.Self | AddPower$ 10 | AddToughness$ 10 | IsPresent$ Land.YouCtrl | PresentCompare$ GE10 | Description$ CARDNAME gets +10/+10 as long as you control ten or more lands. +Oracle:Trample\nCrash of Rhino Beetles gets +10/+10 as long as you control ten or more lands. diff --git a/forge-gui/res/cardsfolder/c/crash_the_ramparts.txt b/forge-gui/res/cardsfolder/c/crash_the_ramparts.txt index f3f365614a9..a794b2d8dca 100644 --- a/forge-gui/res/cardsfolder/c/crash_the_ramparts.txt +++ b/forge-gui/res/cardsfolder/c/crash_the_ramparts.txt @@ -3,4 +3,4 @@ ManaCost:2 G Types:Instant A:SP$ Pump | Cost$ 2 G | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +3 | NumDef$ +3 | KW$ Trample | SpellDescription$ Target creature gets +3/+3 and gains trample until end of turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/crash_the_ramparts.jpg -Oracle:Target creature gets +3/+3 and gains trample until end of turn. \ No newline at end of file +Oracle:Target creature gets +3/+3 and gains trample until end of turn. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/c/crater_elemental.txt b/forge-gui/res/cardsfolder/c/crater_elemental.txt index d3cb93a91c8..d42a2de92f4 100644 --- a/forge-gui/res/cardsfolder/c/crater_elemental.txt +++ b/forge-gui/res/cardsfolder/c/crater_elemental.txt @@ -7,4 +7,4 @@ A:AB$ Animate | Cost$ 2 R | Defined$ Self | Power$ 8 | CheckSVar$ FormidableTest SVar:FormidableTest:Count$SumPower_Creature.YouCtrl SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/crater_elemental.jpg -Oracle:{R}, {T}, Sacrifice Crater Elemental: Crater Elemental deals 4 damage to target creature.\nFormidable — {2}{R}: Crater Elemental has base power 8 until end of turn. Activate this ability only if creatures you control have total power 8 or greater. +Oracle:{R}, {T}, Sacrifice Crater Elemental: It deals 4 damage to target creature.\nFormidable — {2}{R}: Crater Elemental has base power 8 until end of turn. Activate this ability only if creatures you control have total power 8 or greater. diff --git a/forge-gui/res/cardsfolder/c/craters_claws.txt b/forge-gui/res/cardsfolder/c/craters_claws.txt index d96e3ed7533..c3562b01d1d 100644 --- a/forge-gui/res/cardsfolder/c/craters_claws.txt +++ b/forge-gui/res/cardsfolder/c/craters_claws.txt @@ -1,10 +1,10 @@ Name:Crater's Claws ManaCost:X R Types:Sorcery -A:SP$ DealDamage | Cost$ X R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ Y | References$ X,Y,Z,W | SpellDescription$ CARDNAME deals X damage to target creature or player. Ferocious — CARDNAME deals X plus 2 damage to that creature or player instead if you control a creature with power 4 or greater. +A:SP$ DealDamage | Cost$ X R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ Y | References$ X,Y,Z,W | SpellDescription$ CARDNAME deals X damage to any target. Ferocious — CARDNAME deals X plus 2 damage to that permanent or player instead if you control a creature with power 4 or greater. SVar:X:Count$xPaid SVar:W:Count$xPaid/Plus.2 SVar:Y:Count$Compare Z GE1.W.X SVar:Z:Count$Valid Creature.YouCtrl+powerGE4 SVar:Picture:http://www.wizards.com/global/images/magic/general/craters_claws.jpg -Oracle:Crater's Claws deals X damage to target creature or player.\nFerocious — Crater's Claws deals X plus 2 damage to that creature or player instead if you control a creature with power 4 or greater. +Oracle:Crater's Claws deals X damage to any target.\nFerocious — Crater's Claws deals X plus 2 damage to that permanent or player instead if you control a creature with power 4 or greater. diff --git a/forge-gui/res/cardsfolder/c/craw_giant.txt b/forge-gui/res/cardsfolder/c/craw_giant.txt index 5146c6d9e24..3f1b996ef76 100644 --- a/forge-gui/res/cardsfolder/c/craw_giant.txt +++ b/forge-gui/res/cardsfolder/c/craw_giant.txt @@ -3,6 +3,6 @@ ManaCost:3 G G G G Types:Creature Giant PT:6/4 K:Trample -K:Rampage 2 +K:Rampage:2 SVar:Picture:http://www.wizards.com/global/images/magic/general/craw_giant.jpg Oracle:Trample\nRampage 2 (Whenever this creature becomes blocked, it gets +2/+2 until end of turn for each creature blocking it beyond the first.) diff --git a/forge-gui/res/cardsfolder/c/creeping_renaissance.txt b/forge-gui/res/cardsfolder/c/creeping_renaissance.txt index 15607bab595..6cd9b4239ba 100644 --- a/forge-gui/res/cardsfolder/c/creeping_renaissance.txt +++ b/forge-gui/res/cardsfolder/c/creeping_renaissance.txt @@ -1,7 +1,7 @@ Name:Creeping Renaissance ManaCost:3 G G Types:Sorcery -K:Flashback 5 G G +K:Flashback:5 G G A:SP$ ChooseType | Cost$ 3 G G | Defined$ You | Type$ Card | InvalidTypes$ Instant,Sorcery,Tribal | SubAbility$ DBReturn | SpellDescription$ Choose a permanent type. Return all cards of the chosen type from your graveyard to your hand. SVar:DBReturn:DB$ ChangeZoneAll | Origin$ Graveyard | Destination$ Hand | ChangeType$ Card.ChosenType+YouCtrl SVar:RemAIDeck:True diff --git a/forge-gui/res/cardsfolder/c/crested_craghorn.txt b/forge-gui/res/cardsfolder/c/crested_craghorn.txt index 1e422941f05..1a3b9cf2ad4 100644 --- a/forge-gui/res/cardsfolder/c/crested_craghorn.txt +++ b/forge-gui/res/cardsfolder/c/crested_craghorn.txt @@ -6,4 +6,4 @@ K:Haste K:Provoke SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/crested_craghorn.jpg -Oracle:Haste\nProvoke (When this attacks, you may have target creature defending player controls untap and block it if able.) +Oracle:Haste\nProvoke (Whenever this creature attacks, you may have target creature defending player controls untap and block it if able.) diff --git a/forge-gui/res/cardsfolder/c/crippling_fatigue.txt b/forge-gui/res/cardsfolder/c/crippling_fatigue.txt index 47389580c02..cfbdf079c1c 100644 --- a/forge-gui/res/cardsfolder/c/crippling_fatigue.txt +++ b/forge-gui/res/cardsfolder/c/crippling_fatigue.txt @@ -1,7 +1,7 @@ Name:Crippling Fatigue ManaCost:1 B B Types:Sorcery -K:Flashback 1 B PayLife<3> +K:Flashback:1 B PayLife<3> A:SP$ Pump | Cost$ 1 B B | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ -2 | NumDef$ -2 | IsCurse$ True | SpellDescription$ Target creature gets -2/-2 until end of turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/crippling_fatigue.jpg Oracle:Target creature gets -2/-2 until end of turn.\nFlashback—{1}{B}, Pay 3 life. (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/c/crop_rotation.txt b/forge-gui/res/cardsfolder/c/crop_rotation.txt index 3d4a18c4544..72fc4c866e3 100644 --- a/forge-gui/res/cardsfolder/c/crop_rotation.txt +++ b/forge-gui/res/cardsfolder/c/crop_rotation.txt @@ -4,4 +4,4 @@ Types:Instant A:SP$ ChangeZone | Cost$ G Sac<1/Land> | Origin$ Library | Destination$ Battlefield | ChangeType$ Land | ChangeNum$ 1 | SpellDescription$ Search your library for a land card and put that card onto the battlefield. Then shuffle your library. SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/crop_rotation.jpg -Oracle:As an additional cost to cast Crop Rotation, sacrifice a land.\nSearch your library for a land card and put that card onto the battlefield. Then shuffle your library. +Oracle:As an additional cost to cast this spell, sacrifice a land.\nSearch your library for a land card and put that card onto the battlefield. Then shuffle your library. diff --git a/forge-gui/res/cardsfolder/c/crovax.txt b/forge-gui/res/cardsfolder/c/crovax.txt index bef8cb203ea..a3ff27ef572 100644 --- a/forge-gui/res/cardsfolder/c/crovax.txt +++ b/forge-gui/res/cardsfolder/c/crovax.txt @@ -2,7 +2,7 @@ Name:Crovax ManaCost:no cost Types:Vanguard HandLifeModifier:+2/+0 -T:Mode$ DamageDone | ValidSource$ Creature+YouCtrl | ValidTarget$ Creature,Player | TriggerZones$ Command | Execute$ TrigGainLife | TriggerDescription$ Whenever a creature you control deals damage to a creature or player, you gain 1 life. +T:Mode$ DamageDone | ValidSource$ Creature+YouCtrl | ValidTarget$ Permanent,Player | TriggerZones$ Command | Execute$ TrigGainLife | TriggerDescription$ Whenever a creature you control deals damage to a permanent or player, you gain 1 life. SVar:TrigGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 1 SVar:Picture:https://downloads.cardforge.org/images/cards/VAN/Crovax.full.jpg -Oracle:Hand +2, life +0\nWhenever a creature you control deals damage to a creature or player, you gain 1 life. +Oracle:Hand +2, life +0\nWhenever a creature you control deals damage to a permanent or player, you gain 1 life. diff --git a/forge-gui/res/cardsfolder/c/crow_of_dark_tidings.txt b/forge-gui/res/cardsfolder/c/crow_of_dark_tidings.txt index 2c84fe6eff8..2a2f4ae899f 100644 --- a/forge-gui/res/cardsfolder/c/crow_of_dark_tidings.txt +++ b/forge-gui/res/cardsfolder/c/crow_of_dark_tidings.txt @@ -9,4 +9,4 @@ SVar:TrigMill:DB$ Mill | NumCards$ 2 | Defined$ You DeckHints:Ability$Delirium DeckHas:Ability$Graveyard SVar:Picture:http://www.wizards.com/global/images/magic/general/crow_of_dark_tidings.jpg -Oracle:Flying\nWhen Crow of Dark Tidings enters the battlefield or dies, put the top two cards of your library into your graveyard. \ No newline at end of file +Oracle:Flying\nWhen Crow of Dark Tidings enters the battlefield or dies, put the top two cards of your library into your graveyard. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/c/cruel_feeding.txt b/forge-gui/res/cardsfolder/c/cruel_feeding.txt index 366253f8acb..e9160f33467 100644 --- a/forge-gui/res/cardsfolder/c/cruel_feeding.txt +++ b/forge-gui/res/cardsfolder/c/cruel_feeding.txt @@ -5,4 +5,4 @@ K:Strive:2 B A:SP$ Pump | Cost$ B | ValidTgts$ Creature | KW$ Lifelink | NumAtt$ +1 | TargetMin$ 0 | TargetMax$ MaxTargets | References$ MaxTargets | SpellDescription$ Any number of target creatures each get +1/+0 and gain lifelink until end of turn. SVar:MaxTargets:Count$Valid Creature SVar:Picture:http://www.wizards.com/global/images/magic/general/cruel_feeding.jpg -Oracle:Strive — Cruel Feeding costs {2}{B} more to cast for each target beyond the first.\nAny number of target creatures each get +1/+0 and gain lifelink until end of turn. (Damage dealt by a creature with lifelink also causes its controller to gain that much life.) +Oracle:Strive — This spell costs {2}{B} more to cast for each target beyond the first.\nAny number of target creatures each get +1/+0 and gain lifelink until end of turn. (Damage dealt by a creature with lifelink also causes its controller to gain that much life.) diff --git a/forge-gui/res/cardsfolder/c/crumbling_colossus.txt b/forge-gui/res/cardsfolder/c/crumbling_colossus.txt index 6861a083602..f9353a8df4a 100644 --- a/forge-gui/res/cardsfolder/c/crumbling_colossus.txt +++ b/forge-gui/res/cardsfolder/c/crumbling_colossus.txt @@ -8,4 +8,4 @@ SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ EndCombat | ValidPlayer$ SVar:TrigSacrifice:DB$ Sacrifice | Defined$ Self SVar:SacrificeEndCombat:True SVar:Picture:http://www.wizards.com/global/images/magic/general/crumbling_colossus.jpg -Oracle:Trample (This creature can deal excess combat damage to defending player or planeswalker while attacking.)\nWhen Crumbling Colossus attacks, sacrifice it at end of combat. +Oracle:Trample (This creature can deal excess combat damage to the player or planeswalker it's attacking.)\nWhen Crumbling Colossus attacks, sacrifice it at end of combat. diff --git a/forge-gui/res/cardsfolder/c/crush_of_tentacles.txt b/forge-gui/res/cardsfolder/c/crush_of_tentacles.txt index 2edfacbb1fd..11d5f1f340d 100644 --- a/forge-gui/res/cardsfolder/c/crush_of_tentacles.txt +++ b/forge-gui/res/cardsfolder/c/crush_of_tentacles.txt @@ -2,8 +2,8 @@ Name:Crush of Tentacles ManaCost:4 U U Types:Sorcery K:Surge:3 U U -A:SP$ ChangeZoneAll | Cost$ 4 U U | ChangeType$ Permanent.nonLand | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return all nonland permanents to their owners' hands. If CARDNAME' surge cost was paid, create an 8/8 blue Octopus token. | SubAbility$ DBToken +A:SP$ ChangeZoneAll | Cost$ 4 U U | ChangeType$ Permanent.nonLand | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return all nonland permanents to their owners' hands. If CARDNAME's surge cost was paid, create an 8/8 blue Octopus creature token. | SubAbility$ DBToken SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenName$ Octopus | TokenTypes$ Creature,Octopus | TokenOwner$ You | TokenColors$ Blue | TokenPower$ 8 | TokenToughness$ 8 | Condition$ Surge SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/crush_of_tentacles.jpg -Oracle:Surge {3}{U}{U} (You may cast this spell for its surge cost if you or a teammate has cast another spell this turn.)\nReturn all nonland permanents to their owner's hands. If Crush of Tentacles' surge cost was paid, create an 8/8 blue Octopus token. \ No newline at end of file +Oracle:Surge {3}{U}{U} (You may cast this spell for its surge cost if you or a teammate has cast another spell this turn.)\nReturn all nonland permanents to their owners' hands. If Crush of Tentacles's surge cost was paid, create an 8/8 blue Octopus creature token. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/c/crush_of_wurms.txt b/forge-gui/res/cardsfolder/c/crush_of_wurms.txt index 11b5fb11649..8cbe668819d 100644 --- a/forge-gui/res/cardsfolder/c/crush_of_wurms.txt +++ b/forge-gui/res/cardsfolder/c/crush_of_wurms.txt @@ -1,7 +1,7 @@ Name:Crush of Wurms ManaCost:6 G G G Types:Sorcery -K:Flashback 9 G G G +K:Flashback:9 G G G A:SP$ Token | Cost$ 6 G G G | TokenAmount$ 3 | TokenName$ Wurm | TokenColors$ Green | TokenTypes$ Creature,Wurm | TokenOwner$ You | TokenPower$ 6 | TokenToughness$ 6 | SpellDescription$ Create three 6/6 green Wurm creature tokens. SVar:Picture:http://www.wizards.com/global/images/magic/general/crush_of_wurms.jpg Oracle:Create three 6/6 green Wurm creature tokens.\nFlashback {9}{G}{G}{G} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/c/cryptic_annelid.txt b/forge-gui/res/cardsfolder/c/cryptic_annelid.txt index a8dee5d9f52..a8cba25da51 100644 --- a/forge-gui/res/cardsfolder/c/cryptic_annelid.txt +++ b/forge-gui/res/cardsfolder/c/cryptic_annelid.txt @@ -7,4 +7,4 @@ SVar:TrigScry:DB$Scry | ScryNum$ 1 | SubAbility$ DBScry2 SVar:DBScry2:DB$Scry | ScryNum$ 2 | SubAbility$ DBScry3 SVar:DBScry3:DB$Scry | ScryNum$ 3 SVar:Picture:http://www.wizards.com/global/images/magic/general/cryptic_annelid.jpg -Oracle:When Cryptic Annelid enters the battlefield, scry 1, then scry 2, then scry 3. (To scry X, look at the top X cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) \ No newline at end of file +Oracle:When Cryptic Annelid enters the battlefield, scry 1, then scry 2, then scry 3. (To scry X, look at the top X cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/c/cryptic_serpent.txt b/forge-gui/res/cardsfolder/c/cryptic_serpent.txt index 09c8b5f267a..20e9be57e6b 100644 --- a/forge-gui/res/cardsfolder/c/cryptic_serpent.txt +++ b/forge-gui/res/cardsfolder/c/cryptic_serpent.txt @@ -6,4 +6,4 @@ S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ X | EffectZone SVar:X:Count$ValidGraveyard Instant.YouOwn,Sorcery.YouOwn DeckHints:Ability$Graveyard SVar:Picture:http://www.wizards.com/global/images/magic/general/cryptic_serpent.jpg -Oracle:Cryptic Serpent costs {1} less to cast for each instant and sorcery card in your graveyard. +Oracle:This spell costs {1} less to cast for each instant and sorcery card in your graveyard. diff --git a/forge-gui/res/cardsfolder/c/cunning_sparkmage.txt b/forge-gui/res/cardsfolder/c/cunning_sparkmage.txt index fb9170173f0..deb49cdb8c6 100644 --- a/forge-gui/res/cardsfolder/c/cunning_sparkmage.txt +++ b/forge-gui/res/cardsfolder/c/cunning_sparkmage.txt @@ -3,6 +3,6 @@ ManaCost:2 R Types:Creature Human Shaman PT:0/1 K:Haste -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/cunning_sparkmage.jpg -Oracle:Haste\n{T}: Cunning Sparkmage deals 1 damage to target creature or player. +Oracle:Haste\n{T}: Cunning Sparkmage deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/c/cunning_strike.txt b/forge-gui/res/cardsfolder/c/cunning_strike.txt index 127b1fa05d1..4ceb604e9b1 100644 --- a/forge-gui/res/cardsfolder/c/cunning_strike.txt +++ b/forge-gui/res/cardsfolder/c/cunning_strike.txt @@ -1,8 +1,8 @@ Name:Cunning Strike ManaCost:3 U R Types:Instant -A:SP$ DealDamage | Cost$ 3 U R | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 2 | SubAbility$ DB1 | SpellDescription$ CARDNAME deals 2 damage to target creature and 2 damage to target player. Draw a card. -SVar:DB1:DB$ DealDamage | NumDmg$ 2 | ValidTgts$ Player | TgtPrompt$ Select target player | SubAbility$ DBDraw +A:SP$ DealDamage | Cost$ 3 U R | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 2 | SubAbility$ DB1 | SpellDescription$ CARDNAME deals 2 damage to target creature and 2 damage to target player or planeswalker. Draw a card. +SVar:DB1:DB$ DealDamage | NumDmg$ 2 | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | SubAbility$ DBDraw SVar:DBDraw:DB$ Draw | NumCards$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/cunning_strike.jpg -Oracle:Cunning Strike deals 2 damage to target creature and 2 damage to target player.\nDraw a card. +Oracle:Cunning Strike deals 2 damage to target creature and 2 damage to target player or planeswalker.\nDraw a card. diff --git a/forge-gui/res/cardsfolder/c/cuombajj_witches.txt b/forge-gui/res/cardsfolder/c/cuombajj_witches.txt index 21852b7c9d0..540a018c690 100644 --- a/forge-gui/res/cardsfolder/c/cuombajj_witches.txt +++ b/forge-gui/res/cardsfolder/c/cuombajj_witches.txt @@ -2,8 +2,8 @@ Name:Cuombajj Witches ManaCost:B B Types:Creature Human Wizard PT:1/3 -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SubAbility$ DBDmg | SpellDescription$ CARDNAME deals 1 damage to target creature or player and 1 damage to target creature or player of an opponent's choice. -SVar:DBDmg:DB$ DealDamage | TargetingPlayer$ Player.Opponent | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SubAbility$ DBDmg | SpellDescription$ CARDNAME deals 1 damage to any target and 1 damage to any target of an opponent's choice. +SVar:DBDmg:DB$ DealDamage | TargetingPlayer$ Player.Opponent | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/cuombajj_witches.jpg -Oracle:{T}: Cuombajj Witches deals 1 damage to target creature or player and 1 damage to target creature or player of an opponent's choice. +Oracle:{T}: Cuombajj Witches deals 1 damage to any target and 1 damage to any target of an opponent's choice. diff --git a/forge-gui/res/cardsfolder/c/curator_of_mysteries.txt b/forge-gui/res/cardsfolder/c/curator_of_mysteries.txt index a5c31959bc5..d114a1dd146 100644 --- a/forge-gui/res/cardsfolder/c/curator_of_mysteries.txt +++ b/forge-gui/res/cardsfolder/c/curator_of_mysteries.txt @@ -7,4 +7,4 @@ T:Mode$ Discarded | ValidCard$ Card.YouCtrl+Other | TriggerZones$ Battlefield | SVar:TrigScry:DB$ Scry | ScryNum$ 1 K:Cycling:U SVar:Picture:http://www.wizards.com/global/images/magic/general/curator_of_mysteries.jpg -Oracle:Flying\nWhenever you cycle or discard another card, scry 1.\nCycling {U} ({U}, Discard a card: Draw a card.) +Oracle:Flying\nWhenever you cycle or discard another card, scry 1.\nCycling {U} ({U}, Discard this card: Draw a card.) diff --git a/forge-gui/res/cardsfolder/c/curious_obsession.txt b/forge-gui/res/cardsfolder/c/curious_obsession.txt index 3720b801e16..3b3120663a8 100644 --- a/forge-gui/res/cardsfolder/c/curious_obsession.txt +++ b/forge-gui/res/cardsfolder/c/curious_obsession.txt @@ -10,4 +10,4 @@ T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefiel SVar:TrigSac:DB$ Sacrifice | SacValid$ Self SVar:X:Count$AttackersDeclared SVar:Picture:http://www.wizards.com/global/images/magic/general/curious_obsession.jpg -Oracle:Enchant creature\nEnchanted creature gets +1/+1 and has "Whenever this creature deals combat damage to a player, you may draw a card.\nAt the beginning of your end step, if you didn't attack with a creature this turn, sacrifice Curious Obsession. \ No newline at end of file +Oracle:Enchant creature\nEnchanted creature gets +1/+1 and has "Whenever this creature deals combat damage to a player, you may draw a card."\nAt the beginning of your end step, if you didn't attack with a creature this turn, sacrifice Curious Obsession. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/c/curse_of_the_pierced_heart.txt b/forge-gui/res/cardsfolder/c/curse_of_the_pierced_heart.txt index 2d9677000fc..437c16e9a9a 100644 --- a/forge-gui/res/cardsfolder/c/curse_of_the_pierced_heart.txt +++ b/forge-gui/res/cardsfolder/c/curse_of_the_pierced_heart.txt @@ -3,7 +3,10 @@ ManaCost:1 R Types:Enchantment Aura Curse K:Enchant player A:SP$ Attach | Cost$ 1 R | ValidTgts$ Player | AILogic$ Curse -T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Player.EnchantedBy | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ At the beginning of enchanted player's upkeep, CARDNAME deals 1 damage to that player. -SVar:TrigDamage:DB$ DealDamage | Defined$ Player.EnchantedBy | NumDmg$ 1 +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Player.EnchantedBy | TriggerZones$ Battlefield | Execute$ DBChooseCard | TriggerDescription$ At the beginning of enchanted player's upkeep, CARDNAME deals 1 damage to that player. +SVar:DBChooseCard:DB$ ChooseCard | Choices$ Planeswalker.ControlledBy TriggeredPlayer | Optional$ Yes | Amount$ 1 | SubAbility$ DBDamagePlayer +SVar:DBDamagePlayer:DB$ DealDamage | Defined$ TriggeredPlayer | NumDmg$ 1 | ConditionDefined$ ChosenCard | ConditionPresent$ Card | ConditionCompare$ EQ0 | SubAbility$ DBDamageChosen +SVar:DBDamageChosen:DB$ DealDamage | Defined$ ChosenCard | NumDmg$ 1 | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/curse_of_the_pierced_heart.jpg -Oracle:Enchant player\nAt the beginning of enchanted player's upkeep, Curse of the Pierced Heart deals 1 damage to that player. +Oracle:Enchant player\nAt the beginning of enchanted player's upkeep, Curse of the Pierced Heart deals 1 damage to that player or a planeswalker that player controls. diff --git a/forge-gui/res/cardsfolder/c/curse_of_verbosity.txt b/forge-gui/res/cardsfolder/c/curse_of_verbosity.txt index 8b1b990e0a6..2d7d225c3e2 100644 --- a/forge-gui/res/cardsfolder/c/curse_of_verbosity.txt +++ b/forge-gui/res/cardsfolder/c/curse_of_verbosity.txt @@ -7,4 +7,4 @@ T:Mode$ AttackersDeclared | ValidCard$ Creature | AttackedTarget$ Player.Enchant SVar:TrigRepeat:DB$ RepeatEach | RepeatPlayers$ TriggeredAttackingPlayerAndYou | RepeatSubAbility$ TrigDraw SVar:TrigDraw:DB$ Draw | NumCards$ 1 | Defined$ Player.IsRemembered SVar:Picture:http://www.wizards.com/global/images/magic/general/curse_of_verbosity.jpg -Oracle:Enchant player\nWhenever enchanted player is attacked, draw a card. Each opponent attacking that player does the same. +Oracle:Enchant player\nWhenever enchanted player is attacked, you draw a card. Each opponent attacking that player does the same. diff --git a/forge-gui/res/cardsfolder/c/cursed_ronin.txt b/forge-gui/res/cardsfolder/c/cursed_ronin.txt index 64c36f1e9bb..0c2295a248e 100644 --- a/forge-gui/res/cardsfolder/c/cursed_ronin.txt +++ b/forge-gui/res/cardsfolder/c/cursed_ronin.txt @@ -3,6 +3,6 @@ ManaCost:3 B Types:Creature Human Samurai PT:1/1 A:AB$ Pump | Cost$ B | NumAtt$ +1 | NumDef$ +1 | SpellDescription$ CARDNAME gets +1/+1 until end of turn. -K:Bushido 1 +K:Bushido:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/cursed_ronin.jpg -Oracle:Bushido 1 (When this blocks or becomes blocked, it gets +1/+1 until end of turn.)\n{B}: Cursed Ronin gets +1/+1 until end of turn. +Oracle:Bushido 1 (Whenever this creature blocks or becomes blocked, it gets +1/+1 until end of turn.)\n{B}: Cursed Ronin gets +1/+1 until end of turn. diff --git a/forge-gui/res/cardsfolder/c/cursed_scroll.txt b/forge-gui/res/cardsfolder/c/cursed_scroll.txt index f3978565dd4..1d64b72e84f 100644 --- a/forge-gui/res/cardsfolder/c/cursed_scroll.txt +++ b/forge-gui/res/cardsfolder/c/cursed_scroll.txt @@ -1,10 +1,10 @@ Name:Cursed Scroll ManaCost:1 Types:Artifact -A:AB$ NameCard | Cost$ 3 T | Defined$ You | SubAbility$ DBReveal | AILogic$ CursedScroll | SpellDescription$ Choose a card name, then reveal a card at random from your hand. If that card has the chosen name, CARDNAME deals 2 damage to target creature or player. +A:AB$ NameCard | Cost$ 3 T | Defined$ You | SubAbility$ DBReveal | AILogic$ CursedScroll | SpellDescription$ Choose a card name, then reveal a card at random from your hand. If that card has the chosen name, CARDNAME deals 2 damage to any target. SVar:DBReveal:DB$ Reveal | Random$ True | RememberRevealed$ True | Defined$ You | SubAbility$ DBDamage -SVar:DBDamage:DB$ DealDamage | NumDmg$ 2 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | ConditionDefined$ Remembered | ConditionPresent$ Card.NamedCard | ConditionCompare$ EQ1 | SubAbility$ DBCleanup +SVar:DBDamage:DB$ DealDamage | NumDmg$ 2 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | ConditionDefined$ Remembered | ConditionPresent$ Card.NamedCard | ConditionCompare$ EQ1 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:PreferredHandSize:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/cursed_scroll.jpg -Oracle:{3}, {T}: Choose a card name, then reveal a card at random from your hand. If that card has the chosen name, Cursed Scroll deals 2 damage to target creature or player. +Oracle:{3}, {T}: Choose a card name, then reveal a card at random from your hand. If that card has the chosen name, Cursed Scroll deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/c/curtain_of_light.txt b/forge-gui/res/cardsfolder/c/curtain_of_light.txt index dfad5430878..aaea90ae589 100644 --- a/forge-gui/res/cardsfolder/c/curtain_of_light.txt +++ b/forge-gui/res/cardsfolder/c/curtain_of_light.txt @@ -5,4 +5,4 @@ Text:Cast CARDNAME only during combat after blockers are declared. A:SP$ BecomesBlocked | Cost$ 1 W | ValidTgts$ Creature.attacking+unblocked | TgtPrompt$ Select target unblocked attacking creature | SubAbility$ Draw | ActivationPhases$ Declare Blockers->EndCombat | SpellDescription$ Target unblocked attacking creature becomes blocked. (This spell works on creatures that can't be blocked.) Draw a card. SVar:Draw:DB$ Draw | NumCards$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/curtain_of_light.jpg -Oracle:Cast Curtain of Light only during combat after blockers are declared.\nTarget unblocked attacking creature becomes blocked. (This spell works on creatures that can't be blocked.)\nDraw a card. +Oracle:Cast this spell only during combat after blockers are declared.\nTarget unblocked attacking creature becomes blocked. (This spell works on creatures that can't be blocked.)\nDraw a card. diff --git a/forge-gui/res/cardsfolder/c/custodi_soulcaller.txt b/forge-gui/res/cardsfolder/c/custodi_soulcaller.txt index c87cf80d32a..1912f661aca 100644 --- a/forge-gui/res/cardsfolder/c/custodi_soulcaller.txt +++ b/forge-gui/res/cardsfolder/c/custodi_soulcaller.txt @@ -6,4 +6,4 @@ K:Melee T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigSoulcall | TriggerDescription$ Whenever CARDNAME attacks, return target creature card with converted mana cost X or less from your graveyard to the battlefield, where X is the number of players you attacked with a creature this combat SVar:TrigSoulcall:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Creature.YouCtrl+cmcLEX | References$ X SVar:X:TriggeredPlayersDefenders$Amount -Oracle:Melee (Whenever this creature attacks, it gets +1/+1 until end of turn for each opponent you attacked with a creature this combat.)\nWhenever Custodi Soulcaller attacks, return target creature card with converted mana cost X or less from your graveyard to the battlefield, where X is the number of players you attacked with a creature this combat +Oracle:Melee (Whenever this creature attacks, it gets +1/+1 until end of turn for each opponent you attacked with a creature this combat.)\nWhenever Custodi Soulcaller attacks, return target creature card with converted mana cost X or less from your graveyard to the battlefield, where X is the number of players you attacked with a creature this combat. diff --git a/forge-gui/res/cardsfolder/c/cyclopean_giant.txt b/forge-gui/res/cardsfolder/c/cyclopean_giant.txt index 8178d983108..493e1872703 100644 --- a/forge-gui/res/cardsfolder/c/cyclopean_giant.txt +++ b/forge-gui/res/cardsfolder/c/cyclopean_giant.txt @@ -3,7 +3,7 @@ ManaCost:2 B B Types:Creature Zombie Giant PT:4/2 T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Battlefield | Destination$ Graveyard | Execute$ TrigAnimate | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, target land becomes a Swamp. Exile CARDNAME. -SVar:TrigAnimate:DB$ Animate | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ Swamp | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | RemoveAllAbilities$ True | Permanent$ True | SubAbility$ DBExile | SpellDescription$ Target land becomes a Swamp. +SVar:TrigAnimate:DB$ Animate | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ Swamp | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True | Permanent$ True | SubAbility$ DBExile | SpellDescription$ Target land becomes a Swamp. SVar:DBExile:DB$ ChangeZone | Defined$ TriggeredCard | Origin$ Graveyard | Destination$ Exile SVar:Picture:http://www.wizards.com/global/images/magic/general/cyclopean_giant.jpg Oracle:When Cyclopean Giant dies, target land becomes a Swamp. Exile Cyclopean Giant. diff --git a/forge-gui/res/cardsfolder/c/cyclopean_tomb.txt b/forge-gui/res/cardsfolder/c/cyclopean_tomb.txt index 34706e45442..ceed206a8b2 100644 --- a/forge-gui/res/cardsfolder/c/cyclopean_tomb.txt +++ b/forge-gui/res/cardsfolder/c/cyclopean_tomb.txt @@ -3,7 +3,7 @@ ManaCost:4 Types:Artifact A:AB$ PutCounter | Cost$ 2 T | ValidTgts$ Land.nonSwamp | TgtPrompt$ Select target non-Swamp land | RememberTargets$ True | CounterType$ MIRE | CounterNum$ 1 | ActivationPhases$ Upkeep | SubAbility$ DBAnimate | SpellDescription$ Put a mire counter on target non-Swamp land. That land is a Swamp for as long as it has a mire counter on it. Activate this ability only during your upkeep. SVar:DBAnimate:DB$ Animate | Defined$ ParentTarget | staticAbilities$ AnimateSwamp | Permanent$ True -SVar:AnimateSwamp:Mode$ Continuous | EffectZone$ Battlefield | Affected$ Card.Self+counters_GE1_MIRE | AddType$ Swamp | RemoveSubTypes$ True | RemoveAllAbilities$ True +SVar:AnimateSwamp:Mode$ Continuous | EffectZone$ Battlefield | Affected$ Card.Self+counters_GE1_MIRE | AddType$ Swamp | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigEffect | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME is put into a graveyard from the battlefield, at the beginning of each of your upkeeps for the rest of the game, remove all mire counters from a land that a mire counter was put onto with CARDNAME but that a mire counter has not been removed from with CARDNAME. SVar:TrigEffect:DB$ Effect | ImprintCards$ Remembered | Triggers$ UpkeepRemove,TrigForget | SVars$ PumpForget,TrigRemove,DBRemoveCounter,DBForget | Duration$ Permanent SVar:UpkeepRemove:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigRemove | TriggerZones$ Command | TriggerDescription$ At the beginning of your upkeep, remove all mire counters from a land that a mire counter was put onto with Cyclopean Tomb but that a mire counter has not been removed from with Cyclopean Tomb. diff --git a/forge-gui/res/cardsfolder/d/dacks_duplicate.txt b/forge-gui/res/cardsfolder/d/dacks_duplicate.txt index 3db4d7df68a..ce5cd483f24 100644 --- a/forge-gui/res/cardsfolder/d/dacks_duplicate.txt +++ b/forge-gui/res/cardsfolder/d/dacks_duplicate.txt @@ -2,8 +2,7 @@ Name:Dack's Duplicate ManaCost:2 U R Types:Creature Shapeshifter PT:0/0 -K:ETBReplacement:Copy:ChooseCreature:Optional -SVar:ChooseCreature:DB$ ChooseCard | Defined$ You | Amount$ 1 | Choices$ Creature.Other | SubAbility$ DBCopy | AILogic$ AtLeast1 | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of any creature on the battlefield except it gains haste and dethrone. (Whenever it attacks the player with the most life or tied for most life, put a +1/+1 counter on it.) -SVar:DBCopy:DB$ Clone | Defined$ ChosenCard | AddKeywords$ Haste & Dethrone +K:ETBReplacement:Copy:DBCopy:Optional +SVar:DBCopy:DB$ Clone | Choices$ Creature.Other | AddKeywords$ Haste & Dethrone | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of any creature on the battlefield except it gains haste and dethrone. (Whenever it attacks the player with the most life or tied for most life, put a +1/+1 counter on it.) SVar:Picture:http://www.wizards.com/global/images/magic/general/dacks_duplicate.jpg Oracle:You may have Dack's Duplicate enter the battlefield as a copy of any creature on the battlefield except it gains haste and dethrone. (Whenever it attacks the player with the most life or tied for most life, put a +1/+1 counter on it.) diff --git a/forge-gui/res/cardsfolder/d/dagger_of_the_worthy.txt b/forge-gui/res/cardsfolder/d/dagger_of_the_worthy.txt index f483e7a8d4c..2f0e5685f98 100644 --- a/forge-gui/res/cardsfolder/d/dagger_of_the_worthy.txt +++ b/forge-gui/res/cardsfolder/d/dagger_of_the_worthy.txt @@ -1,7 +1,7 @@ Name:Dagger of the Worthy ManaCost:2 Types:Artifact Equipment -S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 2 | AddKeyword$ Afflict 1 | Description$ Equipped creature gets +2/+0 and has afflict 1. (Whenever it becomes blocked, defending player loses 1 life.) +S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 2 | AddKeyword$ Afflict:1 | Description$ Equipped creature gets +2/+0 and has afflict 1. (Whenever it becomes blocked, defending player loses 1 life.) K:Equip:2 SVar:Picture:http://www.wizards.com/global/images/magic/general/dagger_of_the_worthy.jpg Oracle:Equipped creature gets +2/+0 and has afflict 1. (Whenever it becomes blocked, defending player loses 1 life.)\nEquip {2} ({2}: Attach to target creature you control. Equip only as a sorcery.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/d/dakmor_salvage.txt b/forge-gui/res/cardsfolder/d/dakmor_salvage.txt index 144ca9731d1..9d0d7ad80e9 100644 --- a/forge-gui/res/cardsfolder/d/dakmor_salvage.txt +++ b/forge-gui/res/cardsfolder/d/dakmor_salvage.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Land K:CARDNAME enters the battlefield tapped. A:AB$ Mana | Cost$ T | Produced$ B | SpellDescription$ Add {B}. -K:Dredge 2 +K:Dredge:2 SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/dakmor_salvage.jpg Oracle:Dakmor Salvage enters the battlefield tapped.\n{T}: Add {B}.\nDredge 2 (If you would draw a card, instead you may put exactly two cards from the top of your library into your graveyard. If you do, return this card from your graveyard to your hand. Otherwise, draw a card.) diff --git a/forge-gui/res/cardsfolder/d/damping_sphere.txt b/forge-gui/res/cardsfolder/d/damping_sphere.txt index d3ccff78259..1674dfb13e2 100644 --- a/forge-gui/res/cardsfolder/d/damping_sphere.txt +++ b/forge-gui/res/cardsfolder/d/damping_sphere.txt @@ -1,11 +1,10 @@ Name:Damping Sphere ManaCost:2 Types:Artifact -R:Event$ ProduceMana | ActiveZones$ Battlefield | ValidCard$ Land | ManaAmount$ GE2 | ManaReplacement$ ProduceC | Description$ If a land is tapped for mana, it produces {C} instead of any other type and amount. +R:Event$ ProduceMana | ActiveZones$ Battlefield | ValidCard$ Land | ManaAmount$ GE2 | ManaReplacement$ ProduceC | Description$ If a land is tapped for two or more mana, it produces {C} instead of any other type and amount. SVar:ProduceC:Any->C S:Mode$ RaiseCost | Activator$ Player | Type$ Spell | Amount$ X | AffectedAmount$ True | Description$ Each spell a player casts costs {1} more to cast for each other spell that player has cast this turn. SVar:X:Count$ThisTurnCast_Card.YouCtrl -SVar:RemAIDeck:True SVar:NonStackingEffect:True SVar:Picture:http://www.wizards.com/global/images/magic/general/damping_sphere.jpg Oracle:If a land is tapped for two or more mana, it produces {C} instead of any other type and amount.\nEach spell a player casts costs {1} more to cast for each other spell that player has cast this turn. diff --git a/forge-gui/res/cardsfolder/d/dance_of_the_dead.txt b/forge-gui/res/cardsfolder/d/dance_of_the_dead.txt index 7985243fe70..0d4bb4497fa 100644 --- a/forge-gui/res/cardsfolder/d/dance_of_the_dead.txt +++ b/forge-gui/res/cardsfolder/d/dance_of_the_dead.txt @@ -3,7 +3,7 @@ ManaCost:1 B Types:Enchantment Aura K:Enchant creature card in a graveyard A:SP$ Attach | Cost$ 1 B | ValidTgts$ Creature | TgtZone$ Graveyard | AILogic$ Reanimate -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigReanimate | TriggerDescription$ When CARDNAME enters the battlefield, if it's on the battlefield, it loses "enchant creature card in a graveyard" and gains "enchant creature put onto the battlefield with CARDNAME." Put enchanted creature card onto the battlefield under your control and attach CARDNAME to it. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigReanimate | TriggerDescription$ When CARDNAME enters the battlefield, if it's on the battlefield, it loses "enchant creature card in a graveyard" and gains "enchant creature put onto the battlefield with CARDNAME." Put enchanted creature card onto the battlefield tapped under your control and attach CARDNAME to it. SVar:TrigReanimate:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | Defined$ Enchanted | RememberChanged$ True | GainControl$ True | Tapped$ True | SubAbility$ DBAnimate SVar:DBAnimate:DB$ Animate | Defined$ Self | OverwriteSpells$ True | Abilities$ NewAttach | Keywords$ Enchant creature put onto the battlefield with CARDNAME | RemoveKeywords$ Enchant creature card in a graveyard | Permanent$ True | SubAbility$ DBAttach SVar:DBAttach:DB$ Attach | Defined$ Remembered diff --git a/forge-gui/res/cardsfolder/d/dance_with_devils.txt b/forge-gui/res/cardsfolder/d/dance_with_devils.txt index dfc914fd2e6..8070f8c2d12 100644 --- a/forge-gui/res/cardsfolder/d/dance_with_devils.txt +++ b/forge-gui/res/cardsfolder/d/dance_with_devils.txt @@ -1,8 +1,8 @@ Name:Dance with Devils ManaCost:3 R Types:Instant -A:SP$ Token | Cost$ 3 R | TokenAmount$ 2 | TokenName$ Devil | TokenTypes$ Creature,Devil | TokenOwner$ You | TokenColors$ Red | TokenPower$ 1 | TokenToughness$ 1 | TokenTriggers$ DiesTrigger | TokenSVars$ DevilTrigDamage | SpellDescription$ Create two 1/1 red Devil creature tokens. They have "When this creature dies, it deals 1 damage to target creature or player." -SVar:DiesTrigger:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ DevilTrigDamage | TriggerController$ TriggeredCardController | TriggerDescription$ When this creature dies, it deals 1 damage to target creature or player. -SVar:DevilTrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 +A:SP$ Token | Cost$ 3 R | TokenAmount$ 2 | TokenName$ Devil | TokenTypes$ Creature,Devil | TokenOwner$ You | TokenColors$ Red | TokenPower$ 1 | TokenToughness$ 1 | TokenTriggers$ DiesTrigger | TokenSVars$ DevilTrigDamage | SpellDescription$ Create two 1/1 red Devil creature tokens. They have "When this creature dies, it deals 1 damage to any target." +SVar:DiesTrigger:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ DevilTrigDamage | TriggerController$ TriggeredCardController | TriggerDescription$ When this creature dies, it deals 1 damage to any target. +SVar:DevilTrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/dance_with_devils.jpg -Oracle:Create two 1/1 red Devil creature tokens. They have "When this creature dies, it deals 1 damage to target creature or player." +Oracle:Create two 1/1 red Devil creature tokens. They have "When this creature dies, it deals 1 damage to any target." diff --git a/forge-gui/res/cardsfolder/d/darigaazs_charm.txt b/forge-gui/res/cardsfolder/d/darigaazs_charm.txt index a15b7aed7e1..9dd25d37159 100644 --- a/forge-gui/res/cardsfolder/d/darigaazs_charm.txt +++ b/forge-gui/res/cardsfolder/d/darigaazs_charm.txt @@ -3,7 +3,7 @@ ManaCost:B R G Types:Instant A:SP$ Charm | Cost$ B R G | Choices$ DBChangeZone,DBDmg,DBPump SVar:DBChangeZone:DB$ ChangeZone | TgtPrompt$ Choose target creature card in your graveyard | ValidTgts$ Creature.YouOwn | Origin$ Graveyard | Destination$ Hand | SpellDescription$ Return target creature card from your graveyard to your hand. -SVar:DBDmg:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. +SVar:DBDmg:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. SVar:DBPump:DB$ Pump | ValidTgts$ Creature | NumAtt$ +3 | NumDef$ +3 | TgtPrompt$ Select target creature | SpellDescription$ Target creature gets +3/+3 until end of turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/darigaazs_charm.jpg -Oracle:Choose one —\n• Return target creature card from your graveyard to your hand.\n• Darigaaz's Charm deals 3 damage to target creature or player.\n• Target creature gets +3/+3 until end of turn. +Oracle:Choose one —\n• Return target creature card from your graveyard to your hand.\n• Darigaaz's Charm deals 3 damage to any target.\n• Target creature gets +3/+3 until end of turn. diff --git a/forge-gui/res/cardsfolder/d/dark_dweller_oracle.txt b/forge-gui/res/cardsfolder/d/dark_dweller_oracle.txt new file mode 100644 index 00000000000..5d2d92c1994 --- /dev/null +++ b/forge-gui/res/cardsfolder/d/dark_dweller_oracle.txt @@ -0,0 +1,9 @@ +Name:Dark-Dweller Oracle +ManaCost:1 R +Types:Creature Goblin Shaman +A:AB$ Mill | Cost$ 1 Sac<1/Creature> | NumCards$ 1 | Destination$ Exile | Defined$ You | RememberMilled$ True | SubAbility$ DBEffect | SpellDescription$ Exile the top card of your library. You may play that card this turn. +SVar:DBEffect:DB$ Effect | StaticAbilities$ EffSModeContinuous | ExileOnMoved$ Exile | RememberObjects$ Remembered | SubAbility$ DBCleanup +SVar:EffSModeContinuous:Mode$ Continuous | EffectZone$ Command | Affected$ Card.IsRemembered | MayPlay$ True | AffectedZone$ Exile | Description$ You may play that card this turn. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:{1}, Sacrifice a creature: Exile the top card of your library. You may play that card this turn. (You still pay its costs. You can play a land this way only if you have an available land play remaining.) +PT:2/2 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/d/dark_nourishment.txt b/forge-gui/res/cardsfolder/d/dark_nourishment.txt index a105f3f8897..7d392c1d702 100644 --- a/forge-gui/res/cardsfolder/d/dark_nourishment.txt +++ b/forge-gui/res/cardsfolder/d/dark_nourishment.txt @@ -1,7 +1,7 @@ Name:Dark Nourishment ManaCost:4 B Types:Instant -A:SP$ DealDamage | Cost$ 4 B | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SubAbility$ DBDrain | SpellDescription$ CARDNAME deals 3 damage to target creature or player. You gain 3 life. +A:SP$ DealDamage | Cost$ 4 B | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SubAbility$ DBDrain | SpellDescription$ CARDNAME deals 3 damage to any target. You gain 3 life. SVar:DBDrain:DB$GainLife | LifeAmount$ 3 SVar:Picture:http://www.wizards.com/global/images/magic/general/dark_nourishment.jpg -Oracle:Dark Nourishment deals 3 damage to target creature or player. You gain 3 life. \ No newline at end of file +Oracle:Dark Nourishment deals 3 damage to any target. You gain 3 life. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/d/darkblast.txt b/forge-gui/res/cardsfolder/d/darkblast.txt index b946e14d231..0edc1f1e7e5 100644 --- a/forge-gui/res/cardsfolder/d/darkblast.txt +++ b/forge-gui/res/cardsfolder/d/darkblast.txt @@ -2,6 +2,6 @@ Name:Darkblast ManaCost:B Types:Instant A:SP$ Pump | Cost$ B | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ -1 | NumDef$ -1 | IsCurse$ True | SpellDescription$ Target creature gets -1/-1 until end of turn. -K:Dredge 3 +K:Dredge:3 SVar:Picture:http://www.wizards.com/global/images/magic/general/darkblast.jpg Oracle:Target creature gets -1/-1 until end of turn.\nDredge 3 (If you would draw a card, instead you may put exactly three cards from the top of your library into your graveyard. If you do, return this card from your graveyard to your hand. Otherwise, draw a card.) diff --git a/forge-gui/res/cardsfolder/d/darksteel_garrison.txt b/forge-gui/res/cardsfolder/d/darksteel_garrison.txt index 2f7a40a39f7..4f119d1b296 100644 --- a/forge-gui/res/cardsfolder/d/darksteel_garrison.txt +++ b/forge-gui/res/cardsfolder/d/darksteel_garrison.txt @@ -1,7 +1,7 @@ Name:Darksteel Garrison ManaCost:2 Types:Artifact Fortification -K:Fortify 3 +K:Fortify:3 S:Mode$ Continuous | Affected$ Land.FortifiedBy | AddKeyword$ Indestructible | Description$ Fortified land has indestructible. T:Mode$ Taps | ValidCard$ Land.FortifiedBy | Execute$ TrigPump | TriggerDescription$ Whenever fortified land becomes tapped, target creature gets +1/+1 until end of turn. SVar:TrigPump:DB$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ 1 | NumDef$ 1 diff --git a/forge-gui/res/cardsfolder/d/daru_healer.txt b/forge-gui/res/cardsfolder/d/daru_healer.txt index 0def1429ac5..4b30657a27a 100644 --- a/forge-gui/res/cardsfolder/d/daru_healer.txt +++ b/forge-gui/res/cardsfolder/d/daru_healer.txt @@ -2,7 +2,7 @@ Name:Daru Healer ManaCost:2 W Types:Creature Human Cleric PT:1/2 -A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to any target this turn. K:Morph:W SVar:Picture:http://www.wizards.com/global/images/magic/general/daru_healer.jpg -Oracle:{T}: Prevent the next 1 damage that would be dealt to target creature or player this turn.\nMorph {W} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.) +Oracle:{T}: Prevent the next 1 damage that would be dealt to any target this turn.\nMorph {W} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.) diff --git a/forge-gui/res/cardsfolder/d/davenant_healer.txt b/forge-gui/res/cardsfolder/d/davenant_healer.txt index a894063fc0b..fe7ad7a9d56 100644 --- a/forge-gui/res/cardsfolder/d/davenant_healer.txt +++ b/forge-gui/res/cardsfolder/d/davenant_healer.txt @@ -3,6 +3,6 @@ ManaCost:1 W W Types:Creature Human Cleric Archer PT:1/2 A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature.attacking,Creature.blocking | TgtPrompt$ Select target attacking or blocking creature | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target attacking or blocking creature. -A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to any target this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/davenant_healer.jpg -Oracle:{T}: D'Avenant Healer deals 1 damage to target attacking or blocking creature.\n{T}: Prevent the next 1 damage that would be dealt to target creature or player this turn. +Oracle:{T}: D'Avenant Healer deals 1 damage to target attacking or blocking creature.\n{T}: Prevent the next 1 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/d/dawnfluke.txt b/forge-gui/res/cardsfolder/d/dawnfluke.txt index 499afa96a30..d2f7bd7b084 100644 --- a/forge-gui/res/cardsfolder/d/dawnfluke.txt +++ b/forge-gui/res/cardsfolder/d/dawnfluke.txt @@ -4,9 +4,9 @@ Types:Creature Elemental PT:0/3 K:Flash K:Evoke:W -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPrevent | TriggerDescription$ When CARDNAME enters the battlefield, prevent the next 3 damage that would be dealt to target creature or player this turn. -SVar:TrigPrevent:DB$ PreventDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 3 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPrevent | TriggerDescription$ When CARDNAME enters the battlefield, prevent the next 3 damage that would be dealt to any target this turn. +SVar:TrigPrevent:DB$ PreventDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 3 SVar:RemAIDeck:True SVar:AmbushAI:True SVar:Picture:http://www.wizards.com/global/images/magic/general/dawnfluke.jpg -Oracle:Flash\nWhen Dawnfluke enters the battlefield, prevent the next 3 damage that would be dealt to target creature or player this turn.\nEvoke {W} (You may cast this spell for its evoke cost. If you do, it's sacrificed when it enters the battlefield.) +Oracle:Flash\nWhen Dawnfluke enters the battlefield, prevent the next 3 damage that would be dealt to any target this turn.\nEvoke {W} (You may cast this spell for its evoke cost. If you do, it's sacrificed when it enters the battlefield.) diff --git a/forge-gui/res/cardsfolder/d/daybreak_chaplain.txt b/forge-gui/res/cardsfolder/d/daybreak_chaplain.txt new file mode 100644 index 00000000000..b28d3dadfda --- /dev/null +++ b/forge-gui/res/cardsfolder/d/daybreak_chaplain.txt @@ -0,0 +1,6 @@ +Name:Daybreak Chaplain +ManaCost:1 W +Types:Creature Human Cleric +K:Lifelink +Oracle:Lifelink (Damage dealt by this creature also causes you to gain that much life.) +PT:1/3 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/d/deadapult.txt b/forge-gui/res/cardsfolder/d/deadapult.txt index 87814c1749b..9963787fe32 100644 --- a/forge-gui/res/cardsfolder/d/deadapult.txt +++ b/forge-gui/res/cardsfolder/d/deadapult.txt @@ -1,8 +1,8 @@ Name:Deadapult ManaCost:2 R Types:Enchantment -A:AB$ DealDamage | Cost$ R Sac<1/Zombie> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:AB$ DealDamage | Cost$ R Sac<1/Zombie> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:NonStackingEffect:True SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/deadapult.jpg -Oracle:{R}, Sacrifice a Zombie: Deadapult deals 2 damage to target creature or player. +Oracle:{R}, Sacrifice a Zombie: Deadapult deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/d/deadly_allure.txt b/forge-gui/res/cardsfolder/d/deadly_allure.txt index 3d5c5c1e979..f9f4259d7e3 100644 --- a/forge-gui/res/cardsfolder/d/deadly_allure.txt +++ b/forge-gui/res/cardsfolder/d/deadly_allure.txt @@ -1,7 +1,7 @@ Name:Deadly Allure ManaCost:B Types:Sorcery -K:Flashback G +K:Flashback:G A:SP$ Pump | Cost$ B | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ Deathtouch & HIDDEN CARDNAME must be blocked if able. | SpellDescription$ Target creature gains deathtouch until end of turn and must be blocked this turn if able. SVar:Picture:http://www.wizards.com/global/images/magic/general/deadly_allure.jpg Oracle:Target creature gains deathtouch until end of turn and must be blocked this turn if able.\nFlashback {G} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/d/death_baron.txt b/forge-gui/res/cardsfolder/d/death_baron.txt index ed6c5a42a6e..c11d991a985 100644 --- a/forge-gui/res/cardsfolder/d/death_baron.txt +++ b/forge-gui/res/cardsfolder/d/death_baron.txt @@ -4,5 +4,6 @@ Types:Creature Zombie Wizard PT:2/2 S:Mode$ Continuous | Affected$ Creature.Zombie+Other+YouCtrl,Creature.Skeleton+YouCtrl | AddPower$ 1 | AddToughness$ 1 | AddKeyword$ Deathtouch | Description$ Skeleton creatures you control and other Zombie creatures you control get +1/+1 and have deathtouch. SVar:PlayMain1:TRUE +DeckHints:Type$Skeleton|Zombie SVar:Picture:http://www.wizards.com/global/images/magic/general/death_baron.jpg Oracle:Skeleton creatures you control and other Zombie creatures you control get +1/+1 and have deathtouch. diff --git a/forge-gui/res/cardsfolder/d/death_grasp.txt b/forge-gui/res/cardsfolder/d/death_grasp.txt index 12cc63c681e..0637a6fc7c3 100644 --- a/forge-gui/res/cardsfolder/d/death_grasp.txt +++ b/forge-gui/res/cardsfolder/d/death_grasp.txt @@ -1,8 +1,8 @@ Name:Death Grasp ManaCost:X W B Types:Sorcery -A:SP$ DealDamage | Cost$ X W B | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | SubAbility$ DBGainLife | References$ X | SpellDescription$ CARDNAME deals X damage to target creature or player. You gain X life. +A:SP$ DealDamage | Cost$ X W B | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | SubAbility$ DBGainLife | References$ X | SpellDescription$ CARDNAME deals X damage to any target. You gain X life. SVar:DBGainLife:DB$GainLife | LifeAmount$ X | References$ X SVar:X:Count$xPaid SVar:Picture:http://www.wizards.com/global/images/magic/general/death_grasp.jpg -Oracle:Death Grasp deals X damage to target creature or player. You gain X life. +Oracle:Death Grasp deals X damage to any target. You gain X life. diff --git a/forge-gui/res/cardsfolder/d/death_spark.txt b/forge-gui/res/cardsfolder/d/death_spark.txt index c451da5718f..7e3e5b77af0 100644 --- a/forge-gui/res/cardsfolder/d/death_spark.txt +++ b/forge-gui/res/cardsfolder/d/death_spark.txt @@ -1,9 +1,9 @@ Name:Death Spark ManaCost:R Types:Instant -A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Graveyard | IsPresent$ Creature.YouOwn+DirectlyAbove | PresentZone$ Graveyard | PresentCompare$ EQ1 | Execute$ TrigReturn | OptionalDecider$ You | TriggerDescription$ At the beginning of your upkeep, if CARDNAME is in your graveyard with a creature card directly above it, you may pay {1}. If you do, return CARDNAME to your hand. SVar:TrigReturn:AB$ChangeZone | Cost$ 1 | Defined$ Self | Origin$ Graveyard | Destination$ Hand SVar:NeedsOrderedGraveyard:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/death_spark.jpg -Oracle:Death Spark deals 1 damage to target creature or player.\nAt the beginning of your upkeep, if Death Spark is in your graveyard with a creature card directly above it, you may pay {1}. If you do, return Death Spark to your hand. +Oracle:Death Spark deals 1 damage to any target.\nAt the beginning of your upkeep, if Death Spark is in your graveyard with a creature card directly above it, you may pay {1}. If you do, return Death Spark to your hand. diff --git a/forge-gui/res/cardsfolder/d/deathbringer_thoctar.txt b/forge-gui/res/cardsfolder/d/deathbringer_thoctar.txt index 2cc638dd27d..dcc635d641a 100644 --- a/forge-gui/res/cardsfolder/d/deathbringer_thoctar.txt +++ b/forge-gui/res/cardsfolder/d/deathbringer_thoctar.txt @@ -3,7 +3,7 @@ ManaCost:4 B R Types:Creature Zombie Beast PT:3/3 T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.Other | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigPutCounter | TriggerDescription$ Whenever another creature dies, you may put a +1/+1 counter on CARDNAME. -A:AB$ DealDamage | Cost$ SubCounter<1/P1P1> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ SubCounter<1/P1P1> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:TrigPutCounter:DB$PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 | ConditionPresent$ Card.StrictlySelf SVar:Picture:http://www.wizards.com/global/images/magic/general/deathbringer_thoctar.jpg -Oracle:Whenever another creature dies, you may put a +1/+1 counter on Deathbringer Thoctar.\nRemove a +1/+1 counter from Deathbringer Thoctar: Deathbringer Thoctar deals 1 damage to target creature or player. +Oracle:Whenever another creature dies, you may put a +1/+1 counter on Deathbringer Thoctar.\nRemove a +1/+1 counter from Deathbringer Thoctar: Deathbringer Thoctar deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/d/deathforge_shaman.txt b/forge-gui/res/cardsfolder/d/deathforge_shaman.txt index 5d0a17a4c28..0e9625286a3 100644 --- a/forge-gui/res/cardsfolder/d/deathforge_shaman.txt +++ b/forge-gui/res/cardsfolder/d/deathforge_shaman.txt @@ -3,8 +3,8 @@ ManaCost:4 R Types:Creature Ogre Shaman PT:4/3 K:Multikicker:R -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals damage to target player equal to twice the number of times it was kicked. -SVar:TrigDamage:DB$DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ X | References$ X +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals damage to target player or planeswalker equal to twice the number of times it was kicked. +SVar:TrigDamage:DB$DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ X | References$ X SVar:X:Count$TimesKicked/Times.2 SVar:Picture:http://www.wizards.com/global/images/magic/general/Deathforge_Shaman.jpg -Oracle:Multikicker {R} (You may pay an additional {R} any number of times as you cast this spell.)\nWhen Deathforge Shaman enters the battlefield, it deals damage to target player equal to twice the number of times it was kicked. +Oracle:Multikicker {R} (You may pay an additional {R} any number of times as you cast this spell.)\nWhen Deathforge Shaman enters the battlefield, it deals damage to target player or planeswalker equal to twice the number of times it was kicked. diff --git a/forge-gui/res/cardsfolder/d/declare_dominance.txt b/forge-gui/res/cardsfolder/d/declare_dominance.txt new file mode 100644 index 00000000000..5fcea646bfb --- /dev/null +++ b/forge-gui/res/cardsfolder/d/declare_dominance.txt @@ -0,0 +1,5 @@ +Name:Declare Dominance +ManaCost:3 G G +Types:Sorcery +A:SP$ Pump | Cost$ 3 G G | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +3 | NumDef$ +3 | KW$ HIDDEN All creatures able to block CARDNAME do so. | SpellDescription$ Target creature gets +3/+3 until end of turn. All creatures able to block it this turn do so. +Oracle:Target creature gets +3/+3 until end of turn. All creatures able to block it this turn do so. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/d/decorated_champion.txt b/forge-gui/res/cardsfolder/d/decorated_champion.txt new file mode 100644 index 00000000000..00c7d411287 --- /dev/null +++ b/forge-gui/res/cardsfolder/d/decorated_champion.txt @@ -0,0 +1,8 @@ +Name:Decorated Champion +ManaCost:1 G +Types:Creature Elf Warrior +PT:2/2 +T:Mode$ ChangesZone | ValidCard$ Warrior.Other+YourTeamCtrl | Origin$ Any | Destination$ Battlefield | Execute$ TrigPutCounter | TriggerZones$ Battlefield | Secondary$ True | TriggerDescription$ Whenever another Warrior enters the battlefield under your team's control, put a +1/+1 counter on CARDNAME. +SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 +SVar:BuffedBy:Warrior +Oracle:Whenever another Warrior enters the battlefield under your team's control, put a +1/+1 counter on Decorated Champion. diff --git a/forge-gui/res/cardsfolder/d/deep_analysis.txt b/forge-gui/res/cardsfolder/d/deep_analysis.txt index 3fcaad41d0c..47bfa317aae 100644 --- a/forge-gui/res/cardsfolder/d/deep_analysis.txt +++ b/forge-gui/res/cardsfolder/d/deep_analysis.txt @@ -1,7 +1,7 @@ Name:Deep Analysis ManaCost:3 U Types:Sorcery -K:Flashback 1 U PayLife<3> +K:Flashback:1 U PayLife<3> A:SP$ Draw | Cost$ 3 U | ValidTgts$ Player | TgtPrompt$ Select target player | NumCards$ 2 | SpellDescription$ Target player draws two cards. SVar:Picture:http://www.wizards.com/global/images/magic/general/deep_analysis.jpg Oracle:Target player draws two cards.\nFlashback—{1}{U}, Pay 3 life. (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/d/deep_freeze.txt b/forge-gui/res/cardsfolder/d/deep_freeze.txt index 74e98647094..deca92b4481 100644 --- a/forge-gui/res/cardsfolder/d/deep_freeze.txt +++ b/forge-gui/res/cardsfolder/d/deep_freeze.txt @@ -5,5 +5,4 @@ K:Enchant creature A:SP$ Attach | Cost$ 2 U | ValidTgts$ Creature | AILogic$ Curse S:Mode$ Continuous | Affected$ Card.EnchantedBy | SetPower$ 0 | SetToughness$ 4 | AddType$ Wall | AddColor$ Blue | RemoveAllAbilities$ True | AddKeyword$ Defender | Description$ Enchanted creature has base power and toughness 0/4, has defender, loses all other abilities, and is a blue Wall in addition to its other colors and types. SVar:NonStackingAttachEffect:True -SVar:RemAIDeck:True Oracle:Enchant creature\nEnchanted creature has base power and toughness 0/4, has defender, loses all other abilities, and is a blue Wall in addition to its other colors and types. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/d/deep_reconnaissance.txt b/forge-gui/res/cardsfolder/d/deep_reconnaissance.txt index 4b7255690fb..a44a09f7244 100644 --- a/forge-gui/res/cardsfolder/d/deep_reconnaissance.txt +++ b/forge-gui/res/cardsfolder/d/deep_reconnaissance.txt @@ -1,7 +1,7 @@ Name:Deep Reconnaissance ManaCost:2 G Types:Sorcery -K:Flashback 4 G +K:Flashback:4 G A:SP$ ChangeZone | Cost$ 2 G | Origin$ Library | Destination$ Battlefield | ChangeType$ Land.Basic | ChangeNum$ 1 | Tapped$ True | SpellDescription$ Search your library for a basic land card and put that card onto the battlefield tapped. Then shuffle your library. SVar:Picture:http://www.wizards.com/global/images/magic/general/deep_reconnaissance.jpg Oracle:Search your library for a basic land card and put that card onto the battlefield tapped. Then shuffle your library.\nFlashback {4}{G} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/d/deepwood_elder.txt b/forge-gui/res/cardsfolder/d/deepwood_elder.txt index b1e7562b464..cca7bb4a639 100644 --- a/forge-gui/res/cardsfolder/d/deepwood_elder.txt +++ b/forge-gui/res/cardsfolder/d/deepwood_elder.txt @@ -2,7 +2,7 @@ Name:Deepwood Elder ManaCost:G G Types:Creature Dryad Spellshaper PT:2/2 -A:AB$ Animate | Cost$ X G G T Discard<1/Card> | TargetMin$ 0 | TargetMax$ Maxtgt | ValidTgts$ Land | TgtPrompt$ Select target land to become forest | Types$ Forest | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | RemoveAllAbilities$ True | References$ MaxTgt | SpellDescription$ X target lands become Forests until end of turn. +A:AB$ Animate | Cost$ X G G T Discard<1/Card> | TargetMin$ 0 | TargetMax$ Maxtgt | ValidTgts$ Land | TgtPrompt$ Select target land to become forest | Types$ Forest | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True | References$ MaxTgt | SpellDescription$ X target lands become Forests until end of turn. SVar:X:TargetedObjects$Amount SVar:RemAIDeck:True SVar:Maxtgt:Count$Valid Land diff --git a/forge-gui/res/cardsfolder/d/defender_en_vec.txt b/forge-gui/res/cardsfolder/d/defender_en_vec.txt index e6e5655455a..8992229c912 100644 --- a/forge-gui/res/cardsfolder/d/defender_en_vec.txt +++ b/forge-gui/res/cardsfolder/d/defender_en_vec.txt @@ -3,6 +3,6 @@ ManaCost:3 W Types:Creature Human Cleric PT:2/4 K:Fading:4 -A:AB$ PreventDamage | Cost$ SubCounter<1/FADE> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 2 | SpellDescription$ Prevent the next 2 damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ SubCounter<1/FADE> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 2 | SpellDescription$ Prevent the next 2 damage that would be dealt to any target this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/defender_en_vec.jpg -Oracle:Fading 4 (This creature enters the battlefield with four fade counters on it. At the beginning of your upkeep, remove a fade counter from it. If you can't, sacrifice it.)\nRemove a fade counter from Defender en-Vec: Prevent the next 2 damage that would be dealt to target creature or player this turn. +Oracle:Fading 4 (This creature enters the battlefield with four fade counters on it. At the beginning of your upkeep, remove a fade counter from it. If you can't, sacrifice it.)\nRemove a fade counter from Defender en-Vec: Prevent the next 2 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/d/defense_grid.txt b/forge-gui/res/cardsfolder/d/defense_grid.txt index c93603e4e31..81dfc3151cd 100644 --- a/forge-gui/res/cardsfolder/d/defense_grid.txt +++ b/forge-gui/res/cardsfolder/d/defense_grid.txt @@ -1,8 +1,7 @@ Name:Defense Grid ManaCost:2 Types:Artifact -S:Mode$ RaiseCost | Activator$ You | Type$ Spell | Amount$ 3 | Condition$ NotPlayerTurn | Description$ Each spell costs {3} more to cast except during its controller's turn. -S:Mode$ RaiseCost | Activator$ Opponent | Type$ Spell | Amount$ 3 | Condition$ PlayerTurn +S:Mode$ RaiseCost | Activator$ Player | Type$ Spell | Amount$ 3 | NonActivatorTurn$ True | Description$ Each spell costs {3} more to cast except during its controller's turn. SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/defense_grid.jpg Oracle:Each spell costs {3} more to cast except during its controller's turn. diff --git a/forge-gui/res/cardsfolder/d/defiant_greatmaw.txt b/forge-gui/res/cardsfolder/d/defiant_greatmaw.txt index ff594980ec4..d8bb7ad3ec7 100644 --- a/forge-gui/res/cardsfolder/d/defiant_greatmaw.txt +++ b/forge-gui/res/cardsfolder/d/defiant_greatmaw.txt @@ -4,6 +4,6 @@ Types:Creature Hippo PT:4/5 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPutCounter | TriggerDescription$ When CARDNAME enters the battlefield, put two -1/-1 counters on target creature you control. SVar:TrigPutCounter:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature | CounterType$ M1M1 | CounterNum$ 2 -T:Mode$ CounterAddedOnce | ValidCard$ Creature.Self | ValidSource$ Card.YouCtrl | CounterType$ M1M1 | TriggerZones$ Battlefield | Execute$ RemoveCounter | TriggerDescription$ Whenever you put one or more -1/-1 counters on CARDNAME, remove a -1/-1 counter from another target creature you control. +T:Mode$ CounterAddedOnce | ValidCard$ Creature.Self | ValidSource$ You | CounterType$ M1M1 | TriggerZones$ Battlefield | Execute$ RemoveCounter | TriggerDescription$ Whenever you put one or more -1/-1 counters on CARDNAME, remove a -1/-1 counter from another target creature you control. SVar:RemoveCounter:DB$ RemoveCounter | ValidTgts$ Creature.YouCtrl+Other | AITgts$ Creature.counters_GE1_M1M1 | TgtPrompt$ Select another target creature you control | CounterType$ M1M1 | CounterNum$ 1 Oracle:When Defiant Greatmaw enters the battlefield, put two -1/-1 counters on target creature you control.\nWhenever you put one or more -1/-1 counters on Defiant Greatmaw, remove a -1/-1 counter from another target creature you control. diff --git a/forge-gui/res/cardsfolder/d/defy_gravity.txt b/forge-gui/res/cardsfolder/d/defy_gravity.txt index 302fd9c6b43..92c9f423003 100644 --- a/forge-gui/res/cardsfolder/d/defy_gravity.txt +++ b/forge-gui/res/cardsfolder/d/defy_gravity.txt @@ -1,7 +1,7 @@ Name:Defy Gravity ManaCost:U Types:Instant -K:Flashback U +K:Flashback:U A:SP$ Pump | Cost$ U | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ Flying | SpellDescription$ Target creature gains flying until end of turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/defy_gravity.jpg Oracle:Target creature gains flying until end of turn.\nFlashback {U} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/d/demanding_dragon.txt b/forge-gui/res/cardsfolder/d/demanding_dragon.txt new file mode 100644 index 00000000000..27ead7838b7 --- /dev/null +++ b/forge-gui/res/cardsfolder/d/demanding_dragon.txt @@ -0,0 +1,8 @@ +Name:Demanding Dragon +ManaCost:3 R R +Types:Creature Dragon +K:Flying +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 5 damage to target opponent unless that player sacrifices a creature. +SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | NumDmg$ 5 | UnlessCost$ Sac<1/Creature> | UnlessPayer$ Targeted | UnlessAI$ LifeLE5 +Oracle:Flying\nWhen Demanding Dragon enters the battlefield, it deals 5 damage to target opponent unless that player sacrifices a creature. +PT:5/5 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/d/dematerialize.txt b/forge-gui/res/cardsfolder/d/dematerialize.txt index ef0bb52a59b..62e316d3f8e 100644 --- a/forge-gui/res/cardsfolder/d/dematerialize.txt +++ b/forge-gui/res/cardsfolder/d/dematerialize.txt @@ -1,7 +1,7 @@ Name:Dematerialize ManaCost:3 U Types:Sorcery -K:Flashback 5 U U +K:Flashback:5 U U A:SP$ ChangeZone | Cost$ 3 U | ValidTgts$ Permanent | TgtPrompt$ Select target permanent | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return target permanent to its owner's hand. SVar:Picture:http://www.wizards.com/global/images/magic/general/dematerialize.jpg Oracle:Return target permanent to its owner's hand.\nFlashback {5}{U}{U} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/d/demon_of_catastrophes.txt b/forge-gui/res/cardsfolder/d/demon_of_catastrophes.txt new file mode 100644 index 00000000000..46e66c30d4e --- /dev/null +++ b/forge-gui/res/cardsfolder/d/demon_of_catastrophes.txt @@ -0,0 +1,8 @@ +Name:Demon of Catastrophes +ManaCost:2 B B +Types:Creature Demon +PT:6/6 +K:Flying +K:Trample +SVar:FullCost:2 B B Sac<1/Creature> +Oracle:As an additional cost to cast this spell, sacrifice a creature\n Flying, trample \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/d/demonfire.txt b/forge-gui/res/cardsfolder/d/demonfire.txt index f43d14f1078..4fa29cc4c30 100644 --- a/forge-gui/res/cardsfolder/d/demonfire.txt +++ b/forge-gui/res/cardsfolder/d/demonfire.txt @@ -1,11 +1,11 @@ Name:Demonfire ManaCost:X R Types:Sorcery -A:SP$ DealDamage | Cost$ X R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 | RememberDamaged$ True | ReplaceDyingDefined$ Remembered | SubAbility$ DBDemonfire | References$ X,Y | SpellDescription$ CARDNAME deals X damage to target creature or player. If a creature dealt damage this way would die this turn, exile it instead. +A:SP$ DealDamage | Cost$ X R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 | RememberDamaged$ True | ReplaceDyingDefined$ Remembered | SubAbility$ DBDemonfire | References$ X,Y | SpellDescription$ CARDNAME deals X damage to any target. If a creature dealt damage this way would die this turn, exile it instead. SVar:DBDemonfire:DB$ DealDamage | Defined$ Targeted | NumDmg$ X | NoPrevention$ True | ConditionCheckSVar$ Y | References$ X,Y | ConditionSVarCompare$ EQ0 | RememberDamaged$ True | ReplaceDyingDefined$ Remembered | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True S:Mode$ Continuous | Affected$ Self | AffectedZone$ Stack | EffectZone$ All | CharacteristicDefining$ True | AddHiddenKeyword$ CARDNAME can't be countered. | CheckSVar$ Y | SVarCompare$ EQ0 | Description$ Hellbent — If you have no cards in hand, CARDNAME can't be countered by spells or abilities and the damage can't be prevented. SVar:X:Count$xPaid SVar:Y:Count$InYourHand SVar:Picture:http://www.wizards.com/global/images/magic/general/demonfire.jpg -Oracle:Demonfire deals X damage to target creature or player. If a creature dealt damage this way would die this turn, exile it instead.\nHellbent — If you have no cards in hand, Demonfire can't be countered by spells or abilities and the damage can't be prevented. +Oracle:Demonfire deals X damage to any target. If a creature dealt damage this way would die this turn, exile it instead.\nHellbent — If you have no cards in hand, Demonfire can't be countered by spells or abilities and the damage can't be prevented. diff --git a/forge-gui/res/cardsfolder/d/demonic_pact.txt b/forge-gui/res/cardsfolder/d/demonic_pact.txt index 96cb6b84155..e24884a3c68 100644 --- a/forge-gui/res/cardsfolder/d/demonic_pact.txt +++ b/forge-gui/res/cardsfolder/d/demonic_pact.txt @@ -3,7 +3,7 @@ ManaCost:2 B B Types:Enchantment T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigCharm | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your upkeep, ABILITY SVar:TrigCharm:DB$ Charm | Choices$ DrainPact,DiscardPact,DrawPact,DeathPact | ChoiceRestriction$ NotRemembered | RememberChoice$ True | CharmNum$ 1 -SVar:DrainPact:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 4 | SubAbility$ DBGainLife | ChoiceName$ DrainPact | SpellDescription$ CARDNAME deals 4 damage to target creature or player and you gain 4 life. +SVar:DrainPact:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 4 | SubAbility$ DBGainLife | ChoiceName$ DrainPact | SpellDescription$ CARDNAME deals 4 damage to any target and you gain 4 life. SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 4 SVar:DiscardPact:DB$ Discard | ValidTgts$ Player | NumCards$ 2 | Mode$ TgtChoose | ChoiceName$ DiscardPact | SpellDescription$ Target player discards two cards. SVar:DrawPact:DB$ Draw | NumCards$ 2 | ChoiceName$ DrawPact | SpellDescription$ Draw two cards. @@ -13,4 +13,4 @@ T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.S SVar:ClearRemembered:DB$ Cleanup | ClearRemembered$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/demonic_pact.jpg -Oracle:At the beginning of your upkeep, choose one that hasn't been chosen —\n• Demonic Pact deals 4 damage to target creature or player and you gain 4 life.\n• Target opponent discards two cards.\n• Draw two cards.\n• You lose the game. +Oracle:At the beginning of your upkeep, choose one that hasn't been chosen —\n• Demonic Pact deals 4 damage to any target and you gain 4 life.\n• Target opponent discards two cards.\n• Draw two cards.\n• You lose the game. diff --git a/forge-gui/res/cardsfolder/d/departed_deckhand.txt b/forge-gui/res/cardsfolder/d/departed_deckhand.txt new file mode 100644 index 00000000000..87582c92c73 --- /dev/null +++ b/forge-gui/res/cardsfolder/d/departed_deckhand.txt @@ -0,0 +1,11 @@ +Name:Departed Deckhand +ManaCost:1 U +Types:Creature Spirit Pirate +T:Mode$ BecomesTarget | ValidTarget$ Card.Self | SourceType$ Spell | TriggerZones$ Battlefield | Execute$ TrigSac | TriggerDescription$ When CARDNAME becomes the target of a spell, sacrifice it. +SVar:TrigSac:DB$ Sacrifice | ValidCard$ Card.Self +S:Mode$ CantBlockBy | ValidAttacker$ Card.Self | ValidBlocker$ Creature.nonSpirit | Description$ CARDNAME can't be blocked except by Spirits. +A:AB$ Effect | Cost$ 3 U | ValidTgts$ Creature.YouCtrl+Other | TgtPrompt$ Select another target creature you control | RememberObjects$ Targeted | Name$ Departed Deckhand Effect | StaticAbilities$ EffModeCantBlockBy | SpellDescription$ Another target creature you control can't be blocked this turn except by Spirits. +SVar:EffModeCantBlockBy:Mode$ CantBlockBy | ValidAttacker$ Creature.IsRemembered | ValidBlocker$ Creature.nonSpirit | EffectZone$ Command | Description$ Remembered creature can't be blocked except by Spirits. +Oracle:When Departed Deckhand becomes the target of a spell, sacrifice it.\nDeparted Deckhand can't be blocked except by Spirits\n{3}{U}: Another target creature you control can't be blocked this turn except by Spirits. +SVar:Targeting:Dies +PT:2/2 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/d/desecrated_tomb.txt b/forge-gui/res/cardsfolder/d/desecrated_tomb.txt new file mode 100644 index 00000000000..d5e17a434fd --- /dev/null +++ b/forge-gui/res/cardsfolder/d/desecrated_tomb.txt @@ -0,0 +1,9 @@ +Name:Desecrated Tomb +ManaCost:3 +Types:Artifact +T:Mode$ ChangesZoneAll | Origin$ Graveyard | Destination$ Any | ValidCards$ Creature.YouOwn | Execute$ TrigToken | TriggerZones$ Battlefield | TriggerDescription$ Whenever one or more creature cards leave your graveyard, create a 1/1 black Bat creature token with flying. +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ b_1_1_bat_flying | LegacyImage$ b 1 1 bat M19 | TokenOwner$ You +DeckHints:Ability$Graveyard +DeckHas:Ability$Token +SVar:Picture:http://www.wizards.com/global/images/magic/general/desecrated_tomb.jpg +Oracle:Whenever one or more creature cards leave your graveyard, create a 1/1 black Bat creature token with flying. diff --git a/forge-gui/res/cardsfolder/d/desperate_ravings.txt b/forge-gui/res/cardsfolder/d/desperate_ravings.txt index d8415b9cc0a..ac6ce120f8d 100644 --- a/forge-gui/res/cardsfolder/d/desperate_ravings.txt +++ b/forge-gui/res/cardsfolder/d/desperate_ravings.txt @@ -1,7 +1,7 @@ Name:Desperate Ravings ManaCost:1 R Types:Instant -K:Flashback 2 U +K:Flashback:2 U A:SP$ Draw | Cost$ 1 R | NumCards$ 2 | SubAbility$ DBDiscard | SpellDescription$ Draw two cards, then discard a card at random. SVar:DBDiscard:DB$Discard | Defined$ You | NumCards$ 1 | Mode$ Random SVar:Picture:http://www.wizards.com/global/images/magic/general/desperate_ravings.jpg diff --git a/forge-gui/res/cardsfolder/d/detection_tower.txt b/forge-gui/res/cardsfolder/d/detection_tower.txt new file mode 100644 index 00000000000..6be754bdf1b --- /dev/null +++ b/forge-gui/res/cardsfolder/d/detection_tower.txt @@ -0,0 +1,9 @@ +Name:Detection Tower +ManaCost:no cost +Types:Land +A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}. +A:AB$ Effect | Cost$ 1 T | StaticAbilities$ STLoseAB | SpellDescription$ Until end of turn, your opponents and creatures your opponents control with hexproof can be the targets of spells and abilities you control as though they didn’t have hexproof. +SVar:STLoseAB:Mode$ Continuous | EffectZone$ Command | Affected$ You | AddKeyword$ IgnoreHexproof:Opponent,Creature.OppCtrl | Description$ Your opponents and creatures your opponents control with hexproof can be the targets of spells and abilities you control as though they didn’t have hexproof. +SVar:RemAIDeck:True +SVar:Picture:http://www.wizards.com/global/images/magic/general/detection_tower.jpg +Oracle:{T}: Add {C}.\n{1}, {T}: Until end of turn, your opponents and creatures your opponents control with hexproof can be the targets of spells and abilities you control as though they didn’t have hexproof. diff --git a/forge-gui/res/cardsfolder/d/devils_play.txt b/forge-gui/res/cardsfolder/d/devils_play.txt index 91f810e72f9..b2dc5c0e25d 100644 --- a/forge-gui/res/cardsfolder/d/devils_play.txt +++ b/forge-gui/res/cardsfolder/d/devils_play.txt @@ -1,8 +1,8 @@ Name:Devil's Play ManaCost:X R Types:Sorcery -K:Flashback X R R R -A:SP$ DealDamage | Cost$ X R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to target creature or player. +K:Flashback:X R R R +A:SP$ DealDamage | Cost$ X R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to any target. SVar:X:Count$xPaid SVar:Picture:http://www.wizards.com/global/images/magic/general/devils_play.jpg -Oracle:Devil's Play deals X damage to target creature or player.\nFlashback {X}{R}{R}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.) +Oracle:Devil's Play deals X damage to any target.\nFlashback {X}{R}{R}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/d/devils_playground.txt b/forge-gui/res/cardsfolder/d/devils_playground.txt index 71e3ba19c62..07d1515accd 100644 --- a/forge-gui/res/cardsfolder/d/devils_playground.txt +++ b/forge-gui/res/cardsfolder/d/devils_playground.txt @@ -1,8 +1,8 @@ Name:Devils' Playground ManaCost:4 R R Types:Sorcery -A:SP$ Token | Cost$ 4 R R | TokenAmount$ 4 | TokenName$ Devil | TokenTypes$ Creature,Devil | TokenOwner$ You | TokenColors$ Red | TokenPower$ 1 | TokenToughness$ 1 | TokenTriggers$ DiesTrigger | TokenSVars$ DevilTrigDamage | SpellDescription$ Create four 1/1 red Devil creature tokens. They have "When this creature dies, it deals 1 damage to target creature or player." -SVar:DiesTrigger:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ DevilTrigDamage | TriggerController$ TriggeredCardController | TriggerDescription$ When this creature dies, it deals 1 damage to target creature or player. -SVar:DevilTrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 +A:SP$ Token | Cost$ 4 R R | TokenAmount$ 4 | TokenName$ Devil | TokenTypes$ Creature,Devil | TokenOwner$ You | TokenColors$ Red | TokenPower$ 1 | TokenToughness$ 1 | TokenTriggers$ DiesTrigger | TokenSVars$ DevilTrigDamage | SpellDescription$ Create four 1/1 red Devil creature tokens. They have "When this creature dies, it deals 1 damage to any target." +SVar:DiesTrigger:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ DevilTrigDamage | TriggerController$ TriggeredCardController | TriggerDescription$ When this creature dies, it deals 1 damage to any target. +SVar:DevilTrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/devils_playground.jpg -Oracle:Create four 1/1 red Devil creature tokens. They have "When this creature dies, it deals 1 damage to target creature or player." +Oracle:Create four 1/1 red Devil creature tokens. They have "When this creature dies, it deals 1 damage to any target." diff --git a/forge-gui/res/cardsfolder/d/devoted_retainer.txt b/forge-gui/res/cardsfolder/d/devoted_retainer.txt index 14f11e98e37..06e83acc4d6 100644 --- a/forge-gui/res/cardsfolder/d/devoted_retainer.txt +++ b/forge-gui/res/cardsfolder/d/devoted_retainer.txt @@ -2,6 +2,6 @@ Name:Devoted Retainer ManaCost:W Types:Creature Human Samurai PT:1/1 -K:Bushido 1 +K:Bushido:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/devoted_retainer.jpg Oracle:Bushido 1 (When this blocks or becomes blocked, it gets +1/+1 until end of turn.) diff --git a/forge-gui/res/cardsfolder/d/diamond_mare.txt b/forge-gui/res/cardsfolder/d/diamond_mare.txt new file mode 100644 index 00000000000..3b35377ff9b --- /dev/null +++ b/forge-gui/res/cardsfolder/d/diamond_mare.txt @@ -0,0 +1,10 @@ +Name:Diamond Mare +ManaCost:2 +Types:Artifact Creature Horse +PT:1/3 +K:ETBReplacement:Other:ChooseColor +SVar:ChooseColor:DB$ ChooseColor | Defined$ You | SpellDescription$ As CARDNAME enters the battlefield, choose a color. | AILogic$ MostProminentInComputerDeck +T:Mode$ SpellCast | ValidCard$ Card.ChosenColor | ValidActivatingPlayer$ You | Execute$ TrigGainLife | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast a spell of the chosen color, you gain 1 life. +SVar:TrigGainLife:DB$ GainLife | LifeAmount$ 1 +SVar:Picture:http://www.wizards.com/global/images/magic/general/diamond_mare.jpg +Oracle:As Diamond Mare enters the battlefield, choose a color.\nWhenever you cast a spell of the chosen color, you gain 1 life. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/d/disintegrate.txt b/forge-gui/res/cardsfolder/d/disintegrate.txt index b32f0a48946..edcc0398227 100644 --- a/forge-gui/res/cardsfolder/d/disintegrate.txt +++ b/forge-gui/res/cardsfolder/d/disintegrate.txt @@ -1,8 +1,8 @@ Name:Disintegrate ManaCost:X R Types:Sorcery -A:SP$ DealDamage | Cost$ X R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | SubAbility$ DB | References$ X | ReplaceDyingDefined$ Targeted | SpellDescription$ CARDNAME deals X damage to target creature or player. That creature can't be regenerated this turn. If the creature would die this turn, exile it instead. +A:SP$ DealDamage | Cost$ X R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | SubAbility$ DB | References$ X | ReplaceDyingDefined$ Targeted | SpellDescription$ CARDNAME deals X damage to any target. That creature can't be regenerated this turn. If the creature would die this turn, exile it instead. SVar:X:Count$xPaid SVar:DB:DB$Pump | KW$ HIDDEN CARDNAME can't be regenerated. | Defined$ Targeted SVar:Picture:http://www.wizards.com/global/images/magic/general/disintegrate.jpg -Oracle:Disintegrate deals X damage to target creature or player. That creature can't be regenerated this turn. If the creature would die this turn, exile it instead. \ No newline at end of file +Oracle:Disintegrate deals X damage to any target. That creature can't be regenerated this turn. If the creature would die this turn, exile it instead. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/d/dismissive_pyromancer.txt b/forge-gui/res/cardsfolder/d/dismissive_pyromancer.txt new file mode 100644 index 00000000000..891f9860c69 --- /dev/null +++ b/forge-gui/res/cardsfolder/d/dismissive_pyromancer.txt @@ -0,0 +1,7 @@ +Name:Dismissive Pyromancer +ManaCost:1 R +Types:Creature Human Wizard +A:AB$ Draw | Defined$ You | Cost$ R T Discard<1/Card> | NumCards$ 1 | SpellDescription$ Draw a card. +A:AB$ DealDamage | Cost$ 2 R T Sac<1/CARDNAME> | NumDmg$ 4 | ValidTgts$ Creature | TgtPrompt$ Select target creature | SpellDescription$ CARDNAME deals 4 damage to target creature. +Oracle:{R}, {T}, Discard a card: Draw a card.\n{2}{R}, {T}, Sacrifice Dismissive Pyromancer: It deals 4 damage to target creature. +PT:2/2 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/d/divine_presence.txt b/forge-gui/res/cardsfolder/d/divine_presence.txt index 4695735f16c..a36c464a405 100644 --- a/forge-gui/res/cardsfolder/d/divine_presence.txt +++ b/forge-gui/res/cardsfolder/d/divine_presence.txt @@ -1,10 +1,10 @@ Name:Divine Presence ManaCost:2 W Types:Enchantment -R:Event$ DamageDone | ActiveZones$ Battlefield | ValidTarget$ Creature,Player | DamageAmount$ GE4 | ReplaceWith$ Dmg3 | Description$ If a source would deal 4 or more damage to a creature or player, that source deals 3 damage to that creature or player instead. +R:Event$ DamageDone | ActiveZones$ Battlefield | ValidTarget$ Permanent,Player | DamageAmount$ GE4 | ReplaceWith$ Dmg3 | Description$ If a source would deal 4 or more damage to a permanent or player, that source deals 3 damage to that permanent or player instead. SVar:Dmg3:DB$ ReplaceEffect | VarName$ DamageAmount | VarValue$ 3 SVar:NonStackingEffect:True SVar:PlayMain1:TRUE SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/divine_presence.jpg -Oracle:If a source would deal 4 or more damage to a creature or player, that source deals 3 damage to that creature or player instead. +Oracle:If a source would deal 4 or more damage to a permanent or player, that source deals 3 damage to that permanent or player instead. diff --git a/forge-gui/res/cardsfolder/d/divine_reckoning.txt b/forge-gui/res/cardsfolder/d/divine_reckoning.txt index d0a0e52fe5f..5d126a87a6e 100644 --- a/forge-gui/res/cardsfolder/d/divine_reckoning.txt +++ b/forge-gui/res/cardsfolder/d/divine_reckoning.txt @@ -1,7 +1,7 @@ Name:Divine Reckoning ManaCost:2 W W Types:Sorcery -K:Flashback 5 W W +K:Flashback:5 W W A:SP$ RepeatEach | Cost$ 2 W W | AILogic$ OpponentHasMultipleCreatures | RepeatPlayers$ Player | RepeatSubAbility$ DBChoose | SubAbility$ DBDestroyAll | SpellDescription$ Each player chooses a creature they control. Destroy the rest. SVar:DBChoose:DB$ ChooseCard | Defined$ Remembered | Amount$ 1 | Choices$ Creature.RememberedPlayerCtrl | Mandatory$ True | RememberChosen$ True SVar:DBDestroyAll:DB$ DestroyAll | ValidCards$ Creature.IsNotRemembered | SubAbility$ DBCleanup diff --git a/forge-gui/res/cardsfolder/d/dogpile.txt b/forge-gui/res/cardsfolder/d/dogpile.txt index 0fd274b7ede..5664be632f8 100644 --- a/forge-gui/res/cardsfolder/d/dogpile.txt +++ b/forge-gui/res/cardsfolder/d/dogpile.txt @@ -1,8 +1,8 @@ Name:Dogpile ManaCost:3 R Types:Instant -A:SP$ DealDamage | Cost$ 3 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage to target creature or player equal to the number of attacking creatures you control. +A:SP$ DealDamage | Cost$ 3 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage to any target equal to the number of attacking creatures you control. SVar:X:Count$Valid Creature.attacking+YouCtrl SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/dogpile.jpg -Oracle:Dogpile deals damage to target creature or player equal to the number of attacking creatures you control. +Oracle:Dogpile deals damage to any target equal to the number of attacking creatures you control. diff --git a/forge-gui/res/cardsfolder/d/dominating_licid.txt b/forge-gui/res/cardsfolder/d/dominating_licid.txt index 0461ab43f48..93fe235b55e 100644 --- a/forge-gui/res/cardsfolder/d/dominating_licid.txt +++ b/forge-gui/res/cardsfolder/d/dominating_licid.txt @@ -2,7 +2,7 @@ Name:Dominating Licid ManaCost:1 U U Types:Creature Licid PT:1/1 -A:AB$ Animate | Cost$ 1 U U T | Defined$ Self | RemoveThisAbility$ True | Permanent$ True | RevertCost$ U | Keywords$ Enchant creature | Abilities$ SPAttach | Types$ Enchantment,Aura | RemoveCardTypes$ True | RemoveSubTypes$ True | SubAbility$ DBAttach | SpellDescription$ CARDNAME loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {U} to end this effect. +A:AB$ Animate | Cost$ 1 U U T | Defined$ Self | RemoveThisAbility$ True | Permanent$ True | RevertCost$ U | Keywords$ Enchant creature | Abilities$ SPAttach | Types$ Enchantment,Aura | RemoveCardTypes$ True | RemoveEnchantmentTypes$ True | SubAbility$ DBAttach | SpellDescription$ CARDNAME loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {U} to end this effect. SVar:DBAttach:DB$ Attach | ValidTgts$ Creature | AILogic$ GainControl SVar:SPAttach:SP$ Attach | Cost$ 0 | ValidTgts$ Creature S:Mode$ Continuous | Affected$ Card.EnchantedBy | GainControl$ You | Description$ You control enchanted creature. diff --git a/forge-gui/res/cardsfolder/d/doom_cannon.txt b/forge-gui/res/cardsfolder/d/doom_cannon.txt index fb5143cd3fa..76400cca1c9 100644 --- a/forge-gui/res/cardsfolder/d/doom_cannon.txt +++ b/forge-gui/res/cardsfolder/d/doom_cannon.txt @@ -3,6 +3,6 @@ ManaCost:6 Types:Artifact K:ETBReplacement:Other:ChooseCT SVar:ChooseCT:DB$ ChooseType | Defined$ You | Type$ Creature | SpellDescription$ As CARDNAME enters the battlefield, choose a creature type. | AILogic$ MostProminentInComputerDeck -A:AB$ DealDamage | Cost$ 3 T Sac<1/Creature.ChosenType> | NumDmg$ 3 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | CostDesc$ {3}, {T}, Sacrifice a creature of the chosen type: | SpellDescription$ CARDNAME deals 3 damage to target creature or player. +A:AB$ DealDamage | Cost$ 3 T Sac<1/Creature.ChosenType> | NumDmg$ 3 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | CostDesc$ {3}, {T}, Sacrifice a creature of the chosen type: | SpellDescription$ CARDNAME deals 3 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/doom_cannon.jpg -Oracle:As Doom Cannon enters the battlefield, choose a creature type.\n{3}, {T}, Sacrifice a creature of the chosen type: Doom Cannon deals 3 damage to target creature or player. +Oracle:As Doom Cannon enters the battlefield, choose a creature type.\n{3}, {T}, Sacrifice a creature of the chosen type: Doom Cannon deals 3 damage to any target. diff --git a/forge-gui/res/cardsfolder/d/dosan_the_falling_leaf.txt b/forge-gui/res/cardsfolder/d/dosan_the_falling_leaf.txt index 72b6c56a5b4..620bcfddbbd 100644 --- a/forge-gui/res/cardsfolder/d/dosan_the_falling_leaf.txt +++ b/forge-gui/res/cardsfolder/d/dosan_the_falling_leaf.txt @@ -2,7 +2,6 @@ Name:Dosan the Falling Leaf ManaCost:1 G G Types:Legendary Creature Human Monk PT:2/2 -S:Mode$ CantBeCast | ValidCard$ Card | Condition$ PlayerTurn | Caster$ Opponent | Description$ Players can cast spells only during their own turns. -S:Mode$ CantBeCast | ValidCard$ Card | Condition$ NotPlayerTurn | Caster$ You +S:Mode$ CantBeCast | ValidCard$ Card | NonCasterTurn$ True | Description$ Players can cast spells only during their own turns. SVar:Picture:http://www.wizards.com/global/images/magic/general/dosan_the_falling_leaf.jpg Oracle:Players can cast spells only during their own turns. diff --git a/forge-gui/res/cardsfolder/d/doublecast.txt b/forge-gui/res/cardsfolder/d/doublecast.txt new file mode 100644 index 00000000000..2a8c480025b --- /dev/null +++ b/forge-gui/res/cardsfolder/d/doublecast.txt @@ -0,0 +1,8 @@ +Name:Doublecast +ManaCost:R R +Types:Sorcery +A:SP$ Effect | Cost$ R R | AILogic$ SpellCopy | Name$ Doublecast Effect | Triggers$ EffTModeSpellCast | SVars$ EffTrigCopy,EffDBCleanup | SpellDescription$ When you cast your next instant or sorcery spell this turn, copy that spell. You may choose new targets for the copy. +SVar:EffTModeSpellCast:Mode$ SpellCast | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ You | OneOff$ True | Execute$ EffTrigCopy | TriggerZones$ Command | TriggerDescription$ When you cast your next instant or sorcery spell this turn, copy that spell. You may choose new targets for the copy. +SVar:EffTrigCopy:DB$ CopySpellAbility | Defined$ TriggeredSpellAbility | SubAbility$ EffDBCleanup +SVar:EffDBCleanup:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile +Oracle:When you cast your next instant or sorcery spell this turn, copy that spell. You may choose new targets for that copy. diff --git a/forge-gui/res/cardsfolder/d/draconic_disciple.txt b/forge-gui/res/cardsfolder/d/draconic_disciple.txt new file mode 100644 index 00000000000..dad328424cd --- /dev/null +++ b/forge-gui/res/cardsfolder/d/draconic_disciple.txt @@ -0,0 +1,9 @@ +Name:Draconic Disciple +ManaCost:1 R G +Types:Creature Human Shaman +PT:2/2 +A:AB$ Mana | Cost$ T | Produced$ Any | SpellDescription$ Add one mana of any color. +A:AB$ Token | Cost$ 7 T Sac<1/CARDNAME> | TokenAmount$ 1 | TokenName$ Dragon | TokenTypes$ Creature,Dragon | TokenOwner$ You | TokenColors$ Red | TokenPower$ 5 | TokenToughness$ 5 | TokenKeywords$ Flying | TokenImage$ r 5 5 dragon m19 | SpellDescription$ Create a 5/5 red Dragon creature token with flying. +DeckHas:Ability$Token +SVar:Picture:http://www.wizards.com/global/images/magic/general/draconic_disciple.jpg +Oracle:{T}: Add one mana of any color.\n{7}, {T}, Sacrifice Draconic Disciple: Create a 5/5 red Dragon creature token with flying. diff --git a/forge-gui/res/cardsfolder/d/dragon_egg.txt b/forge-gui/res/cardsfolder/d/dragon_egg.txt index b63b3074dc0..d863c2e64c3 100644 --- a/forge-gui/res/cardsfolder/d/dragon_egg.txt +++ b/forge-gui/res/cardsfolder/d/dragon_egg.txt @@ -1,11 +1,12 @@ Name:Dragon Egg ManaCost:2 R -Types:Creature Dragon +Types:Creature Dragon Egg PT:0/2 K:Defender T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigToken | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, create a 2/2 red Dragon creature token with flying. It has "{R}: This creature gets +1/+0 until end of turn". SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenName$ Dragon | TokenTypes$ Creature,Dragon | TokenOwner$ You | TokenColors$ Red | TokenPower$ 2 | TokenToughness$ 2 | TokenImage$ r 2 2 dragon M14 | TokenKeywords$ Flying | TokenAbilities$ DragonPump SVar:DragonPump:AB$ Pump | Cost$ R | NumAtt$ +1 | SpellDescription$ CARDNAME gets +1/+0 until end of turn. SVar:SacMe:4 +DeckHas:Ability$Token SVar:Picture:http://www.wizards.com/global/images/magic/general/dragon_egg.jpg Oracle:Defender\nWhen Dragon Egg dies, create a 2/2 red Dragon creature token with flying. It has "{R}: This creature gets +1/+0 until end of turn." diff --git a/forge-gui/res/cardsfolder/d/dragon_tempest.txt b/forge-gui/res/cardsfolder/d/dragon_tempest.txt index ac86c57d205..72265c74d8a 100644 --- a/forge-gui/res/cardsfolder/d/dragon_tempest.txt +++ b/forge-gui/res/cardsfolder/d/dragon_tempest.txt @@ -3,10 +3,10 @@ ManaCost:1 R Types:Enchantment T:Mode$ ChangesZone | ValidCard$ Creature.YouCtrl+withFlying | Origin$ Any | Destination$ Battlefield | Execute$ TrigPump | TriggerZones$ Battlefield | TriggerDescription$ Whenever a creature with flying enters the battlefield under your control, it gains haste until end of turn. SVar:TrigPump:DB$ Pump | Defined$ TriggeredCard | KW$ Haste -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Dragon.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever a Dragon enters the battlefield under your control, it deals X damage to target creature or player, where X is the number of Dragons you control. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player | NumDmg$ NumDragons | References$ NumDragons | TgtPrompt$ Select a target creature or player | DamageSource$ TriggeredCard +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Dragon.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever a Dragon enters the battlefield under your control, it deals X damage to any target, where X is the number of Dragons you control. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | NumDmg$ NumDragons | References$ NumDragons | TgtPrompt$ Select any target | DamageSource$ TriggeredCard SVar:NumDragons:Count$Valid Dragon.YouCtrl SVar:BuffedBy:Creature.withFlying DeckHints:Type$Dragon & Keyword$Flying SVar:Picture:http://www.wizards.com/global/images/magic/general/dragon_tempest.jpg -Oracle:Whenever a creature with flying enters the battlefield under your control, it gains haste until end of turn.\nWhenever a Dragon enters the battlefield under your control, it deals X damage to target creature or player, where X is the number of Dragons you control. +Oracle:Whenever a creature with flying enters the battlefield under your control, it gains haste until end of turn.\nWhenever a Dragon enters the battlefield under your control, it deals X damage to any target, where X is the number of Dragons you control. diff --git a/forge-gui/res/cardsfolder/d/dragons_hoard.txt b/forge-gui/res/cardsfolder/d/dragons_hoard.txt new file mode 100644 index 00000000000..0ead7c46c9c --- /dev/null +++ b/forge-gui/res/cardsfolder/d/dragons_hoard.txt @@ -0,0 +1,10 @@ +Name:Dragon's Hoard +ManaCost:3 +Types:Artifact +SVar:Picture:http://www.wizards.com/global/images/magic/general/dragons_hoard.jpg +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Dragon.YouCtrl | TriggerZones$ Battlefield | Execute$ DBPutCounter | TriggerDescription$ Whenever a Dragon enters the battlefield under your control, put a gold counter on Dragon’s Hoard. +SVar:DBPutCounter:DB$PutCounter | Defined$ Self | CounterType$ GOLD | CounterNum$ 1 +A:AB$ Draw | Cost$ T SubCounter<1/GOLD> | NumCards$ 1 | SpellDescription$ Draw a card. +A:AB$ Mana | Cost$ T | Produced$ Any | SpellDescription$ Add one mana of any color. +DeckHints:Type$Dragon +Oracle:Whenever a Dragon enters the battlefield under your control, put a gold counter on Dragon’s Hoard.\n{T}, Remove a gold counter from Dragon’s Hoard: Draw a card.\n{T}: Add one mana of any color. diff --git a/forge-gui/res/cardsfolder/d/dragons_presence.txt b/forge-gui/res/cardsfolder/d/dragons_presence.txt new file mode 100644 index 00000000000..589e1ea442a --- /dev/null +++ b/forge-gui/res/cardsfolder/d/dragons_presence.txt @@ -0,0 +1,5 @@ +Name:Dragon's Presence +ManaCost:2 W +Types:Instant +A:SP$ DealDamage | Cost$ 2 W | ValidTgts$ Creature.attacking,Creature.blocking | TgtPrompt$ Select target attacking or blocking creature | NumDmg$ 5 | SpellDescription$ CARDNAME deals 5 damage to target attacking or blocking creature. +Oracle:Dragon's Presence deals 5 damage to target attacking or blocking creature. diff --git a/forge-gui/res/cardsfolder/d/dread_return.txt b/forge-gui/res/cardsfolder/d/dread_return.txt index 350a50834be..239650a76d7 100644 --- a/forge-gui/res/cardsfolder/d/dread_return.txt +++ b/forge-gui/res/cardsfolder/d/dread_return.txt @@ -1,7 +1,7 @@ Name:Dread Return ManaCost:2 B B Types:Sorcery -K:Flashback Sac<3/Creature> +K:Flashback:Sac<3/Creature> A:SP$ ChangeZone | Cost$ 2 B B | Origin$ Graveyard | Destination$ Battlefield | TgtPrompt$ Choose target creature card in your graveyard | ValidTgts$ Creature.YouCtrl | SpellDescription$ Return target creature card from your graveyard to the battlefield. SVar:Picture:http://www.wizards.com/global/images/magic/general/dread_return.jpg Oracle:Return target creature card from your graveyard to the battlefield.\nFlashback—Sacrifice three creatures. (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/d/dream_thrush.txt b/forge-gui/res/cardsfolder/d/dream_thrush.txt index f353a2cbc1e..6fee1bba41e 100644 --- a/forge-gui/res/cardsfolder/d/dream_thrush.txt +++ b/forge-gui/res/cardsfolder/d/dream_thrush.txt @@ -4,7 +4,7 @@ Types:Creature Bird PT:1/1 K:Flying A:AB$ ChooseType | Cost$ T | Defined$ You | Type$ Basic Land | SubAbility$ DBAnimate | SpellDescription$ Target land becomes the basic land type of your choice until end of turn. -SVar:DBAnimate:DB$ Animate | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ ChosenType | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | RemoveAllAbilities$ True +SVar:DBAnimate:DB$ Animate | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ ChosenType | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/dream_thrush.jpg Oracle:Flying\n{T}: Target land becomes the basic land type of your choice until end of turn. diff --git a/forge-gui/res/cardsfolder/d/dream_twist.txt b/forge-gui/res/cardsfolder/d/dream_twist.txt index ed165ce3d07..cb21d341658 100644 --- a/forge-gui/res/cardsfolder/d/dream_twist.txt +++ b/forge-gui/res/cardsfolder/d/dream_twist.txt @@ -1,7 +1,7 @@ Name:Dream Twist ManaCost:U Types:Instant -K:Flashback 1 U +K:Flashback:1 U A:SP$ Mill | Cost$ U | NumCards$ 3 | ValidTgts$ Player | TgtPrompt$ Choose a player | SpellDescription$ Target player puts the top three cards of their library into their graveyard. SVar:Picture:http://www.wizards.com/global/images/magic/general/dream_twist.jpg Oracle:Target player puts the top three cards of their library into their graveyard.\nFlashback {1}{U} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/d/dreamwinder.txt b/forge-gui/res/cardsfolder/d/dreamwinder.txt index 7a8b2775738..0ac176bd8dd 100644 --- a/forge-gui/res/cardsfolder/d/dreamwinder.txt +++ b/forge-gui/res/cardsfolder/d/dreamwinder.txt @@ -3,7 +3,7 @@ ManaCost:3 U Types:Creature Serpent PT:4/3 S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Island | Description$ CARDNAME can't attack unless defending player controls an Island. -A:AB$ Animate | Cost$ U Sac<1/Island> | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ Island | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | RemoveAllAbilities$ True | SpellDescription$ Target land becomes an Island until end of turn. +A:AB$ Animate | Cost$ U Sac<1/Island> | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ Island | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True | SpellDescription$ Target land becomes an Island until end of turn. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/dreamwinder.jpg Oracle:Dreamwinder can't attack unless defending player controls an Island.\n{U}, Sacrifice an Island: Target land becomes an Island until end of turn. diff --git a/forge-gui/res/cardsfolder/d/drown_in_shapelessness.txt b/forge-gui/res/cardsfolder/d/drown_in_shapelessness.txt new file mode 100644 index 00000000000..982431ce288 --- /dev/null +++ b/forge-gui/res/cardsfolder/d/drown_in_shapelessness.txt @@ -0,0 +1,5 @@ +Name:Drown in Shapelessness +ManaCost:1 U +Types:Instant +A:SP$ ChangeZone | Cost$ 1 U | ValidTgts$ Creature | TgtPrompt$ Select target creature | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return target creature to its owner's hand. +Oracle:Return target creature to its owner's hand. diff --git a/forge-gui/res/cardsfolder/d/druid_of_horns.txt b/forge-gui/res/cardsfolder/d/druid_of_horns.txt new file mode 100644 index 00000000000..f23e5737a1c --- /dev/null +++ b/forge-gui/res/cardsfolder/d/druid_of_horns.txt @@ -0,0 +1,8 @@ +Name:Druid of Horns +ManaCost:3 G +Types:Creature Human Druid +T:Mode$ SpellCast | ValidCard$ Aura | ValidActivatingPlayer$ You | TargetValidTargeting$ Card.Self+YouCtrl | Execute$ TrigToken | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast an Aura spell that targets CARDNAME, create a 3/3 green Beast creature token. +SVar:TrigToken:DB$ Token | TokenOwner$ You | TokenAmount$ 1 | TokenPower$ 3 | TokenToughness$ 3 | TokenColors$ Green | TokenName$ Beast | TokenTypes$ Beast,Creature | TokenImage$ g 3 3 beast m19 +DeckHas:Ability$Token +Oracle:Whenever you cast an Aura spell that targets Druid of Horns, create a 3/3 green Beast creature token. +PT:2/3 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/d/dryad_greenseeker.txt b/forge-gui/res/cardsfolder/d/dryad_greenseeker.txt new file mode 100644 index 00000000000..ea5528e9173 --- /dev/null +++ b/forge-gui/res/cardsfolder/d/dryad_greenseeker.txt @@ -0,0 +1,8 @@ +Name:Dryad Greenseeker +ManaCost:1 G +Types:Creature Dryad +A:AB$ PeekAndReveal | Cost$ T | AILogic$ Main2 | PeekAmount$ 1 | RevealValid$ Land | RevealOptional$ True | RememberRevealed$ True | SubAbility$ DBChangeZone | SpellDescription$ Look at the top card of your library. If it's a land card, you may reveal it and put it into your hand. +SVar:DBChangeZone:DB$ ChangeZone | Defined$ TopOfLibrary | Origin$ Library | Destination$ Hand | ConditionDefined$ Remembered | ConditionPresent$ Land | ConditionCompare$ EQ1 | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:{T}: Look at the top card of your library. If it's a land card, you may reveal it and put it into your hand. +PT:1/3 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/d/dwarven_priest.txt b/forge-gui/res/cardsfolder/d/dwarven_priest.txt new file mode 100644 index 00000000000..87e3bb3e82e --- /dev/null +++ b/forge-gui/res/cardsfolder/d/dwarven_priest.txt @@ -0,0 +1,8 @@ +Name:Dwarven Priest +ManaCost:3 W +Types:Creature Dwarf Cleric +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigGainLife | TriggerDescription$ When CARDNAME enters the battlefield, you gain 1 life for each creature you control. +SVar:TrigGainLife:DB$ GainLife | Defined$ You | References$ X | LifeAmount$ X +SVar:X:Count$Valid Creature.YouCtrl +Oracle:When Dwarven Priest enters the battlefield, you gain 1 life for each creature you control. +PT:2/4 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/d/dwindle.txt b/forge-gui/res/cardsfolder/d/dwindle.txt new file mode 100644 index 00000000000..93c06a4db13 --- /dev/null +++ b/forge-gui/res/cardsfolder/d/dwindle.txt @@ -0,0 +1,9 @@ +Name:Dwindle +ManaCost:2 U +Types:Enchantment Aura +K:Enchant creature +A:SP$ Attach | Cost$ 2 U | ValidTgts$ Creature | IsCurse$ True | SpellDescription$ Enchant creature +S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ -6 | AddToughness$ -0 | Description$ Enchanted creature gets -6/-0. +T:Mode$ AttackerBlockedByCreature | ValidCard$ Creature | ValidBlocker$ Creature.EnchantedBy | TriggerZones$ Battlefield | Execute$ TrigDestroy | TriggerDescription$ When enchanted creature blocks, destroy it. +SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredBlocker +Oracle:Enchant creature\nEnchanted creature gets -6/-0.\nWhen enchanted creature blocks, destroy it. (The attacking creature remains blocked.) diff --git a/forge-gui/res/cardsfolder/d/dynavolt_tower.txt b/forge-gui/res/cardsfolder/d/dynavolt_tower.txt index 9ce76b14f7f..e828c4f2c3a 100644 --- a/forge-gui/res/cardsfolder/d/dynavolt_tower.txt +++ b/forge-gui/res/cardsfolder/d/dynavolt_tower.txt @@ -3,8 +3,8 @@ ManaCost:3 Types:Artifact T:Mode$ SpellCast | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigEnergy | TriggerDescription$ Whenever you cast an instant or sorcery spell, you get {E}{E} (two energy counters). SVar:TrigEnergy:DB$ PutCounter | Defined$ You | CounterType$ ENERGY | CounterNum$ 2 -A:AB$ DealDamage | Cost$ T PayEnergy<5> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. +A:AB$ DealDamage | Cost$ T PayEnergy<5> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. SVar:BuffedBy:Instant,Sorcery DeckHints:Type$Instant|Sorcery SVar:Picture:http://www.wizards.com/global/images/magic/general/dynavolt_tower.jpg -Oracle:Whenever you cast an instant or sorcery spell, you get {E}{E} (two energy counters).\n{T}, Pay {E}{E}{E}{E}{E}: Dynavolt Tower deals 3 damage to target creature or player. +Oracle:Whenever you cast an instant or sorcery spell, you get {E}{E} (two energy counters).\n{T}, Pay {E}{E}{E}{E}{E}: Dynavolt Tower deals 3 damage to any target. diff --git a/forge-gui/res/cardsfolder/e/earth_origin_yak.txt b/forge-gui/res/cardsfolder/e/earth_origin_yak.txt new file mode 100644 index 00000000000..b1f522eb829 --- /dev/null +++ b/forge-gui/res/cardsfolder/e/earth_origin_yak.txt @@ -0,0 +1,8 @@ +Name:Earth-Origin Yak +ManaCost:3 W +Types:Creature Ox +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPumpAll | TriggerDescription$ When CARDNAME enters the battlefield, creatures you control get +1/+1 until end of turn. +SVar:TrigPumpAll:DB$PumpAll | ValidCards$ Creature.YouCtrl | NumAtt$ +1 | NumDef$ +1 +SVar:PlayMain1:TRUE +Oracle:When Earth-Origin Yak enters the battlefield, creatures you control get +1/+1 until end of turn. +PT:2/4 diff --git a/forge-gui/res/cardsfolder/e/earth_rift.txt b/forge-gui/res/cardsfolder/e/earth_rift.txt index fcd0ede325d..ad3ccde29de 100644 --- a/forge-gui/res/cardsfolder/e/earth_rift.txt +++ b/forge-gui/res/cardsfolder/e/earth_rift.txt @@ -1,7 +1,7 @@ Name:Earth Rift ManaCost:3 R Types:Sorcery -K:Flashback 5 R R +K:Flashback:5 R R A:SP$ Destroy | Cost$ 3 R | ValidTgts$ Land | TgtPrompt$ Select target land. | SpellDescription$ Destroy target land. SVar:Picture:http://www.wizards.com/global/images/magic/general/earth_rift.jpg Oracle:Destroy target land.\nFlashback {5}{R}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/e/earthshaking_si.txt b/forge-gui/res/cardsfolder/e/earthshaking_si.txt new file mode 100644 index 00000000000..498c0571189 --- /dev/null +++ b/forge-gui/res/cardsfolder/e/earthshaking_si.txt @@ -0,0 +1,6 @@ +Name:Earthshaking Si +ManaCost:5 G +Types:Creature Beast +K:Trample +Oracle:Trample (This creature can deal excess combat damage to defending player or planeswalker while attacking.) +PT:5/5 diff --git a/forge-gui/res/cardsfolder/e/earwig_squad.txt b/forge-gui/res/cardsfolder/e/earwig_squad.txt index 0cb87956c44..fa6e7d5d85b 100644 --- a/forge-gui/res/cardsfolder/e/earwig_squad.txt +++ b/forge-gui/res/cardsfolder/e/earwig_squad.txt @@ -2,8 +2,8 @@ Name:Earwig Squad ManaCost:3 B B Types:Creature Goblin Rogue PT:5/3 -SVar:AltCost:Cost$ 2 B | Activation$ ProwlGoblin | Description$ Prowl {2}{B} (You may cast this for its prowl cost if you dealt combat damage to a player this turn with a Goblin or Rogue.) -T:Mode$ ChangesZone | Origin$ Stack | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigExile | Condition$ AltCost | TriggerDescription$ When CARDNAME enters the battlefield, if its prowl cost was paid, search target opponent's library for three cards and exile them. Then that player shuffles their library. +K:Prowl:2 B +T:Mode$ ChangesZone | Origin$ Stack | Destination$ Battlefield | ValidCard$ Card.Self+prowled | Execute$ TrigExile | TriggerDescription$ When CARDNAME enters the battlefield, if its prowl cost was paid, search target opponent's library for three cards and exile them. Then that player shuffles their library. SVar:TrigExile:DB$ ChangeZone | ValidTgts$ Opponent | DefinedPlayer$ Targeted | Chooser$ You | ChangeType$ Card | ChangeNum$ 3 | Origin$ Library | Destination$ Exile SVar:Picture:http://www.wizards.com/global/images/magic/general/earwig_squad.jpg Oracle:Prowl {2}{B} (You may cast this for its prowl cost if you dealt combat damage to a player this turn with a Goblin or Rogue.)\nWhen Earwig Squad enters the battlefield, if its prowl cost was paid, search target opponent's library for three cards and exile them. Then that player shuffles their library. diff --git a/forge-gui/res/cardsfolder/e/elaborate_firecannon.txt b/forge-gui/res/cardsfolder/e/elaborate_firecannon.txt index 6eb217db70d..f1d645f3b74 100644 --- a/forge-gui/res/cardsfolder/e/elaborate_firecannon.txt +++ b/forge-gui/res/cardsfolder/e/elaborate_firecannon.txt @@ -2,8 +2,8 @@ Name:Elaborate Firecannon ManaCost:2 Types:Artifact K:CARDNAME doesn't untap during your untap step. -A:AB$ DealDamage | Cost$ 4 T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:AB$ DealDamage | Cost$ 4 T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigUntap | TriggerDescription$ At the beginning of your upkeep, you may discard a card. If you do, untap CARDNAME. SVar:TrigUntap:AB$Untap | Cost$ Discard<1/Card> | Defined$ Self SVar:Picture:http://www.wizards.com/global/images/magic/general/elaborate_firecannon.jpg -Oracle:Elaborate Firecannon doesn't untap during your untap step.\n{4}, {T}: Elaborate Firecannon deals 2 damage to target creature or player.\nAt the beginning of your upkeep, you may discard a card. If you do, untap Elaborate Firecannon. \ No newline at end of file +Oracle:Elaborate Firecannon doesn't untap during your untap step.\n{4}, {T}: Elaborate Firecannon deals 2 damage to any target.\nAt the beginning of your upkeep, you may discard a card. If you do, untap Elaborate Firecannon. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/e/electrolyze.txt b/forge-gui/res/cardsfolder/e/electrolyze.txt index facfd60159b..dbbb5cd9d81 100644 --- a/forge-gui/res/cardsfolder/e/electrolyze.txt +++ b/forge-gui/res/cardsfolder/e/electrolyze.txt @@ -1,7 +1,7 @@ Name:Electrolyze ManaCost:1 U R Types:Instant -A:SP$ DealDamage | Cost$ 1 U R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature, player or planeswalker to distribute damage to | NumDmg$ 2 | TargetMin$ 1 | TargetMax$ 2 | DividedAsYouChoose$ 2 | SubAbility$ DBDraw | SpellDescription$ CARDNAME deals 2 damage divided as you choose among one or two target creatures and/or players. Draw a card. +A:SP$ DealDamage | Cost$ 1 U R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to distribute damage to | NumDmg$ 2 | TargetMin$ 1 | TargetMax$ 2 | DividedAsYouChoose$ 2 | SubAbility$ DBDraw | SpellDescription$ CARDNAME deals 2 damage divided as you choose among one or two targets. Draw a card. SVar:DBDraw:DB$ Draw | NumCards$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/electrolyze.jpg -Oracle:Electrolyze deals 2 damage divided as you choose among one or two target creatures and/or players.\nDraw a card. +Oracle:Electrolyze deals 2 damage divided as you choose among one or two targets.\nDraw a card. diff --git a/forge-gui/res/cardsfolder/e/electropotence.txt b/forge-gui/res/cardsfolder/e/electropotence.txt index 2fc98662668..a2810712450 100644 --- a/forge-gui/res/cardsfolder/e/electropotence.txt +++ b/forge-gui/res/cardsfolder/e/electropotence.txt @@ -1,8 +1,8 @@ Name:Electropotence ManaCost:2 R Types:Enchantment -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever a creature enters the battlefield under your control, you may pay {2}{R}. If you do, that creature deals damage equal to its power to target creature or player. -SVar:TrigDamage:AB$DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | DamageSource$ TriggeredCard | NumDmg$ Damage | References$ Damage +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever a creature enters the battlefield under your control, you may pay {2}{R}. If you do, that creature deals damage equal to its power to any target. +SVar:TrigDamage:AB$DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | DamageSource$ TriggeredCard | NumDmg$ Damage | References$ Damage SVar:Damage:TriggeredCard$CardPower SVar:Picture:http://www.wizards.com/global/images/magic/general/electropotence.jpg -Oracle:Whenever a creature enters the battlefield under your control, you may pay {2}{R}. If you do, that creature deals damage equal to its power to target creature or player. +Oracle:Whenever a creature enters the battlefield under your control, you may pay {2}{R}. If you do, that creature deals damage equal to its power to any target. diff --git a/forge-gui/res/cardsfolder/e/electryte.txt b/forge-gui/res/cardsfolder/e/electryte.txt index 98589b820e8..1854e8e5083 100644 --- a/forge-gui/res/cardsfolder/e/electryte.txt +++ b/forge-gui/res/cardsfolder/e/electryte.txt @@ -1,6 +1,6 @@ Name:Electryte ManaCost:3 R R -Types:Creature Beast +Types:Creature Trilobite Beast PT:3/3 T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigDmgBlockers | TriggerDescription$ Whenever CARDNAME deals combat damage to defending player, it deals damage equal to its power to each blocking creature. SVar:TrigDmgBlockers:DB$DamageAll | ValidCards$ Creature.blocking | NumDmg$ X | ValidDescription$ each blocking creature | References$ X diff --git a/forge-gui/res/cardsfolder/e/elephant_ambush.txt b/forge-gui/res/cardsfolder/e/elephant_ambush.txt index 5758b92495e..3fe7cb6e3d3 100644 --- a/forge-gui/res/cardsfolder/e/elephant_ambush.txt +++ b/forge-gui/res/cardsfolder/e/elephant_ambush.txt @@ -1,7 +1,7 @@ Name:Elephant Ambush ManaCost:2 G G Types:Instant -K:Flashback 6 G G +K:Flashback:6 G G A:SP$ Token | Cost$ 2 G G | TokenAmount$ 1 | TokenName$ Elephant | TokenTypes$ Creature,Elephant | TokenOwner$ You | TokenColors$ Green | TokenPower$ 3 | TokenToughness$ 3 | TokenImage$ g 3 3 elephant ODY | SpellDescription$ Create a 3/3 green Elephant creature token. SVar:Picture:http://www.wizards.com/global/images/magic/general/elephant_ambush.jpg Oracle:Create a 3/3 green Elephant creature token.\nFlashback {6}{G}{G} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/e/elsewhere_flask.txt b/forge-gui/res/cardsfolder/e/elsewhere_flask.txt index 077870edba3..ba3abf04173 100644 --- a/forge-gui/res/cardsfolder/e/elsewhere_flask.txt +++ b/forge-gui/res/cardsfolder/e/elsewhere_flask.txt @@ -4,7 +4,7 @@ Types:Artifact T:Mode$ ChangesZone | ValidCard$ Card.Self | Destination$ Battlefield | Execute$ TrigDraw | TriggerDescription$ When CARDNAME enters the battlefield, draw a card. SVar:TrigDraw:DB$ Draw | NumCards$ 1 A:AB$ ChooseType | Cost$ Sac<1/CARDNAME> | Type$ Basic Land | SubAbility$ DBAnimate | SpellDescription$ Choose a basic land type. Each land you control becomes that type until end of turn. -SVar:DBAnimate:DB$ AnimateAll | ValidCards$ Land.YouCtrl | Types$ ChosenType | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | RemoveAllAbilities$ True +SVar:DBAnimate:DB$ AnimateAll | ValidCards$ Land.YouCtrl | Types$ ChosenType | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/elsewhere_flask.jpg Oracle:When Elsewhere Flask enters the battlefield, draw a card.\nSacrifice Elsewhere Flask: Choose a basic land type. Each land you control becomes that type until end of turn. diff --git a/forge-gui/res/cardsfolder/e/elvish_clancaller.txt b/forge-gui/res/cardsfolder/e/elvish_clancaller.txt new file mode 100644 index 00000000000..81efc659484 --- /dev/null +++ b/forge-gui/res/cardsfolder/e/elvish_clancaller.txt @@ -0,0 +1,9 @@ +Name:Elvish Clancaller +ManaCost:G G +Types:Creature Elf Druid +S:Mode$ Continuous | Affected$ Elf.YouCtrl+Other | AddPower$ 1 | AddToughness$ 1 | Description$ Other Elves you control get +1/+1. +A:AB$ ChangeZone | Cost$ 4 G G T | Origin$ Library | Destination$ Battlefield | ChangeType$ Card.namedElvish Clancaller | ChangeNum$ 1 | SpellDescription$ Search your library for a card named Elvish Clancaller, put it onto the battlefield, then shuffle your library. +DeckHints:Type$Elf +DeckNeeds:Name$Elvish Clancaller +Oracle:Other Elves you control get +1/+1.\n{4}{G}{G}, {T}: Search your library for a card named Elvish Clancaller, put it onto the battlefield, then shuffle your library. +PT:1/1 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/e/elvish_healer.txt b/forge-gui/res/cardsfolder/e/elvish_healer.txt index 7da8005d7f8..38085d0a841 100644 --- a/forge-gui/res/cardsfolder/e/elvish_healer.txt +++ b/forge-gui/res/cardsfolder/e/elvish_healer.txt @@ -2,10 +2,10 @@ Name:Elvish Healer ManaCost:2 W Types:Creature Elf Cleric PT:1/2 -A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ X | RememberTargets$ True | SubAbility$ DBCleanup | References$ X | SpellDescription$ Prevent the next 1 damage that would be dealt to target creature or player this turn. If that creature is green, prevent the next 2 damage instead. +A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ X | RememberTargets$ True | SubAbility$ DBCleanup | References$ X | SpellDescription$ Prevent the next 1 damage that would be dealt to any target this turn. If that creature is green, prevent the next 2 damage instead. SVar:X:Remembered$Valid Creature.Green/Plus.1 SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:RemRandomDeck:True DeckHints:Color$Green SVar:Picture:http://www.wizards.com/global/images/magic/general/elvish_healer.jpg -Oracle:{T}: Prevent the next 1 damage that would be dealt to target creature or player this turn. If that creature is green, prevent the next 2 damage instead. +Oracle:{T}: Prevent the next 1 damage that would be dealt to any target this turn. If that creature is green, prevent the next 2 damage instead. diff --git a/forge-gui/res/cardsfolder/e/elvish_rejuvenator.txt b/forge-gui/res/cardsfolder/e/elvish_rejuvenator.txt new file mode 100644 index 00000000000..33735bd468f --- /dev/null +++ b/forge-gui/res/cardsfolder/e/elvish_rejuvenator.txt @@ -0,0 +1,7 @@ +Name:Elvish Rejuvenator +ManaCost:2 G +Types:Creature Elf Druid +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigDig | TriggerDescription$ When CARDNAME enters the battlefield, look at the top five cards of your library. You put a land card from among them onto the battlefield tapped. Put the rest on the bottom of that library in a random order. +SVar:TrigDig:DB$ Dig | DigNum$ 5 | ChangeNum$ 1 | ChangeValid$ Card.Land | DestinationZone$ Battlefield | DestinationZone2$ Library | LibraryPosition$ -1 | RestRandomOrder$ True | Tapped$ True +Oracle:When Elvish Rejuvenator enters the battlefield, look at the top five cards of your library. You may put a land card from among them onto the battlefield tapped. Put the rest on the bottom of your library in a random order. +PT:1/1 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/e/ember_fist_zubera.txt b/forge-gui/res/cardsfolder/e/ember_fist_zubera.txt index a3a3ba49b6b..ef54c48c696 100644 --- a/forge-gui/res/cardsfolder/e/ember_fist_zubera.txt +++ b/forge-gui/res/cardsfolder/e/ember_fist_zubera.txt @@ -2,9 +2,9 @@ Name:Ember-Fist Zubera ManaCost:1 R Types:Creature Zubera Spirit PT:1/2 -T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, it deals damage to target creature or player equal to the number of Zubera that died this turn. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, it deals damage to any target equal to the number of Zubera that died this turn. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X SVar:X:Count$ThisTurnEntered_Graveyard_from_Battlefield_Card.Zubera DeckHints:Type$Zubera SVar:Picture:http://resources.wizards.com/magic/cards/chk/en-us/card80508.jpg -Oracle:When Ember-Fist Zubera dies, it deals damage to target creature or player equal to the number of Zubera that died this turn. +Oracle:When Ember-Fist Zubera dies, it deals damage to any target equal to the number of Zubera that died this turn. diff --git a/forge-gui/res/cardsfolder/e/ember_hauler.txt b/forge-gui/res/cardsfolder/e/ember_hauler.txt index 2369c8183e2..2cf7c3d6d4f 100644 --- a/forge-gui/res/cardsfolder/e/ember_hauler.txt +++ b/forge-gui/res/cardsfolder/e/ember_hauler.txt @@ -2,6 +2,6 @@ Name:Ember Hauler ManaCost:R R Types:Creature Goblin PT:2/2 -A:AB$ DealDamage | Cost$ 1 Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:AB$ DealDamage | Cost$ 1 Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/ember_hauler.jpg -Oracle:{1}, Sacrifice Ember Hauler: Ember Hauler deals 2 damage to target creature or player. +Oracle:{1}, Sacrifice Ember Hauler: Ember Hauler deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/e/ember_shot.txt b/forge-gui/res/cardsfolder/e/ember_shot.txt index abb6be94bd4..fa28ac3778c 100644 --- a/forge-gui/res/cardsfolder/e/ember_shot.txt +++ b/forge-gui/res/cardsfolder/e/ember_shot.txt @@ -1,7 +1,7 @@ Name:Ember Shot ManaCost:6 R Types:Instant -A:SP$ DealDamage | Cost$ 6 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ Ember Shot deals 3 damage to target creature or player. | SubAbility$ DBDraw +A:SP$ DealDamage | Cost$ 6 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ Ember Shot deals 3 damage to any target. | SubAbility$ DBDraw SVar:DBDraw:DB$Draw | NumCards$ 1 | SpellDescription$ Draw a card. SVar:Picture:http://www.wizards.com/global/images/magic/general/ember_shot.jpg -Oracle:Ember Shot deals 3 damage to target creature or player.\nDraw a card. +Oracle:Ember Shot deals 3 damage to any target.\nDraw a card. diff --git a/forge-gui/res/cardsfolder/e/embermage_goblin.txt b/forge-gui/res/cardsfolder/e/embermage_goblin.txt index 50ce997f733..f01a7a87503 100644 --- a/forge-gui/res/cardsfolder/e/embermage_goblin.txt +++ b/forge-gui/res/cardsfolder/e/embermage_goblin.txt @@ -2,9 +2,9 @@ Name:Embermage Goblin ManaCost:3 R Types:Creature Goblin Wizard PT:1/1 -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | OptionalDecider$ You | Execute$ TrigChange | TriggerDescription$ When CARDNAME enters the battlefield, you may search your library for a card named CARDNAME, reveal it, and put it into your hand. If you do, shuffle your library. SVar:TrigChange:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Card.namedEmbermage Goblin | ChangeNum$ 1 | ShuffleNonMandatory$ True DeckHints:Name$Embermage Goblin SVar:Picture:http://www.wizards.com/global/images/magic/general/embermage_goblin.jpg -Oracle:When Embermage Goblin enters the battlefield, you may search your library for a card named Embermage Goblin, reveal it, and put it into your hand. If you do, shuffle your library.\n{T}: Embermage Goblin deals 1 damage to target creature or player. +Oracle:When Embermage Goblin enters the battlefield, you may search your library for a card named Embermage Goblin, reveal it, and put it into your hand. If you do, shuffle your library.\n{T}: Embermage Goblin deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/e/embersmith.txt b/forge-gui/res/cardsfolder/e/embersmith.txt index d9bb266c736..69aaffa4c86 100644 --- a/forge-gui/res/cardsfolder/e/embersmith.txt +++ b/forge-gui/res/cardsfolder/e/embersmith.txt @@ -2,8 +2,8 @@ Name:Embersmith ManaCost:1 R Types:Creature Human Artificer PT:2/1 -T:Mode$ SpellCast | ValidCard$ Artifact | ValidActivatingPlayer$ You | Execute$ TrigDamage | TriggerZones$ Battlefield | OptionalDecider$ You | TriggerDescription$ Whenever you cast an artifact spell, you may pay {1}. If you do, CARDNAME deals 1 damage to target creature or player. -SVar:TrigDamage:AB$DealDamage | Cost$ 1 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 +T:Mode$ SpellCast | ValidCard$ Artifact | ValidActivatingPlayer$ You | Execute$ TrigDamage | TriggerZones$ Battlefield | OptionalDecider$ You | TriggerDescription$ Whenever you cast an artifact spell, you may pay {1}. If you do, CARDNAME deals 1 damage to any target. +SVar:TrigDamage:AB$DealDamage | Cost$ 1 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 SVar:BuffedBy:Artifact SVar:Picture:http://www.wizards.com/global/images/magic/general/embersmith.jpg -Oracle:Whenever you cast an artifact spell, you may pay {1}. If you do, Embersmith deals 1 damage to target creature or player. +Oracle:Whenever you cast an artifact spell, you may pay {1}. If you do, Embersmith deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/e/emberwilde_augur.txt b/forge-gui/res/cardsfolder/e/emberwilde_augur.txt index 2896517d112..4cb57485825 100644 --- a/forge-gui/res/cardsfolder/e/emberwilde_augur.txt +++ b/forge-gui/res/cardsfolder/e/emberwilde_augur.txt @@ -2,6 +2,6 @@ Name:Emberwilde Augur ManaCost:1 R Types:Creature Goblin Shaman PT:2/1 -A:AB$ DealDamage | Cost$ Sac<1/CARDNAME> | NumDmg$ 3 | ValidTgts$ Player | TgtPrompt$ Select target player | PlayerTurn$ True | ActivationPhases$ Upkeep | SpellDescription$ CARDNAME deals 3 damage to target player. Activate this ability only during your upkeep. +A:AB$ DealDamage | Cost$ Sac<1/CARDNAME> | NumDmg$ 3 | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | PlayerTurn$ True | ActivationPhases$ Upkeep | SpellDescription$ CARDNAME deals 3 damage to target player or planeswalker. Activate this ability only during your upkeep. SVar:Picture:http://www.wizards.com/global/images/magic/general/emberwilde_augur.jpg -Oracle:Sacrifice Emberwilde Augur: Emberwilde Augur deals 3 damage to target player. Activate this ability only during your upkeep. +Oracle:Sacrifice Emberwilde Augur: Emberwilde Augur deals 3 damage to target player or planeswalker. Activate this ability only during your upkeep. diff --git a/forge-gui/res/cardsfolder/e/embolden.txt b/forge-gui/res/cardsfolder/e/embolden.txt index 3fca731897d..b3fdc925a2f 100644 --- a/forge-gui/res/cardsfolder/e/embolden.txt +++ b/forge-gui/res/cardsfolder/e/embolden.txt @@ -1,8 +1,8 @@ Name:Embolden ManaCost:2 W Types:Instant -A:SP$ PreventDamage | Cost$ 2 W | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to prevent damage to | Amount$ 4 | TargetMin$ 1 | TargetMax$ 4 | DividedAsYouChoose$ 4 | SpellDescription$ Prevent the next 4 damage that would be dealt this turn to any number of target creatures and/or players, divided as you choose. -K:Flashback 1 W +A:SP$ PreventDamage | Cost$ 2 W | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to prevent damage to | Amount$ 4 | TargetMin$ 1 | TargetMax$ 4 | DividedAsYouChoose$ 4 | SpellDescription$ Prevent the next 4 damage that would be dealt this turn to any number of targets, divided as you choose. +K:Flashback:1 W SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/embolden.jpg -Oracle:Prevent the next 4 damage that would be dealt this turn to any number of target creatures and/or players, divided as you choose.\nFlashback {1}{W} (You may cast this card from your graveyard for its flashback cost. Then exile it.) +Oracle:Prevent the next 4 damage that would be dealt this turn to any number of targets, divided as you choose.\nFlashback {1}{W} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/e/empyrial_storm.txt b/forge-gui/res/cardsfolder/e/empyrial_storm.txt new file mode 100644 index 00000000000..f1ddd526249 --- /dev/null +++ b/forge-gui/res/cardsfolder/e/empyrial_storm.txt @@ -0,0 +1,9 @@ +Name:Empyrial Storm +ManaCost:4 W W +Types:Sorcery +T:Mode$ SpellCast | ValidCard$ Card.Self | Execute$ TrigCopy | TriggerDescription$ When you cast CARDNAME, copy it for each time you've cast your commander from the command zone this game. +SVar:TrigCopy:DB$ CopySpellAbility | Defined$ TriggeredSpellAbility +SVar:X:Count$CommanderCastFromCommandZone +A:SP$ Token | Cost$ 4 W W | TokenAmount$ 1 | TokenName$ Angel | TokenTypes$ Creature,Angel | TokenOwner$ You | TokenColors$ White | TokenPower$ 4 | TokenToughness$ 4 | TokenKeywords$ Flying | TokenImage$ w 4 4 angel gtc | SpellDescription$ Create a 4/4 white Angel creature token with flying. +DeckHas:Ability$Token +Oracle:When you cast this spell, copy it for each time you've cast your commander from the command zone this game.\nCreate a 4/4 white Angel creature token with flying. diff --git a/forge-gui/res/cardsfolder/e/enchanters_bane.txt b/forge-gui/res/cardsfolder/e/enchanters_bane.txt new file mode 100644 index 00000000000..2033cd0b195 --- /dev/null +++ b/forge-gui/res/cardsfolder/e/enchanters_bane.txt @@ -0,0 +1,7 @@ +Name:Enchanter's Bane +ManaCost:1 R +Types:Enchantment +T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ At the beginning of your end step, target enchantment deals damage equal to its converted mana cost to its controller unless that player sacrifices it. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Enchantment | TgtPrompt$ Select target enchantment | NumDmg$ X | UnlessCost$ Sacrifice | UnlessPayer$ TargetedController | UnlessAI$ WhenPaid | References$ X +SVar:X:Targeted$CardManaCost +Oracle:At the beginning of your end step, target enchantment deals damage equal to its converted mana cost to its controller unless that player sacrifices it. diff --git a/forge-gui/res/cardsfolder/e/endbringer.txt b/forge-gui/res/cardsfolder/e/endbringer.txt index eaa0965cf74..57a6da8643e 100644 --- a/forge-gui/res/cardsfolder/e/endbringer.txt +++ b/forge-gui/res/cardsfolder/e/endbringer.txt @@ -3,9 +3,9 @@ ManaCost:5 C Types:Creature Eldrazi PT:5/5 K:CARDNAME untaps during each other player's untap step. -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. A:AB$ Pump | Cost$ C T | ValidTgts$ Creature | TgtPrompt$ Select target creature | IsCurse$ True | KW$ HIDDEN CARDNAME can't attack or block. | SpellDescription$ Target creature can't attack or block this turn. A:AB$ Draw | Cost$ C C T | NumCards$ 1 | SpellDescription$ Draw a card. DeckNeeds:Ability$Mana.Colorless SVar:Picture:http://www.wizards.com/global/images/magic/general/endbringer.jpg -Oracle:Untap Endbringer during each other player's untap step.\n{T}: Endbringer deals 1 damage to target creature or player.\n{C}, {T}: Target creature can't attack or block this turn.\n{C}{C}, {T}: Draw a card. +Oracle:Untap Endbringer during each other player's untap step.\n{T}: Endbringer deals 1 damage to any target.\n{C}, {T}: Target creature can't attack or block this turn.\n{C}{C}, {T}: Draw a card. diff --git a/forge-gui/res/cardsfolder/e/endless_atlas.txt b/forge-gui/res/cardsfolder/e/endless_atlas.txt new file mode 100644 index 00000000000..2c5b2f3a51c --- /dev/null +++ b/forge-gui/res/cardsfolder/e/endless_atlas.txt @@ -0,0 +1,6 @@ +Name:Endless Atlas +ManaCost:2 +Types:Artifact +A:AB$ Draw | Cost$ 2 T | CheckSvar$ X | SVarCompare$ GE3 | Refences$ X | SpellDescription$ Draw a card. Activate this ability only if you control three or more lands with the same name. +SVar:X:Count$MostCardName Land.YouCtrl +Oracle:2, T: Draw a card. Activate this ability only if you control three or more lands with the same name. diff --git a/forge-gui/res/cardsfolder/e/energy_bolt.txt b/forge-gui/res/cardsfolder/e/energy_bolt.txt index 24bd5ce263b..8f76c269f08 100644 --- a/forge-gui/res/cardsfolder/e/energy_bolt.txt +++ b/forge-gui/res/cardsfolder/e/energy_bolt.txt @@ -2,8 +2,8 @@ Name:Energy Bolt ManaCost:X R W Types:Sorcery A:SP$ Charm | Cost$ X R W | Choices$ DBDmg,DBGainLife -SVar:DBDmg:DB$ DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to target player. +SVar:DBDmg:DB$ DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to target player or planeswalker. SVar:DBGainLife:DB$ GainLife | ValidTgts$ Player | TgtPrompt$ Select target player | LifeAmount$ X | References$ X | SpellDescription$ Target player gains X life. SVar:X:Count$xPaid SVar:Picture:http://www.wizards.com/global/images/magic/general/energy_bolt.jpg -Oracle:Choose one —\n• Energy Bolt deals X damage to target player.\n• Target player gains X life. +Oracle:Choose one —\n• Energy Bolt deals X damage to target player or planeswalker.\n• Target player gains X life. diff --git a/forge-gui/res/cardsfolder/e/engulfing_flames.txt b/forge-gui/res/cardsfolder/e/engulfing_flames.txt index 34670af60ad..403062aaff8 100644 --- a/forge-gui/res/cardsfolder/e/engulfing_flames.txt +++ b/forge-gui/res/cardsfolder/e/engulfing_flames.txt @@ -1,7 +1,7 @@ Name:Engulfing Flames ManaCost:R Types:Instant -K:Flashback 3 R +K:Flashback:3 R A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 1 | SubAbility$ DB | SpellDescription$ CARDNAME deals 1 damage to target creature. It can't be regenerated this turn. SVar:DB:DB$Pump | KW$ HIDDEN CARDNAME can't be regenerated. | Defined$ Targeted SVar:Picture:http://www.wizards.com/global/images/magic/general/engulfing_flames.jpg diff --git a/forge-gui/res/cardsfolder/e/enigma_drake.txt b/forge-gui/res/cardsfolder/e/enigma_drake.txt index f4d94dcddd0..77eb7ab23c3 100644 --- a/forge-gui/res/cardsfolder/e/enigma_drake.txt +++ b/forge-gui/res/cardsfolder/e/enigma_drake.txt @@ -6,4 +6,5 @@ K:Flying S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ X | References$ X | Description$ CARDNAME's power is equal to the number of instant and sorcery cards in your graveyard. SVar:X:Count$ValidGraveyard Instant.YouOwn,Sorcery.YouOwn SVar:Picture:http://www.wizards.com/global/images/magic/general/enigma_drake.jpg +DeckHints:Type$Instant|Sorcery Oracle:Flying\nEnigma Drake's power is equal to the number of instant and sorcery cards in your graveyard. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/e/enraging_licid.txt b/forge-gui/res/cardsfolder/e/enraging_licid.txt index 08b98acca0c..e4fc0844bdb 100644 --- a/forge-gui/res/cardsfolder/e/enraging_licid.txt +++ b/forge-gui/res/cardsfolder/e/enraging_licid.txt @@ -2,7 +2,7 @@ Name:Enraging Licid ManaCost:1 R Types:Creature Licid PT:1/1 -A:AB$ Animate | Cost$ R T | Defined$ Self | RemoveThisAbility$ True | Permanent$ True | RevertCost$ R | Keywords$ Enchant creature | Abilities$ SPAttach | Types$ Enchantment,Aura | RemoveCardTypes$ True | RemoveSubTypes$ True | SubAbility$ DBAttach | SpellDescription$ CARDNAME loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {R} to end this effect. +A:AB$ Animate | Cost$ R T | Defined$ Self | RemoveThisAbility$ True | Permanent$ True | RevertCost$ R | Keywords$ Enchant creature | Abilities$ SPAttach | Types$ Enchantment,Aura | RemoveCardTypes$ True | RemoveEnchantmentTypes$ True | SubAbility$ DBAttach | SpellDescription$ CARDNAME loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {R} to end this effect. SVar:DBAttach:DB$ Attach | ValidTgts$ Creature | AILogic$ Pump SVar:SPAttach:SP$ Attach | Cost$ 0 | ValidTgts$ Creature S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Haste | Description$ Enchanted creature has haste. diff --git a/forge-gui/res/cardsfolder/e/ensouled_scimitar.txt b/forge-gui/res/cardsfolder/e/ensouled_scimitar.txt index 6d50a19c6b3..8043d78f817 100644 --- a/forge-gui/res/cardsfolder/e/ensouled_scimitar.txt +++ b/forge-gui/res/cardsfolder/e/ensouled_scimitar.txt @@ -2,7 +2,7 @@ Name:Ensouled Scimitar ManaCost:3 Types:Artifact Equipment K:Equip:2 -A:AB$ Animate | Cost$ 3 | Defined$ Self | Power$ 1 | Toughness$ 5 | Types$ Creature,Artifact,Spirit | Keywords$ Flying | OverwriteTypes$ True | SpellDescription$ CARDNAME becomes a 1/5 Spirit artifact creature with flying until end of turn. (Equipment that's a creature can't equip a creature.) +A:AB$ Animate | Cost$ 3 | Defined$ Self | Power$ 1 | Toughness$ 5 | Types$ Creature,Artifact,Spirit | Keywords$ Flying | RemoveCardTypes$ True | RemoveCreatureTypes$ True | SpellDescription$ CARDNAME becomes a 1/5 Spirit artifact creature with flying until end of turn. (Equipment that's a creature can't equip a creature.) S:Mode$ Continuous | Affected$ Card.EquippedBy | AddPower$ 1 | AddToughness$ 5 | Description$ Equipped creature gets +1/+5. SVar:Picture:http://www.wizards.com/global/images/magic/general/ensouled_scimitar.jpg Oracle:{3}: Ensouled Scimitar becomes a 1/5 Spirit artifact creature with flying until end of turn. (Equipment that's a creature can't equip a creature.)\nEquipped creature gets +1/+5.\nEquip {2} ({2}: Attach to target creature you control. Equip only as a sorcery.) diff --git a/forge-gui/res/cardsfolder/e/entreat_the_dead.txt b/forge-gui/res/cardsfolder/e/entreat_the_dead.txt new file mode 100644 index 00000000000..aadecb5b7e9 --- /dev/null +++ b/forge-gui/res/cardsfolder/e/entreat_the_dead.txt @@ -0,0 +1,8 @@ +Name:Entreat the Dead +ManaCost:X X B B B +Types:Sorcery +A:SP$ ChangeZone | Cost$ X X B B B | TargetMin$ 0 | TargetMax$ MaxTgts | ValidTgts$ Creature.YouOwn | TgtPrompt$ Select target creature in your graveyard | Origin$ Graveyard | Destination$ Battlefield | References$ X,MaxTgts | SpellDescription$ Return X target creature cards from your graveyard to the battlefield. +K:Miracle:X B B +SVar:X:Targeted$Amount +SVar:MaxTgts:Count$TypeInYourYard.Creature +Oracle:Return X target creature cards from your graveyard to the battlefield.\nMiracle {X}{B}{B} (You may cast this card for its miracle cost when you draw it if it's the first card you drew this turn.) diff --git a/forge-gui/res/cardsfolder/e/epicure_of_blood.txt b/forge-gui/res/cardsfolder/e/epicure_of_blood.txt new file mode 100644 index 00000000000..3bc6af35506 --- /dev/null +++ b/forge-gui/res/cardsfolder/e/epicure_of_blood.txt @@ -0,0 +1,8 @@ +Name:Epicure of Blood +ManaCost:4 B +Types:Creature Vampire +PT:4/4 +T:Mode$ LifeGained | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDrain | TriggerDescription$ Whenever you gain life, each opponent loses 1 life. +SVar:TrigDrain:DB$LoseLife | Defined$ Opponent | LifeAmount$ 1 +DeckHints:Ability$LifeGain +Oracle:Whenever you gain life, each opponent loses 1 life. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/e/equal_treatment.txt b/forge-gui/res/cardsfolder/e/equal_treatment.txt index 4708f4f30a1..3448c39b936 100644 --- a/forge-gui/res/cardsfolder/e/equal_treatment.txt +++ b/forge-gui/res/cardsfolder/e/equal_treatment.txt @@ -1,10 +1,10 @@ Name:Equal Treatment ManaCost:1 W Types:Instant -A:SP$ Effect | Cost$ 1 W | Name$ Equal Treatment Effect | ReplacementEffects$ EqualEvent | SVars$ DmgTwo | SubAbility$ DBDraw | SpellDescription$ If any source would deal 1 or more damage to a creature or player this turn, it deals 2 damage to that creature or player instead. Draw a card. -SVar:EqualEvent:Event$ DamageDone | ActiveZones$ Battlefield | ValidSource$ Card | ValidTarget$ Creature,Player | ReplaceWith$ DmgTwo | Description$ If any source would deal 1 or more damage to a creature or player this turn, it deals 2 damage to that creature or player instead. +A:SP$ Effect | Cost$ 1 W | Name$ Equal Treatment Effect | ReplacementEffects$ EqualEvent | SVars$ DmgTwo | SubAbility$ DBDraw | SpellDescription$ If any source would deal 1 or more damage to a permanent or player this turn, it deals 2 damage to that permanent or player instead. Draw a card. +SVar:EqualEvent:Event$ DamageDone | ActiveZones$ Battlefield | ValidSource$ Card | ValidTarget$ Permanent,Player | ReplaceWith$ DmgTwo | Description$ If any source would deal 1 or more damage to a permanent or player this turn, it deals 2 damage to that permanent or player instead. SVar:DmgTwo:DB$ ReplaceEffect | VarName$ DamageAmount | VarValue$ 2 SVar:DBDraw:DB$ Draw | NumCards$ 1 SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/equal_treatment.jpg -Oracle:If any source would deal 1 or more damage to a creature or player this turn, it deals 2 damage to that creature or player instead.\nDraw a card. +Oracle:If any source would deal 1 or more damage to a permanent or player this turn, it deals 2 damage to that permanent or player instead.\nDraw a card. diff --git a/forge-gui/res/cardsfolder/e/erratic_explosion.txt b/forge-gui/res/cardsfolder/e/erratic_explosion.txt index 2da06bc90da..cb52c63108f 100644 --- a/forge-gui/res/cardsfolder/e/erratic_explosion.txt +++ b/forge-gui/res/cardsfolder/e/erratic_explosion.txt @@ -1,9 +1,9 @@ Name:Erratic Explosion ManaCost:2 R Types:Sorcery -A:SP$ DigUntil | Cost$ 2 R | Valid$ Card.nonLand | ValidDescription$ nonland | FoundDestination$ Library | RevealedDestination$ Library | FoundLibraryPosition$ -1 | RevealedLibraryPosition$ -1 | RememberFound$ True | SubAbility$ Damage | SpellDescription$ Choose target creature or player. Reveal cards from the top of your library until you reveal a nonland card. Erratic Explosion deals damage equal to that card's converted mana cost to that creature or player. Put the revealed cards on the bottom of your library in any order. -SVar:Damage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | SubAbility$ DBCleanup | References$ X +A:SP$ DigUntil | Cost$ 2 R | Valid$ Card.nonLand | ValidDescription$ nonland | FoundDestination$ Library | RevealedDestination$ Library | FoundLibraryPosition$ -1 | RevealedLibraryPosition$ -1 | RememberFound$ True | SubAbility$ Damage | SpellDescription$ Choose any target. Reveal cards from the top of your library until you reveal a nonland card. Erratic Explosion deals damage equal to that card's converted mana cost to that permanent or player. Put the revealed cards on the bottom of your library in any order. +SVar:Damage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | SubAbility$ DBCleanup | References$ X SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Remembered$CardManaCost SVar:Picture:http://resources.wizards.com/magic/cards/ons/en-us/card12484.jpg -Oracle:Choose target creature or player. Reveal cards from the top of your library until you reveal a nonland card. Erratic Explosion deals damage equal to that card's converted mana cost to that creature or player. Put the revealed cards on the bottom of your library in any order. +Oracle:Choose any target. Reveal cards from the top of your library until you reveal a nonland card. Erratic Explosion deals damage equal to that card's converted mana cost to that permanent or player. Put the revealed cards on the bottom of your library in any order. diff --git a/forge-gui/res/cardsfolder/e/essence_drain.txt b/forge-gui/res/cardsfolder/e/essence_drain.txt index c2224350a06..381934de393 100644 --- a/forge-gui/res/cardsfolder/e/essence_drain.txt +++ b/forge-gui/res/cardsfolder/e/essence_drain.txt @@ -1,7 +1,7 @@ Name:Essence Drain ManaCost:4 B Types:Sorcery -A:SP$ DealDamage | Cost$ 4 B | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SubAbility$ DBGainLife | SpellDescription$ Essence Drain deals 3 damage to target creature or player and you gain 3 life. +A:SP$ DealDamage | Cost$ 4 B | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SubAbility$ DBGainLife | SpellDescription$ Essence Drain deals 3 damage to any target and you gain 3 life. SVar:DBGainLife:DB$GainLife | Defined$ You | LifeAmount$ 3 SVar:Picture:http://www.wizards.com/global/images/magic/general/essence_drain.jpg -Oracle:Essence Drain deals 3 damage to target creature or player and you gain 3 life. +Oracle:Essence Drain deals 3 damage to any target and you gain 3 life. diff --git a/forge-gui/res/cardsfolder/e/estrid_the_masked.txt b/forge-gui/res/cardsfolder/e/estrid_the_masked.txt new file mode 100644 index 00000000000..ffa95c6666f --- /dev/null +++ b/forge-gui/res/cardsfolder/e/estrid_the_masked.txt @@ -0,0 +1,14 @@ +Name:Estrid, the Masked +ManaCost:1 G W U +Types:Legendary Planeswalker Estrid +Loyalty:3 +A:AB$ UntapAll | Cost$ AddCounter<2/LOYALTY> | Planeswalker$ True | ValidCards$ Permanent.enchanted+YouCtrl | SpellDescription$ Untap each enchanted permanent you control. +SVar:BuffedBy:Permanent.enchanted +A:AB$ Token | Cost$ SubCounter<1/LOYALTY> | Planeswalker$ True | TokenAmount$ 1 | TokenName$ Mask | TokenImage$ mask | TokenTypes$ Enchantment,Aura | TokenOwner$ You | TokenColors$ White | TokenKeywords$ Enchant permanent<>Totem armor | TokenAbilities$ DBFirstAttach | AttachedTo$ Targeted | ValidTgts$ Permanent.Other | TgtPrompt$ Select target permanent to attach Mask Token | SpellDescription$ Create a white Aura enchantment token named Mask attached to another target permanent. The token has enchant permanent and totem armor. +SVar:DBFirstAttach:SP$ Attach | Cost$ 0 | ValidTgts$ Permanent | AILogic$ Pump +A:AB$ Mill | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True | NumCards$ 7 | Defined$ You | SubAbility$ DBChangeZone | SpellDescription$ Put the top seven cards of your library into your graveyard. Return all non-Aura enchantment cards from your graveyard to the battlefield, then do the same for Aura cards. +SVar:DBChangeZone:DB$ ChangeZoneAll | ChangeType$ Enchantment.nonAura+YouCtrl | Origin$ Graveyard | Destination$ Battlefield | SubAbility$ DBChangeZone2 +SVar:DBChangeZone2:DB$ ChangeZoneAll | ChangeType$ Enchantment.Aura+YouCtrl | Origin$ Graveyard | Destination$ Battlefield +K:CARDNAME can be your commander. +Oracle:[+2]: Untap each enchanted permanent you control.\n[-1]: Create a white Aura enchantment token named Mask attached to another target permanent. The token has enchant permanent and totem armor.\n[-7]: Put the top seven cards of your library into your graveyard. Return all non-Aura enchantment cards from your graveyard to the battlefield, then do the same for Aura cards.\nEstrid, the Masked can be your commander. + diff --git a/forge-gui/res/cardsfolder/e/estrids_invocation.txt b/forge-gui/res/cardsfolder/e/estrids_invocation.txt new file mode 100644 index 00000000000..413f2310d90 --- /dev/null +++ b/forge-gui/res/cardsfolder/e/estrids_invocation.txt @@ -0,0 +1,9 @@ +Name:Estrid's Invocation +ManaCost:2 U +Types:Enchantment +K:ETBReplacement:Copy:DBCopy:Optional +SVar:DBCopy:DB$ Clone | Choices$ Enchantment.Other+YouCtrl | AILogic$ AtLeast1 | AddTriggers$ InvocationExileUpkeep | AddSVars$ InvocationDBReturn,InvocationTrigExile,InvocationExileUpkeep | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of any enchantment you control, except it gains "At the beginning of your upkeep, you may exile this enchantment. If you do, return it to the battlefield under its owner's control." +SVar:InvocationExileUpkeep:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ InvocationTrigExile | OptionalDecider$ You | IsPresent$ Card.Self | TriggerDescription$ At the beginning of your upkeep you may exile this enchantment. If you do, return it to the battlefield under it's owner's control. +SVar:InvocationTrigExile:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Exile | SubAbility$ InvocationDBReturn +SVar:InvocationDBReturn:DB$ ChangeZone | Defined$ CorrectedSelf | Origin$ All | Destination$ Battlefield | GainControl$ True +Oracle:You may have Estrid's Invocation enter the battlefield as a copy of any enchantment you control, except it gains "At the beginning of your upkeep, you may exile this enchantment. If you do, return it to the battlefield under its owner's control." diff --git a/forge-gui/res/cardsfolder/e/eternal_flame.txt b/forge-gui/res/cardsfolder/e/eternal_flame.txt index b8ee9afcdf3..bed3909e609 100644 --- a/forge-gui/res/cardsfolder/e/eternal_flame.txt +++ b/forge-gui/res/cardsfolder/e/eternal_flame.txt @@ -1,9 +1,9 @@ Name:Eternal Flame ManaCost:2 R R Types:Sorcery -A:SP$ DealDamage | Cost$ 2 R R | ValidTgts$ Opponent| NumDmg$ X | SubAbility$ DBDealDamage | References$ X | SpellDescription$ CARDNAME deals X damage to target opponent where X is the number of mountains you control. It deals half X damage, rounded up, to you. +A:SP$ DealDamage | Cost$ 2 R R | ValidTgts$ Opponent,Planeswalker| NumDmg$ X | SubAbility$ DBDealDamage | References$ X | SpellDescription$ CARDNAME deals X damage to target opponent or planeswalker, where X is the number of mountains you control. It deals half X damage, rounded up, to you. SVar:DBDealDamage:DB$DealDamage | NumDmg$ Y | Defined$ You | References$ Y SVar:X:Count$NumTypeYouCtrl.Mountain SVar:Y:Count$NumTypeYouCtrl.Mountain/HalfUp SVar:Picture:http://www.wizards.com/global/images/magic/general/eternal_flame.jpg -Oracle:Eternal Flame deals X damage to target opponent, where X is the number of Mountains you control. It deals half X damage, rounded up, to you. +Oracle:Eternal Flame deals X damage to target opponent or planeswalker, where X is the number of Mountains you control. It deals half X damage, rounded up, to you. diff --git a/forge-gui/res/cardsfolder/e/eternal_of_harsh_truths.txt b/forge-gui/res/cardsfolder/e/eternal_of_harsh_truths.txt index 15934e4a652..ab02899d2f4 100644 --- a/forge-gui/res/cardsfolder/e/eternal_of_harsh_truths.txt +++ b/forge-gui/res/cardsfolder/e/eternal_of_harsh_truths.txt @@ -2,7 +2,7 @@ Name:Eternal of Harsh Truths ManaCost:2 U Types:Creature Zombie Cleric PT:1/3 -K:Afflict 2 +K:Afflict:2 T:Mode$ AttackerUnblocked | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever CARDNAME attacks and isn't blocked, draw a card. SVar:TrigDraw:DB$Draw | Defined$ You | NumCards$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/eternal_of_harsh_truths.jpg diff --git a/forge-gui/res/cardsfolder/e/ever_watching_threshold.txt b/forge-gui/res/cardsfolder/e/ever_watching_threshold.txt new file mode 100644 index 00000000000..29d76f8fcd8 --- /dev/null +++ b/forge-gui/res/cardsfolder/e/ever_watching_threshold.txt @@ -0,0 +1,6 @@ +Name:Ever-Watching Threshold +ManaCost:2 U +Types:Enchantment +T:Mode$ AttackersDeclared | Execute$ TrigDraw | TriggerZones$ Battlefield | AttackedTarget$ You,Planeswalker.YouCtrl | TriggerDescription$ Whenever an opponent attacks you and/or a planeswalker you control with one or more creatures, draw a card. +SVar:TrigDraw:DB$ Draw | NumCards$ 1 | Defined$ You +Oracle:Whenever an opponent attacks you and/or a planeswalker you control with one or more creatures, draw a card. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/e/evil_presence.txt b/forge-gui/res/cardsfolder/e/evil_presence.txt index 4a0eca48f1b..bee19fd7e06 100644 --- a/forge-gui/res/cardsfolder/e/evil_presence.txt +++ b/forge-gui/res/cardsfolder/e/evil_presence.txt @@ -3,6 +3,6 @@ ManaCost:B Types:Enchantment Aura K:Enchant land A:SP$ Attach | Cost$ B | ValidTgts$ Land | AILogic$ ChangeType -S:Mode$ Continuous | Affected$ Card.EnchantedBy | AddType$ Swamp | RemoveSubTypes$ True | RemoveAllAbilities$ True | Description$ Enchanted land is a Swamp. +S:Mode$ Continuous | Affected$ Card.EnchantedBy | AddType$ Swamp | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True | Description$ Enchanted land is a Swamp. SVar:Picture:http://www.wizards.com/global/images/magic/general/evil_presence.jpg Oracle:Enchant land\nEnchanted land is a Swamp. diff --git a/forge-gui/res/cardsfolder/e/exclusion_mage.txt b/forge-gui/res/cardsfolder/e/exclusion_mage.txt new file mode 100644 index 00000000000..bb3225c1a95 --- /dev/null +++ b/forge-gui/res/cardsfolder/e/exclusion_mage.txt @@ -0,0 +1,7 @@ +Name:Exclusion Mage +ManaCost:2 U +Types:Creature Human Wizard +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigBounce | TriggerDescription$ When CARDNAME enters the battlefield, return target creature an opponent controls to its owner's hand. +SVar:TrigBounce:DB$ ChangeZone | ValidTgts$ Creature.OppCtrl | Origin$ Battlefield | Destination$ Hand | TgtPrompt$ Select target creature an opponent controls +Oracle:When Exclusion Mage enters the battlefield, return target creature an opponent controls to its owner's hand. +PT:2/2 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/e/exploding_borders.txt b/forge-gui/res/cardsfolder/e/exploding_borders.txt index 95b5d116cd8..f1f6c41360b 100644 --- a/forge-gui/res/cardsfolder/e/exploding_borders.txt +++ b/forge-gui/res/cardsfolder/e/exploding_borders.txt @@ -2,7 +2,7 @@ Name:Exploding Borders ManaCost:2 R G Types:Sorcery A:SP$ ChangeZone | Cost$ 2 R G | Origin$ Library | Destination$ Battlefield | ChangeType$ Land.Basic | Tapped$ True | ChangeNum$ 1 | SubAbility$ DBDealDamage | SpellDescription$ Domain — Search your library for a basic land card and put that card onto the battlefield tapped. Then shuffle your library. -SVar:DBDealDamage:DB$DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to target player, where X is the number of basic land types among lands you control. +SVar:DBDealDamage:DB$DealDamage | ValidTgts$ Player,Planeswlaker | TgtPrompt$ Select target player or planeswalker | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to target player or planeswalker, where X is the number of basic land types among lands you control. SVar:X:Count$Domain SVar:Picture:http://www.wizards.com/global/images/magic/general/exploding_borders.jpg -Oracle:Domain — Search your library for a basic land card, put that card onto the battlefield tapped, then shuffle your library. Exploding Borders deals X damage to target player, where X is the number of basic land types among lands you control. +Oracle:Domain — Search your library for a basic land card, put that card onto the battlefield tapped, then shuffle your library. Exploding Borders deals X damage to target player or planeswalker, where X is the number of basic land types among lands you control. diff --git a/forge-gui/res/cardsfolder/e/explosive_apparatus.txt b/forge-gui/res/cardsfolder/e/explosive_apparatus.txt index ea616f72e2a..93be0a35c2a 100644 --- a/forge-gui/res/cardsfolder/e/explosive_apparatus.txt +++ b/forge-gui/res/cardsfolder/e/explosive_apparatus.txt @@ -1,6 +1,6 @@ Name:Explosive Apparatus ManaCost:1 Types:Artifact -A:AB$ DealDamage | Cost$ 3 T Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:AB$ DealDamage | Cost$ 3 T Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/explosive_apparatus.jpg -Oracle:{3}, {T}, Sacrifice Explosive Apparatus: Explosive Apparatus deals 2 damage to target creature or player. +Oracle:{3}, {T}, Sacrifice Explosive Apparatus: Explosive Apparatus deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/e/explosive_impact.txt b/forge-gui/res/cardsfolder/e/explosive_impact.txt index ca9a0a1857e..568f5ab03b7 100644 --- a/forge-gui/res/cardsfolder/e/explosive_impact.txt +++ b/forge-gui/res/cardsfolder/e/explosive_impact.txt @@ -1,6 +1,6 @@ Name:Explosive Impact ManaCost:5 R Types:Instant -A:SP$ DealDamage | Cost$ 5 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 5 | SpellDescription$ CARDNAME deals 5 damage to target creature or player. +A:SP$ DealDamage | Cost$ 5 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 5 | SpellDescription$ CARDNAME deals 5 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/explosive_impact.jpg -Oracle:Explosive Impact deals 5 damage to target creature or player. +Oracle:Explosive Impact deals 5 damage to any target. diff --git a/forge-gui/res/cardsfolder/e/explosive_revelation.txt b/forge-gui/res/cardsfolder/e/explosive_revelation.txt index 72e87f2328e..b7dfa46b226 100644 --- a/forge-gui/res/cardsfolder/e/explosive_revelation.txt +++ b/forge-gui/res/cardsfolder/e/explosive_revelation.txt @@ -1,9 +1,9 @@ Name:Explosive Revelation ManaCost:3 R R Types:Sorcery -A:SP$ DigUntil | Cost$ 3 R R | Valid$ Card.nonLand | ValidDescription$ nonland | FoundDestination$ Hand | RevealedDestination$ Library | RevealedLibraryPosition$ -1 | RememberFound$ True | SubAbility$ Damage | SpellDescription$ Choose target creature or player. Reveal cards from the top of your library until you reveal a nonland card. CARDNAME deals damage equal to that card's converted mana cost to that creature or player. Put the nonland card into your hand and the rest on the bottom of your library in any order. -SVar:Damage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | SubAbility$ DBCleanup | References$ X +A:SP$ DigUntil | Cost$ 3 R R | Valid$ Card.nonLand | ValidDescription$ nonland | FoundDestination$ Hand | RevealedDestination$ Library | RevealedLibraryPosition$ -1 | RememberFound$ True | SubAbility$ Damage | SpellDescription$ Choose any target. Reveal cards from the top of your library until you reveal a nonland card. CARDNAME deals damage equal to that card's converted mana cost to that permanent or player. Put the nonland card into your hand and the rest on the bottom of your library in any order. +SVar:Damage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | SubAbility$ DBCleanup | References$ X SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Remembered$CardManaCost SVar:Picture:http://www.wizards.com/global/images/magic/general/explosive_revelation.jpg -Oracle:Choose target creature or player. Reveal cards from the top of your library until you reveal a nonland card. Explosive Revelation deals damage equal to that card's converted mana cost to that creature or player. Put the nonland card into your hand and the rest on the bottom of your library in any order. +Oracle:Choose any target. Reveal cards from the top of your library until you reveal a nonland card. Explosive Revelation deals damage equal to that card's converted mana cost to that permanent or player. Put the nonland card into your hand and the rest on the bottom of your library in any order. diff --git a/forge-gui/res/cardsfolder/e/exquisite_firecraft.txt b/forge-gui/res/cardsfolder/e/exquisite_firecraft.txt index d79ba486d59..25e7dfa6c23 100644 --- a/forge-gui/res/cardsfolder/e/exquisite_firecraft.txt +++ b/forge-gui/res/cardsfolder/e/exquisite_firecraft.txt @@ -1,8 +1,8 @@ Name:Exquisite Firecraft ManaCost:1 R R Types:Sorcery -A:SP$ DealDamage | Cost$ 1 R R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target creature or player. +A:SP$ DealDamage | Cost$ 1 R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to any target. S:Mode$ Continuous | Affected$ Self | AffectedZone$ Stack | EffectZone$ All | CharacteristicDefining$ True | AddHiddenKeyword$ CARDNAME can't be countered. | CheckSVar$ X | SVarCompare$ GE2 | Description$ Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, CARDNAME can't be countered by spells or abilities. SVar:X:Count$ValidGraveyard Instant.YouOwn,Sorcery.YouOwn SVar:Picture:http://www.wizards.com/global/images/magic/general/exquisite_firecraft.jpg -Oracle:Exquisite Firecraft deals 4 damage to target creature or player.\nSpell mastery — If there are two or more instant and/or sorcery cards in your graveyard, Exquisite Firecraft can't be countered by spells or abilities. \ No newline at end of file +Oracle:Exquisite Firecraft deals 4 damage to any target.\nSpell mastery — If there are two or more instant and/or sorcery cards in your graveyard, Exquisite Firecraft can't be countered by spells or abilities. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/e/extra_arms.txt b/forge-gui/res/cardsfolder/e/extra_arms.txt index a89a3cdbeee..8fd26b836d1 100644 --- a/forge-gui/res/cardsfolder/e/extra_arms.txt +++ b/forge-gui/res/cardsfolder/e/extra_arms.txt @@ -3,9 +3,9 @@ ManaCost:4 R Types:Enchantment Aura K:Enchant creature A:SP$ Attach | Cost$ 4 R | ValidTgts$ Creature | AILogic$ Pump -T:Mode$ Attacks | ValidCard$ Card.AttachedBy | Execute$ TrigDamage | TriggerZones$ Battlefield | TriggerDescription$ Whenever enchanted creature attacks, it deals 2 damage to target creature or player. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | DamageSource$ TriggeredAttacker | NumDmg$ 2 +T:Mode$ Attacks | ValidCard$ Card.AttachedBy | Execute$ TrigDamage | TriggerZones$ Battlefield | TriggerDescription$ Whenever enchanted creature attacks, it deals 2 damage to any target. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | DamageSource$ TriggeredAttacker | NumDmg$ 2 S:Mode$ Continuous | Affected$ Creature.AttachedBy | AddSVar$ AE SVar:AE:SVar:HasAttackEffect:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/extra_arms.jpg -Oracle:Enchant creature\nWhenever enchanted creature attacks, it deals 2 damage to target creature or player. +Oracle:Enchant creature\nWhenever enchanted creature attacks, it deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/e/exuberant_firestoker.txt b/forge-gui/res/cardsfolder/e/exuberant_firestoker.txt index bb888e6846c..052101e9a3a 100644 --- a/forge-gui/res/cardsfolder/e/exuberant_firestoker.txt +++ b/forge-gui/res/cardsfolder/e/exuberant_firestoker.txt @@ -2,8 +2,8 @@ Name:Exuberant Firestoker ManaCost:2 R Types:Creature Human Druid Shaman PT:1/1 -T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | OptionalDecider$ You | IsPresent$ Creature.powerGE5+YouCtrl | Execute$ TrigDamage | TriggerDescription$ At the beginning of your end step, if you control a creature with power 5 or greater, you may have CARDNAME deal 2 damage to target player. +T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | OptionalDecider$ You | IsPresent$ Creature.powerGE5+YouCtrl | Execute$ TrigDamage | TriggerDescription$ At the beginning of your end step, if you control a creature with power 5 or greater, you may have CARDNAME deal 2 damage to target player or planeswalker. A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}. -SVar:TrigDamage:DB$DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 2 +SVar:TrigDamage:DB$DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 2 SVar:Picture:http://www.wizards.com/global/images/magic/general/exuberant_firestoker.jpg -Oracle:At the beginning of your end step, if you control a creature with power 5 or greater, you may have Exuberant Firestoker deal 2 damage to target player.\n{T}: Add {C}. +Oracle:At the beginning of your end step, if you control a creature with power 5 or greater, you may have Exuberant Firestoker deal 2 damage to target player or planeswalker.\n{T}: Add {C}. diff --git a/forge-gui/res/cardsfolder/f/faithless_looting.txt b/forge-gui/res/cardsfolder/f/faithless_looting.txt index 3d6e8e8a6f6..809b7ad0d5a 100644 --- a/forge-gui/res/cardsfolder/f/faithless_looting.txt +++ b/forge-gui/res/cardsfolder/f/faithless_looting.txt @@ -1,7 +1,7 @@ Name:Faithless Looting ManaCost:R Types:Sorcery -K:Flashback 2 R +K:Flashback:2 R A:SP$ Draw | Cost$ R | NumCards$ 2 | SpellDescription$ Draw two cards, then discard two cards. | SubAbility$ DBDiscard SVar:DBDiscard:DB$Discard | Defined$ You | NumCards$ 2 | Mode$ TgtChoose SVar:RemAIDeck:True diff --git a/forge-gui/res/cardsfolder/f/fall_of_the_titans.txt b/forge-gui/res/cardsfolder/f/fall_of_the_titans.txt index 5d2b9a5f282..f80f5973f44 100644 --- a/forge-gui/res/cardsfolder/f/fall_of_the_titans.txt +++ b/forge-gui/res/cardsfolder/f/fall_of_the_titans.txt @@ -2,7 +2,7 @@ Name:Fall of the Titans ManaCost:X X R Types:Instant K:Surge:X R -A:SP$ DealDamage | Cost$ X X R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | TargetMin$ 0 | TargetMax$ 2 | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to each of up to two target creatures and/or players +A:SP$ DealDamage | Cost$ X X R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | TargetMin$ 0 | TargetMax$ 2 | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to each of up to two targets. SVar:X:Count$xPaid SVar:Picture:http://www.wizards.com/global/images/magic/general/fall_of_the_titans.jpg -Oracle:Surge {X}{R} (You may cast this spell for its surge cost if you or a teammate has cast another spell this turn.)\nFall of the Titans deals X damage to each of up to two target creatures and/or players +Oracle:Surge {X}{R} (You may cast this spell for its surge cost if you or a teammate has cast another spell this turn.)\nFall of the Titans deals X damage to each of up to two targets. diff --git a/forge-gui/res/cardsfolder/f/fallen_ferromancer.txt b/forge-gui/res/cardsfolder/f/fallen_ferromancer.txt index 6c2ed6ef461..04fe69497a3 100644 --- a/forge-gui/res/cardsfolder/f/fallen_ferromancer.txt +++ b/forge-gui/res/cardsfolder/f/fallen_ferromancer.txt @@ -3,6 +3,6 @@ ManaCost:3 R Types:Creature Human Shaman PT:1/1 K:Infect -A:AB$ DealDamage | Cost$ 1 R T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ 1 R T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/fallen_ferromancer.jpg -Oracle:Infect (This creature deals damage to creatures in the form of -1/-1 counters and to players in the form of poison counters.)\n{1}{R}, {T}: Fallen Ferromancer deals 1 damage to target creature or player. +Oracle:Infect (This creature deals damage to creatures in the form of -1/-1 counters and to players in the form of poison counters.)\n{1}{R}, {T}: Fallen Ferromancer deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/f/fanatical_firebrand.txt b/forge-gui/res/cardsfolder/f/fanatical_firebrand.txt index d1b48e998c5..6c28222169c 100644 --- a/forge-gui/res/cardsfolder/f/fanatical_firebrand.txt +++ b/forge-gui/res/cardsfolder/f/fanatical_firebrand.txt @@ -3,6 +3,6 @@ ManaCost:R Types:Creature Goblin Pirate PT:1/1 K:Haste -A:AB$ DealDamage | Cost$ T Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ T Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/fanatical_firebrand.jpg -Oracle:Haste\n{T}, Sacrifice Fanatical Firebrand: It deals one damage to target creature or player. \ No newline at end of file +Oracle:Haste\n{T}, Sacrifice Fanatical Firebrand: It deals one damage to any target. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/f/fanning_the_flames.txt b/forge-gui/res/cardsfolder/f/fanning_the_flames.txt index 9b60f582869..2bdc0cae0a7 100644 --- a/forge-gui/res/cardsfolder/f/fanning_the_flames.txt +++ b/forge-gui/res/cardsfolder/f/fanning_the_flames.txt @@ -1,8 +1,8 @@ Name:Fanning the Flames ManaCost:X R R Types:Sorcery -A:SP$ DealDamage | Cost$ X R R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to target creature or player. +A:SP$ DealDamage | Cost$ X R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to any target. K:Buyback:3 SVar:X:Count$xPaid SVar:Picture:http://www.wizards.com/global/images/magic/general/fanning_the_flames.jpg -Oracle:Buyback {3} (You may pay an additional {3} as you cast this spell. If you do, put this card into your hand as it resolves.)\nFanning the Flames deals X damage to target creature or player. +Oracle:Buyback {3} (You may pay an additional {3} as you cast this spell. If you do, put this card into your hand as it resolves.)\nFanning the Flames deals X damage to any target. diff --git a/forge-gui/res/cardsfolder/f/fateful_showdown.txt b/forge-gui/res/cardsfolder/f/fateful_showdown.txt index 2028fcc4001..34a4d3277c8 100644 --- a/forge-gui/res/cardsfolder/f/fateful_showdown.txt +++ b/forge-gui/res/cardsfolder/f/fateful_showdown.txt @@ -1,11 +1,11 @@ Name:Fateful Showdown ManaCost:2 R R Types:Instant -A:SP$ DealDamage | Cost$ 2 R R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SubAbility$ DBDiscard | SpellDescription$ CARDNAME deals damage to target creature or player equal to the number of cards in your hand. Discard all the cards in your hand, then draw that many cards. +A:SP$ DealDamage | Cost$ 2 R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SubAbility$ DBDiscard | SpellDescription$ CARDNAME deals damage to any target equal to the number of cards in your hand. Discard all the cards in your hand, then draw that many cards. SVar:DBDiscard:DB$ Discard | Defined$ You | RememberDiscarded$ True | Mode$ Hand | SubAbility$ DBDraw SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ Y | SubAbility$ DBCleanup | References$ Y SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Count$CardsInYourHand SVar:Y:Remembered$Amount SVar:Picture:http://www.wizards.com/global/images/magic/general/fateful_showdown.jpg -Oracle:Fateful Showdown deals damage to target creature or player equal to the number of cards in your hand. Discard all the cards in your hand, then draw that many cards. +Oracle:Fateful Showdown deals damage to any target equal to the number of cards in your hand. Discard all the cards in your hand, then draw that many cards. diff --git a/forge-gui/res/cardsfolder/f/feedback_bolt.txt b/forge-gui/res/cardsfolder/f/feedback_bolt.txt index 6cf9476bac1..504791c8fc6 100644 --- a/forge-gui/res/cardsfolder/f/feedback_bolt.txt +++ b/forge-gui/res/cardsfolder/f/feedback_bolt.txt @@ -1,8 +1,8 @@ Name:Feedback Bolt ManaCost:4 R Types:Instant -A:SP$ DealDamage | Cost$ 4 R | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage to target player equal to the number of artifacts you control. +A:SP$ DealDamage | Cost$ 4 R | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage to target player or planeswalker equal to the number of artifacts you control. SVar:X:Count$TypeYouCtrl.Artifact SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/feedback_bolt.jpg -Oracle:Feedback Bolt deals damage to target player equal to the number of artifacts you control. +Oracle:Feedback Bolt deals damage to target player or planeswalker equal to the number of artifacts you control. diff --git a/forge-gui/res/cardsfolder/f/feeling_of_dread.txt b/forge-gui/res/cardsfolder/f/feeling_of_dread.txt index 407fff9c982..b264675ef31 100644 --- a/forge-gui/res/cardsfolder/f/feeling_of_dread.txt +++ b/forge-gui/res/cardsfolder/f/feeling_of_dread.txt @@ -1,7 +1,7 @@ Name:Feeling of Dread ManaCost:1 W Types:Instant -K:Flashback 1 U +K:Flashback:1 U A:SP$ Tap | Cost$ 1 W | ValidTgts$ Creature | TgtPrompt$ Select up to two target creatures | TargetMin$ 0 | TargetMax$ 2 | SpellDescription$ Tap up to two target creatures. SVar:Picture:http://www.wizards.com/global/images/magic/general/feeling_of_dread.jpg Oracle:Tap up to two target creatures.\nFlashback {1}{U} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/f/feiyi_snake.txt b/forge-gui/res/cardsfolder/f/feiyi_snake.txt new file mode 100644 index 00000000000..b3134566919 --- /dev/null +++ b/forge-gui/res/cardsfolder/f/feiyi_snake.txt @@ -0,0 +1,6 @@ +Name:Feiyi Snake +ManaCost:1 G +Types:Creature Snake +K:Reach +Oracle:Reach (This creature can block creatures with flying.) +PT:2/1 diff --git a/forge-gui/res/cardsfolder/f/fell_specter.txt b/forge-gui/res/cardsfolder/f/fell_specter.txt new file mode 100644 index 00000000000..7e7e9c2fa3c --- /dev/null +++ b/forge-gui/res/cardsfolder/f/fell_specter.txt @@ -0,0 +1,10 @@ +Name:Fell Specter +ManaCost:3 B +Types:Creature Specter +K:Flying +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDiscard | TriggerDescription$ When CARDNAME enters the battlefield, target opponent discard a card. +SVar:TrigDiscard:DB$Discard | ValidTgts$ Opponent | TgtPrompt$ Select an opponent | NumCards$ 1 | Mode$ TgtChoose +T:Mode$ Discarded | ValidCard$ Card.OppOwn | TriggerZones$ Battlefield | Execute$ TrigLoseLife | TriggerDescription$ Whenever an opponent discards a card, that player loses 2 life. +SVar:TrigLoseLife:DB$ LoseLife | Defined$ TriggeredCardController | LifeAmount$ 2 +Oracle: When CARDNAME enters the battlefield, target opponent discard a card.\nWhenever an opponent discards a card, that player loses 2 life. +PT:1/3 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/f/femeref_healer.txt b/forge-gui/res/cardsfolder/f/femeref_healer.txt index bdad34736b2..ccedc05821e 100644 --- a/forge-gui/res/cardsfolder/f/femeref_healer.txt +++ b/forge-gui/res/cardsfolder/f/femeref_healer.txt @@ -2,7 +2,7 @@ Name:Femeref Healer ManaCost:1 W Types:Creature Human Cleric PT:1/1 -A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to any target this turn. SVar:NonCombatPriority:10 SVar:Picture:http://www.wizards.com/global/images/magic/general/femeref_healer.jpg -Oracle:{T}: Prevent the next 1 damage that would be dealt to target creature or player this turn. +Oracle:{T}: Prevent the next 1 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/f/ferocious_zheng.txt b/forge-gui/res/cardsfolder/f/ferocious_zheng.txt new file mode 100644 index 00000000000..ab1045b12e4 --- /dev/null +++ b/forge-gui/res/cardsfolder/f/ferocious_zheng.txt @@ -0,0 +1,5 @@ +Name:Ferocious Zheng +ManaCost:2 G G +Types:Creature Cat Beast +Oracle: +PT:4/4 diff --git a/forge-gui/res/cardsfolder/f/fervent_denial.txt b/forge-gui/res/cardsfolder/f/fervent_denial.txt index 2f3ccd3f7d0..c728c6a6704 100644 --- a/forge-gui/res/cardsfolder/f/fervent_denial.txt +++ b/forge-gui/res/cardsfolder/f/fervent_denial.txt @@ -1,7 +1,7 @@ Name:Fervent Denial ManaCost:3 U U Types:Instant -K:Flashback 5 U U +K:Flashback:5 U U A:SP$ Counter | Cost$ 3 U U | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Card | SpellDescription$ Counter target spell. SVar:Picture:http://www.wizards.com/global/images/magic/general/fervent_denial.jpg Oracle:Counter target spell.\nFlashback {5}{U}{U} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/f/fervent_paincaster.txt b/forge-gui/res/cardsfolder/f/fervent_paincaster.txt index 9bdc4072cd0..b157b5b1dac 100644 --- a/forge-gui/res/cardsfolder/f/fervent_paincaster.txt +++ b/forge-gui/res/cardsfolder/f/fervent_paincaster.txt @@ -2,7 +2,7 @@ Name:Fervent Paincaster ManaCost:2 R Types:Creature Human Wizard PT:3/1 -A:AB$ DealDamage | Cost$ T | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target player. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target player or planeswalker. A:AB$ DealDamage | Cost$ T Exert<1/CARDNAME> | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature. (An exerted creature won't untap during your next untap step.) SVar:Picture:http://www.wizards.com/global/images/magic/general/fervent_paincaster.jpg -Oracle:{T}: Fervent Paincaster deals 1 damage to target player.\n{T}, Exert Fervent Paincaster: It deals 1 damage to target creature. (An exerted creature won't untap during its controller's next untap step.) +Oracle:{T}: Fervent Paincaster deals 1 damage to target player or planeswalker.\n{T}, Exert Fervent Paincaster: It deals 1 damage to target creature. (An exerted creature won't untap during its controller's next untap step.) diff --git a/forge-gui/res/cardsfolder/f/fiery_bombardment.txt b/forge-gui/res/cardsfolder/f/fiery_bombardment.txt index b83e1c240c5..b6260a2b7ac 100644 --- a/forge-gui/res/cardsfolder/f/fiery_bombardment.txt +++ b/forge-gui/res/cardsfolder/f/fiery_bombardment.txt @@ -1,9 +1,9 @@ Name:Fiery Bombardment ManaCost:1 R Types:Enchantment -A:AB$ DealDamage | Cost$ 2 Sac<1/Creature> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | PrecostDesc$ Chroma — | SpellDescription$ CARDNAME deals damage to target creature or player equal to the number of red mana symbols in the sacrificed creature's mana cost. +A:AB$ DealDamage | Cost$ 2 Sac<1/Creature> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | PrecostDesc$ Chroma — | SpellDescription$ CARDNAME deals damage to any target equal to the number of red mana symbols in the sacrificed creature's mana cost. SVar:X:Sacrificed$ChromaSource.Red SVar:NonStackingEffect:True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/fiery_bombardment.jpg -Oracle:Chroma — {2}, Sacrifice a creature: Fiery Bombardment deals damage to target creature or player equal to the number of red mana symbols in the sacrificed creature's mana cost. +Oracle:Chroma — {2}, Sacrifice a creature: Fiery Bombardment deals damage to any target equal to the number of red mana symbols in the sacrificed creature's mana cost. diff --git a/forge-gui/res/cardsfolder/f/fiery_finish.txt b/forge-gui/res/cardsfolder/f/fiery_finish.txt new file mode 100644 index 00000000000..97ab4e63ed9 --- /dev/null +++ b/forge-gui/res/cardsfolder/f/fiery_finish.txt @@ -0,0 +1,5 @@ +Name:Fiery Finish +ManaCost:4 R R +Types:Sorcery +A:SP$ DealDamage | Cost$ 4 R R | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 7 | SpellDescription$ CARDNAME deals 7 damage to target creature. +Oracle:Fiery Finish deals 7 damage to target creature. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/f/fiery_justice.txt b/forge-gui/res/cardsfolder/f/fiery_justice.txt index 0d6ad0e9a8a..b8d696a96bb 100644 --- a/forge-gui/res/cardsfolder/f/fiery_justice.txt +++ b/forge-gui/res/cardsfolder/f/fiery_justice.txt @@ -1,8 +1,8 @@ Name:Fiery Justice ManaCost:R G W Types:Sorcery -A:SP$ DealDamage | Cost$ R G W | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to distribute damage to | NumDmg$ 5 | TargetMin$ 1 | TargetMax$ 5 | DividedAsYouChoose$ 5 | SubAbility$ Justice | SpellDescription$ CARDNAME deals 5 damage divided as you choose among any number of target creatures and/or players. Target opponent gains 5 life. +A:SP$ DealDamage | Cost$ R G W | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to distribute damage to | NumDmg$ 5 | TargetMin$ 1 | TargetMax$ 5 | DividedAsYouChoose$ 5 | SubAbility$ Justice | SpellDescription$ CARDNAME deals 5 damage divided as you choose among any number of targets. Target opponent gains 5 life. SVar:Justice:DB$ GainLife | ValidTgts$ Opponent | TgtPrompt$ Select target opponent to gain life | LifeAmount$ 5 SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/fiery_justice.jpg -Oracle:Fiery Justice deals 5 damage divided as you choose among any number of target creatures and/or players. Target opponent gains 5 life. +Oracle:Fiery Justice deals 5 damage divided as you choose among any number of targets. Target opponent gains 5 life. diff --git a/forge-gui/res/cardsfolder/f/fiery_temper.txt b/forge-gui/res/cardsfolder/f/fiery_temper.txt index 890e2a2b04f..e68283e92bc 100644 --- a/forge-gui/res/cardsfolder/f/fiery_temper.txt +++ b/forge-gui/res/cardsfolder/f/fiery_temper.txt @@ -1,8 +1,8 @@ Name:Fiery Temper ManaCost:1 R R Types:Instant -A:SP$ DealDamage | Cost$ 1 R R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. +A:SP$ DealDamage | Cost$ 1 R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. K:Madness:R DeckHints:Ability$Discard SVar:Picture:http://www.wizards.com/global/images/magic/general/fiery_temper.jpg -Oracle:Fiery Temper deals 3 damage to target creature or player.\nMadness {R} (If you discard this card, discard it into exile. When you do, cast it for its madness cost or put it into your graveyard.) +Oracle:Fiery Temper deals 3 damage to any target.\nMadness {R} (If you discard this card, discard it into exile. When you do, cast it for its madness cost or put it into your graveyard.) diff --git a/forge-gui/res/cardsfolder/f/fill_with_fright.txt b/forge-gui/res/cardsfolder/f/fill_with_fright.txt index d9bf11212d0..cd0f7ff8521 100644 --- a/forge-gui/res/cardsfolder/f/fill_with_fright.txt +++ b/forge-gui/res/cardsfolder/f/fill_with_fright.txt @@ -1,7 +1,7 @@ Name:Fill with Fright ManaCost:3 B Types:Sorcery -A:SP$ Discard | Cost$ 3 B | ValidTgts$ Player | TgtPrompt$ Select a player | Mode$ TgtChoose | NumCards$ 2 | SubAbility$ DBScry | SpellDescription$ Target player discards two cards. Scry 2. (Look at the top two cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) -SVar:DBScry:DB$Scry | ScryNum$ 2 +A:SP$ Discard | Cost$ 3 B | ValidTgts$ Player | TgtPrompt$ Select a player | Mode$ TgtChoose | NumCards$ 2 | SubAbility$ DBScry | SpellDescription$ Target player discards two cards. +SVar:DBScry:DB$ Scry | ScryNum$ 2 | SpellDescription$ Scry 2. SVar:Picture:http://www.wizards.com/global/images/magic/general/fill_with_fright.jpg -Oracle:Target player discards two cards. Scry 2. (Look at the top two cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) +Oracle:Target player discards two cards.\nScry 2. (Look at the top two cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) diff --git a/forge-gui/res/cardsfolder/f/final_strike.txt b/forge-gui/res/cardsfolder/f/final_strike.txt index a81b18e7b96..c084e85decb 100644 --- a/forge-gui/res/cardsfolder/f/final_strike.txt +++ b/forge-gui/res/cardsfolder/f/final_strike.txt @@ -1,8 +1,8 @@ Name:Final Strike ManaCost:2 B B Types:Sorcery -A:SP$ DealDamage | Cost$ 2 B B Sac<1/Creature> | ValidTgts$ Opponent | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage to target opponent equal to the sacrificed creature's power. +A:SP$ DealDamage | Cost$ 2 B B Sac<1/Creature> | ValidTgts$ Opponent,Planeswalker | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage to target opponent or planeswalker equal to the sacrificed creature's power. SVar:X:Sacrificed$CardPower SVar:RemAIDeck:True SVar:Picture:http://serv3.tcgimages.eu/img/cards/Portal/final_strike.jpg -Oracle:As an additional cost to cast Final Strike, sacrifice a creature.\nFinal Strike deals damage to target opponent equal to the sacrificed creature's power. +Oracle:As an additional cost to cast Final Strike, sacrifice a creature.\nFinal Strike deals damage to target opponent or planeswalker equal to the sacrificed creature's power. diff --git a/forge-gui/res/cardsfolder/f/fire_ambush.txt b/forge-gui/res/cardsfolder/f/fire_ambush.txt index 5bf8704475a..b64f11749b3 100644 --- a/forge-gui/res/cardsfolder/f/fire_ambush.txt +++ b/forge-gui/res/cardsfolder/f/fire_ambush.txt @@ -1,6 +1,6 @@ Name:Fire Ambush ManaCost:1 R Types:Sorcery -A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. +A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. SVar:Picture:http://serv2.tcgimages.eu/img/cards/Portal_Three_Kingdoms/fire_ambush.jpg -Oracle:Fire Ambush deals 3 damage to target creature or player. +Oracle:Fire Ambush deals 3 damage to any target. diff --git a/forge-gui/res/cardsfolder/f/fire_bowman.txt b/forge-gui/res/cardsfolder/f/fire_bowman.txt index 43a6e643831..074a5397ea9 100644 --- a/forge-gui/res/cardsfolder/f/fire_bowman.txt +++ b/forge-gui/res/cardsfolder/f/fire_bowman.txt @@ -2,6 +2,6 @@ Name:Fire Bowman ManaCost:R Types:Creature Human Soldier Archer PT:1/1 -A:AB$ DealDamage | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | PlayerTurn$ True | ActivationPhases$ Upkeep->BeginCombat | SpellDescription$ CARDNAME deals 1 damage to target creature or player. Activate this ability only during your turn, before attackers are declared. +A:AB$ DealDamage | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | PlayerTurn$ True | ActivationPhases$ Upkeep->BeginCombat | SpellDescription$ CARDNAME deals 1 damage to any target. Activate this ability only during your turn, before attackers are declared. SVar:Picture:http://www.wizards.com/global/images/magic/general/fire_bowman.jpg -Oracle:Sacrifice Fire Bowman: Fire Bowman deals 1 damage to target creature or player. Activate this ability only during your turn, before attackers are declared. +Oracle:Sacrifice Fire Bowman: Fire Bowman deals 1 damage to any target. Activate this ability only during your turn, before attackers are declared. diff --git a/forge-gui/res/cardsfolder/f/fire_ice.txt b/forge-gui/res/cardsfolder/f/fire_ice.txt index 8d3661dde9e..de08eb7a320 100644 --- a/forge-gui/res/cardsfolder/f/fire_ice.txt +++ b/forge-gui/res/cardsfolder/f/fire_ice.txt @@ -2,9 +2,9 @@ Name:Fire ManaCost:1 R AlternateMode: Split Types:Instant -A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to distribute damage to | NumDmg$ 2 | TargetMin$ 1 | TargetMax$ 2 | DividedAsYouChoose$ 2 | SpellDescription$ Fire deals 2 damage divided as you choose among one or two target creatures and/or players. +A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to distribute damage to | NumDmg$ 2 | TargetMin$ 1 | TargetMax$ 2 | DividedAsYouChoose$ 2 | SpellDescription$ Fire deals 2 damage divided as you choose among one or two targets. SVar:Picture:http://www.wizards.com/global/images/magic/general/fire_ice.jpg -Oracle:Fire deals 2 damage divided as you choose among one or two target creatures and/or players. +Oracle:Fire deals 2 damage divided as you choose among one or two targets. ALTERNATE diff --git a/forge-gui/res/cardsfolder/f/fire_omen_crane.txt b/forge-gui/res/cardsfolder/f/fire_omen_crane.txt new file mode 100644 index 00000000000..2aff82f31c6 --- /dev/null +++ b/forge-gui/res/cardsfolder/f/fire_omen_crane.txt @@ -0,0 +1,8 @@ +Name:Fire-Omen Crane +ManaCost:3 R R +Types:Creature Bird Spirit +K:Flying +T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ Trig | TriggerDescription$ Whenever CARDNAME attacks, it deals 1 damage to target creature an opponent controls. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature an opponent controls | NumDmg$ 1 +Oracle:Flying (This creature can't be blocked except by creatures with flying or reach.)\nWhenever Fire-Omen Crane attacks, it deals 1 damage to target creature an opponent controls. +PT:3/3 diff --git a/forge-gui/res/cardsfolder/f/fire_whip.txt b/forge-gui/res/cardsfolder/f/fire_whip.txt index 148ade6850c..08f38e03aaa 100644 --- a/forge-gui/res/cardsfolder/f/fire_whip.txt +++ b/forge-gui/res/cardsfolder/f/fire_whip.txt @@ -3,8 +3,8 @@ ManaCost:1 R Types:Enchantment Aura K:Enchant creature you control A:SP$ Attach | Cost$ 1 R | ValidTgts$ Creature.YouCtrl | AILogic$ Pump -S:Mode$ Continuous | Affected$ Card.EnchantedBy | AddAbility$ ABDamage | Description$ Enchanted creature has "{T}: This creature deals 1 damage to target creature or player." -SVar:ABDamage:AB$ DealDamage | Cost$ T | NumDmg$ 1 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | SpellDescription$ This creature deals 1 damage to target creature or player. -A:AB$ DealDamage | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +S:Mode$ Continuous | Affected$ Card.EnchantedBy | AddAbility$ ABDamage | Description$ Enchanted creature has "{T}: This creature deals 1 damage to any target." +SVar:ABDamage:AB$ DealDamage | Cost$ T | NumDmg$ 1 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | SpellDescription$ This creature deals 1 damage to any target. +A:AB$ DealDamage | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/fire_whip.jpg -Oracle:Enchant creature you control\nEnchanted creature has "{T}: This creature deals 1 damage to target creature or player."\nSacrifice Fire Whip: Fire Whip deals 1 damage to target creature or player. +Oracle:Enchant creature you control\nEnchanted creature has "{T}: This creature deals 1 damage to any target."\nSacrifice Fire Whip: Fire Whip deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/f/fireball.txt b/forge-gui/res/cardsfolder/f/fireball.txt index c8f4d95fe9b..c518aa3ec51 100644 --- a/forge-gui/res/cardsfolder/f/fireball.txt +++ b/forge-gui/res/cardsfolder/f/fireball.txt @@ -1,12 +1,12 @@ Name:Fireball ManaCost:X R Types:Sorcery -A:SP$ DealDamage | Cost$ X R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | TargetMin$ 0 | TargetMax$ MaxTargets | DivideEvenly$ RoundedDown | References$ X,MaxTargets,Maxplayer,Maxcreature,IncreaseCost | SpellDescription$ CARDNAME deals X damage divided evenly, rounded down, among any number of target creatures and/or players. +A:SP$ DealDamage | Cost$ X R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | TargetMin$ 0 | TargetMax$ MaxTargets | DivideEvenly$ RoundedDown | References$ X,MaxTargets,Maxplayer,Maxcreature,IncreaseCost | SpellDescription$ CARDNAME deals X damage divided evenly, rounded down, among any number of targets. S:Mode$ RaiseCost | ValidCard$ Card.Self | Type$ Spell | Amount$ IncreaseCost | EffectZone$ All | Description$ CARDNAME costs {1} more to cast for each target beyond the first. SVar:X:Count$xPaid -SVar:MaxTargets:SVar$Maxplayer/Plus.Maxcreature +SVar:MaxTargets:SVar$Maxplayer/Plus.Maxcreatureorplaneswalker SVar:Maxplayer:PlayerCountPlayers$Amount -SVar:Maxcreature:Count$Valid Creature +SVar:Maxcreatureorplaneswalker:Count$Valid Creature,Planeswalker SVar:IncreaseCost:TargetedObjects$Amount/Minus.1 SVar:Picture:http://www.wizards.com/global/images/magic/general/fireball.jpg -Oracle:Fireball deals X damage divided evenly, rounded down, among any number of target creatures and/or players.\nFireball costs {1} more to cast for each target beyond the first. +Oracle:Fireball deals X damage divided evenly, rounded down, among any number of targets.\nFireball costs {1} more to cast for each target beyond the first. diff --git a/forge-gui/res/cardsfolder/f/fireblast.txt b/forge-gui/res/cardsfolder/f/fireblast.txt index 101da2aa03f..551dff6eaca 100644 --- a/forge-gui/res/cardsfolder/f/fireblast.txt +++ b/forge-gui/res/cardsfolder/f/fireblast.txt @@ -1,7 +1,7 @@ Name:Fireblast ManaCost:4 R R Types:Instant -A:SP$ DealDamage | Cost$ 4 R R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target creature or player. +A:SP$ DealDamage | Cost$ 4 R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to any target. SVar:AltCost:Cost$ Sac<2/Mountain> SVar:Picture:http://www.wizards.com/global/images/magic/general/fireblast.jpg -Oracle:You may sacrifice two Mountains rather than pay Fireblast's mana cost.\nFireblast deals 4 damage to target creature or player. +Oracle:You may sacrifice two Mountains rather than pay Fireblast's mana cost.\nFireblast deals 4 damage to any target. diff --git a/forge-gui/res/cardsfolder/f/firebolt.txt b/forge-gui/res/cardsfolder/f/firebolt.txt index 78a2818194d..438e94b2d84 100644 --- a/forge-gui/res/cardsfolder/f/firebolt.txt +++ b/forge-gui/res/cardsfolder/f/firebolt.txt @@ -1,7 +1,7 @@ Name:Firebolt ManaCost:R Types:Sorcery -K:Flashback 4 R -A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +K:Flashback:4 R +A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:Picture:http://resources.wizards.com/magic/cards/od/en-us/card30570.jpg -Oracle:Firebolt deals 2 damage to target creature or player.\nFlashback {4}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.) +Oracle:Firebolt deals 2 damage to any target.\nFlashback {4}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/f/fireforgers_puzzleknot.txt b/forge-gui/res/cardsfolder/f/fireforgers_puzzleknot.txt index e491ffa73f2..9e46e984923 100644 --- a/forge-gui/res/cardsfolder/f/fireforgers_puzzleknot.txt +++ b/forge-gui/res/cardsfolder/f/fireforgers_puzzleknot.txt @@ -1,8 +1,8 @@ Name:Fireforger's Puzzleknot ManaCost:2 Types:Artifact -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 1 damage to target creature or player. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 -A:AB$ DealDamage | Cost$ 2 R Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 1 damage to any target. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 +A:AB$ DealDamage | Cost$ 2 R Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/fireforgers_puzzleknot.jpg -Oracle:When Fireforger's Puzzleknot enters the battlefield, it deals 1 damage to target creature or player.\n{2}{R}, Sacrifice Fireforger's Puzzleknot: It deals 1 damage to target creature or player. +Oracle:When Fireforger's Puzzleknot enters the battlefield, it deals 1 damage to any target.\n{2}{R}, Sacrifice Fireforger's Puzzleknot: It deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/f/firefright_mage.txt b/forge-gui/res/cardsfolder/f/firefright_mage.txt index 24f5f7ca55c..f67b95120d5 100644 --- a/forge-gui/res/cardsfolder/f/firefright_mage.txt +++ b/forge-gui/res/cardsfolder/f/firefright_mage.txt @@ -3,7 +3,7 @@ ManaCost:R Types:Creature Goblin Spellshaper PT:1/1 A:AB$ Effect | Cost$ 1 R T Discard<1/Card> | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature | RememberObjects$ Targeted | Name$ Firefright Mage's Effect | StaticAbilities$ KWPump | SpellDescription$ Target creature can't be blocked this turn except by artifact creatures and/or red creatures. -SVar:KWPump:Mode$ CantBlockBy | ValidAttacker$ Creature.Remembered | ValidBlocker$ Creature.nonArtifact+nonRed | EffectZone$ Command | Description$ Remembered creature can't be blocked this turn except by artifact creatures and/or red creatures. +SVar:KWPump:Mode$ CantBlockBy | ValidAttacker$ Creature.IsRemembered | ValidBlocker$ Creature.nonArtifact+nonRed | EffectZone$ Command | Description$ Remembered creature can't be blocked this turn except by artifact creatures and/or red creatures. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/firefright_mage.jpg Oracle:{1}{R}, {T}, Discard a card: Target creature can't be blocked this turn except by artifact creatures and/or red creatures. diff --git a/forge-gui/res/cardsfolder/f/firemane_avenger.txt b/forge-gui/res/cardsfolder/f/firemane_avenger.txt index 439442f7550..b0e84ed3e3d 100644 --- a/forge-gui/res/cardsfolder/f/firemane_avenger.txt +++ b/forge-gui/res/cardsfolder/f/firemane_avenger.txt @@ -3,9 +3,9 @@ ManaCost:2 R W Types:Creature Angel PT:3/3 K:Flying -T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | CheckSVar$ BattalionTest | NoResolvingCheck$ True | SVarCompare$ GE2 | Execute$ TrigBattalionDmg | TriggerDescription$ Battalion — Whenever CARDNAME and at least two other creatures attack, CARDNAME deals 3 damage to target creature or player and you gain 3 life. -SVar:TrigBattalionDmg:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SubAbility$ DBGainLife +T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | CheckSVar$ BattalionTest | NoResolvingCheck$ True | SVarCompare$ GE2 | Execute$ TrigBattalionDmg | TriggerDescription$ Battalion — Whenever CARDNAME and at least two other creatures attack, CARDNAME deals 3 damage to any target and you gain 3 life. +SVar:TrigBattalionDmg:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SubAbility$ DBGainLife SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 3 SVar:BattalionTest:Count$Valid Creature.attacking+Other SVar:Picture:http://www.wizards.com/global/images/magic/general/firemane_avenger.jpg -Oracle:Flying\nBattalion — Whenever Firemane Avenger and at least two other creatures attack, Firemane Avenger deals 3 damage to target creature or player and you gain 3 life. +Oracle:Flying\nBattalion — Whenever Firemane Avenger and at least two other creatures attack, Firemane Avenger deals 3 damage to any target and you gain 3 life. diff --git a/forge-gui/res/cardsfolder/f/fires_of_undeath.txt b/forge-gui/res/cardsfolder/f/fires_of_undeath.txt index 19bf99bd429..11898739b18 100644 --- a/forge-gui/res/cardsfolder/f/fires_of_undeath.txt +++ b/forge-gui/res/cardsfolder/f/fires_of_undeath.txt @@ -1,7 +1,7 @@ Name:Fires of Undeath ManaCost:2 R Types:Instant -A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. -K:Flashback 5 B +A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. +K:Flashback:5 B SVar:Picture:http://www.wizards.com/global/images/magic/general/fires_of_undeath.jpg -Oracle:Fires of Undeath deals 2 damage to target creature or player.\nFlashback {5}{B} (You may cast this card from your graveyard for its flashback cost. Then exile it.) +Oracle:Fires of Undeath deals 2 damage to any target.\nFlashback {5}{B} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/f/fireslinger.txt b/forge-gui/res/cardsfolder/f/fireslinger.txt index 70ac5cb713e..b37b29c5ca7 100644 --- a/forge-gui/res/cardsfolder/f/fireslinger.txt +++ b/forge-gui/res/cardsfolder/f/fireslinger.txt @@ -2,8 +2,9 @@ Name:Fireslinger ManaCost:1 R Types:Creature Human Wizard PT:1/1 -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SubAbility$ DBDealDamage | AILogic$ SelfDamage | SpellDescription$ Fireslinger deals 1 damage to target creature or player and 1 damage to you. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SubAbility$ DBDealDamage | AILogic$ SelfDamage | DamageMap$ True | SpellDescription$ Fireslinger deals 1 damage to any target and 1 damage to you. +SVar:DBDealDamage:DB$DealDamage | Defined$ You | NumDmg$ 1 | SubAbility$ DBDamageResolve +SVar:DBDamageResolve:DB$ DamageResolve SVar:SelfDamageAmount:1 -SVar:DBDealDamage:DB$DealDamage | Defined$ You | NumDmg$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/fireslinger.jpg -Oracle:{T}: Fireslinger deals 1 damage to target creature or player and 1 damage to you. +Oracle:{T}: Fireslinger deals 1 damage to any target and 1 damage to you. diff --git a/forge-gui/res/cardsfolder/f/firestorm.txt b/forge-gui/res/cardsfolder/f/firestorm.txt index 1f1f82b8ecf..848c0f667ef 100644 --- a/forge-gui/res/cardsfolder/f/firestorm.txt +++ b/forge-gui/res/cardsfolder/f/firestorm.txt @@ -1,11 +1,11 @@ Name:Firestorm ManaCost:R Types:Instant -A:SP$ DealDamage | Cost$ R Discard | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | TargetMin$ 0 | TargetMax$ MaxTargets | NumDmg$ X | References$ X,MaxTargets,MaxPlayers,MaxCreatures | SpellDescription$ CARDNAME deals X damage to each of X target creatures and/or players. +A:SP$ DealDamage | Cost$ R Discard | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | TargetMin$ 0 | TargetMax$ MaxTargets | NumDmg$ X | References$ X,MaxTargets,MaxPlayers,MaxCreatures | SpellDescription$ CARDNAME deals X damage to each of X targets. SVar:X:TargetedObjects$Amount -SVar:MaxTargets:SVar$MaxPlayers/Plus.MaxCreatures +SVar:MaxTargets:SVar$MaxPlayers/Plus.MaxCreaturesAndPlaneswalkers SVar:MaxPlayers:PlayerCountPlayers$Amount -SVar:MaxCreatures:Count$Valid Creature +SVar:MaxCreaturesAndPlaneswalkers:Count$Valid Creature,Planeswalker SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/firestorm.jpg -Oracle:As an additional cost to cast Firestorm, discard X cards.\nFirestorm deals X damage to each of X target creatures and/or players. +Oracle:As an additional cost to cast Firestorm, discard X cards.\nFirestorm deals X damage to each of X targets. diff --git a/forge-gui/res/cardsfolder/f/five_alarm_fire.txt b/forge-gui/res/cardsfolder/f/five_alarm_fire.txt index 70300c9ede7..97e0a838641 100644 --- a/forge-gui/res/cardsfolder/f/five_alarm_fire.txt +++ b/forge-gui/res/cardsfolder/f/five_alarm_fire.txt @@ -3,6 +3,6 @@ ManaCost:1 R R Types:Enchantment T:Mode$ DamageDealtOnce | CombatDamage$ True | ValidSource$ Creature.YouCtrl | Execute$ TrigPutCounter | TriggerZones$ Battlefield | TriggerDescription$ Whenever a creature you control deals combat damage, put a blaze counter on CARDNAME. SVar:TrigPutCounter:DB$ PutCounter | CounterType$ BLAZE | CounterNum$ 1 -A:AB$ DealDamage | Cost$ SubCounter<5/BLAZE> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 5 | SpellDescription$ CARDNAME deals 5 damage to target creature or player. +A:AB$ DealDamage | Cost$ SubCounter<5/BLAZE> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 5 | SpellDescription$ CARDNAME deals 5 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/five-alarm_fire.jpg -Oracle:Whenever a creature you control deals combat damage, put a blaze counter on Five-Alarm Fire.\nRemove five blaze counters from Five-Alarm Fire: Five-Alarm Fire deals 5 damage to target creature or player. +Oracle:Whenever a creature you control deals combat damage, put a blaze counter on Five-Alarm Fire.\nRemove five blaze counters from Five-Alarm Fire: Five-Alarm Fire deals 5 damage to any target. diff --git a/forge-gui/res/cardsfolder/f/flame_burst.txt b/forge-gui/res/cardsfolder/f/flame_burst.txt index 59b4574d301..be3d3a726d7 100644 --- a/forge-gui/res/cardsfolder/f/flame_burst.txt +++ b/forge-gui/res/cardsfolder/f/flame_burst.txt @@ -1,9 +1,9 @@ Name:Flame Burst ManaCost:1 R Types:Instant -A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X,Y | SpellDescription$ CARDNAME deals X damage to target creature or player, where X is 2 plus the number of cards named Flame Burst in all graveyards. +A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X,Y | SpellDescription$ CARDNAME deals X damage to any target, where X is 2 plus the number of cards named Flame Burst in all graveyards. SVar:X:Count$NamedInAllYards.Flame Burst/Plus.Y SVar:Y:Count$ValidGraveyard Card.hasKeywordCARDNAME count as Flame Burst./Plus.2 DeckHints:Name$Flame Burst|Pardic Firecat SVar:Picture:http://www.wizards.com/global/images/magic/general/flame_burst.jpg -Oracle:Flame Burst deals X damage to target creature or player, where X is 2 plus the number of cards named Flame Burst in all graveyards. +Oracle:Flame Burst deals X damage to any target, where X is 2 plus the number of cards named Flame Burst in all graveyards. diff --git a/forge-gui/res/cardsfolder/f/flame_fusillade.txt b/forge-gui/res/cardsfolder/f/flame_fusillade.txt index a1788e47d5c..975c078db2a 100644 --- a/forge-gui/res/cardsfolder/f/flame_fusillade.txt +++ b/forge-gui/res/cardsfolder/f/flame_fusillade.txt @@ -1,9 +1,9 @@ Name:Flame Fusillade ManaCost:3 R Types:Sorcery -A:SP$ Effect | Cost$ 3 R | Name$ Flame Fusillade Effect | StaticAbilities$ STDamage | SVars$ ABDamage | SpellDescription$ Until end of turn, permanents you control gain "{T}: This permanent deals 1 damage to target creature or player." -SVar:STDamage:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Permanent.YouCtrl | AddAbility$ ABDamage | Description$ Until end of turn, permanents you control gain "{T}: This permanent deals 1 damage to target creature or player." -SVar:ABDamage:AB$ DealDamage | Cost$ T | NumDmg$ 1 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | SpellDescription$ CARDNAME deals 1 damage to target creature or player +A:SP$ Effect | Cost$ 3 R | Name$ Flame Fusillade Effect | StaticAbilities$ STDamage | SVars$ ABDamage | SpellDescription$ Until end of turn, permanents you control gain "{T}: This permanent deals 1 damage to any target." +SVar:STDamage:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Permanent.YouCtrl | AddAbility$ ABDamage | Description$ Until end of turn, permanents you control gain "{T}: This permanent deals 1 damage to any target." +SVar:ABDamage:AB$ DealDamage | Cost$ T | NumDmg$ 1 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | SpellDescription$ CARDNAME deals 1 damage to any target SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/flame_fusillade.jpg -Oracle:Until end of turn, permanents you control gain "{T}: This permanent deals 1 damage to target creature or player." +Oracle:Until end of turn, permanents you control gain "{T}: This permanent deals 1 damage to any target." diff --git a/forge-gui/res/cardsfolder/f/flame_jab.txt b/forge-gui/res/cardsfolder/f/flame_jab.txt index c0faa8e0485..60cb56dd718 100644 --- a/forge-gui/res/cardsfolder/f/flame_jab.txt +++ b/forge-gui/res/cardsfolder/f/flame_jab.txt @@ -2,6 +2,6 @@ Name:Flame Jab ManaCost:R Types:Sorcery K:Retrace -A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/flame_jab.jpg -Oracle:Flame Jab deals 1 damage to target creature or player.\nRetrace (You may cast this card from your graveyard by discarding a land card in addition to paying its other costs.) +Oracle:Flame Jab deals 1 damage to any target.\nRetrace (You may cast this card from your graveyard by discarding a land card in addition to paying its other costs.) diff --git a/forge-gui/res/cardsfolder/f/flame_javelin.txt b/forge-gui/res/cardsfolder/f/flame_javelin.txt index 71c5507856e..3d15e357198 100644 --- a/forge-gui/res/cardsfolder/f/flame_javelin.txt +++ b/forge-gui/res/cardsfolder/f/flame_javelin.txt @@ -1,6 +1,6 @@ Name:Flame Javelin ManaCost:2/R 2/R 2/R Types:Instant -A:SP$ DealDamage | Cost$ 2/R 2/R 2/R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target creature or player. +A:SP$ DealDamage | Cost$ 2/R 2/R 2/R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/flame_javelin.jpg -Oracle:Flame Javelin deals 4 damage to target creature or player. +Oracle:Flame Javelin deals 4 damage to any target. diff --git a/forge-gui/res/cardsfolder/f/flame_jet.txt b/forge-gui/res/cardsfolder/f/flame_jet.txt index 855cb2e8eb5..7e05f30e2dd 100644 --- a/forge-gui/res/cardsfolder/f/flame_jet.txt +++ b/forge-gui/res/cardsfolder/f/flame_jet.txt @@ -1,7 +1,7 @@ Name:Flame Jet ManaCost:1 R Types:Sorcery -A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target player. +A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target player or planeswalker. K:Cycling:2 SVar:Picture:http://www.wizards.com/global/images/magic/general/flame_jet.jpg -Oracle:Flame Jet deals 3 damage to target player.\nCycling {2} ({2}, Discard this card: Draw a card.) +Oracle:Flame Jet deals 3 damage to target player or planeswalker.\nCycling {2} ({2}, Discard this card: Draw a card.) diff --git a/forge-gui/res/cardsfolder/f/flame_kin_war_scout.txt b/forge-gui/res/cardsfolder/f/flame_kin_war_scout.txt index f7d59b71ba4..fc0033f3967 100644 --- a/forge-gui/res/cardsfolder/f/flame_kin_war_scout.txt +++ b/forge-gui/res/cardsfolder/f/flame_kin_war_scout.txt @@ -4,7 +4,8 @@ Types:Creature Elemental Scout PT:2/4 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Other |TriggerZones$ Battlefield | Execute$ TrigSac | TriggerDescription$ When another creature enters the battlefield, sacrifice Flame-Kin War Scout. If you do, Flame-Kin War Scout deals 4 damage to that creature. SVar:TrigSac:DB$Sacrifice | Defined$ Self | SubAbility$ DBDamage | RememberSacrificed$ True -SVar:DBDamage:DB$DealDamage | Defined$ TriggeredCard | NumDmg$ 4 | ConditionDefined$ Remembered | ConditionPresent$ Card.Self +SVar:DBDamage:DB$DealDamage | Defined$ TriggeredCardLKICopy | NumDmg$ 4 | ConditionDefined$ Remembered | ConditionPresent$ Card.Self | SubAbility$ DBCleanup +SVar:DBCleanup:DB$Cleanup | ClearRemembered$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/flame_kin_war_scout.jpg Oracle:When another creature enters the battlefield, sacrifice Flame-Kin War Scout. If you do, Flame-Kin War Scout deals 4 damage to that creature. diff --git a/forge-gui/res/cardsfolder/f/flame_lash.txt b/forge-gui/res/cardsfolder/f/flame_lash.txt index de1dc58ffd1..ae32d8cc6de 100644 --- a/forge-gui/res/cardsfolder/f/flame_lash.txt +++ b/forge-gui/res/cardsfolder/f/flame_lash.txt @@ -1,6 +1,6 @@ Name:Flame Lash ManaCost:3 R Types:Instant -A:SP$ DealDamage | Cost$ 3 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target creature or player. +A:SP$ DealDamage | Cost$ 3 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/flame_lash.jpg -Oracle:Flame Lash deals 4 damage to target creature or player. +Oracle:Flame Lash deals 4 damage to any target. diff --git a/forge-gui/res/cardsfolder/f/flame_wave.txt b/forge-gui/res/cardsfolder/f/flame_wave.txt index 826817c60c1..f9628f443e2 100644 --- a/forge-gui/res/cardsfolder/f/flame_wave.txt +++ b/forge-gui/res/cardsfolder/f/flame_wave.txt @@ -1,6 +1,8 @@ Name:Flame Wave ManaCost:3 R R R R Types:Sorcery -A:SP$ DamageAll | Cost$ 3 R R R R | NumDmg$ 4 | ValidTgts$ Player | TgtPrompt$ Select a player | ValidCards$ Creature | ValidPlayers$ Targeted | ValidDescription$ target player and each creature they control. | SpellDescription$ CARDNAME deals 4 damage to target player and each creature they control. +A:SP$ DealDamage | Cost$ 3 R R R R | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select a player or planeswalker | NumDmg$ 4 | SubAbility$ DmgAll | DamageMap$ True | SpellDescription$ CARDNAME deals 4 damage to target player or planeswalker and each creature that player or that planeswalker's controller controls. +SVar:DmgAll:DB$ DamageAll | NumDmg$ 4 | ValidCards$ Creature.ControlledBy TargetedOrController | SubAbility$ DBDamageResolve +SVar:DBDamageResolve:DB$ DamageResolve SVar:Picture:http://www.wizards.com/global/images/magic/general/flame_wave.jpg -Oracle:Flame Wave deals 4 damage to target player and each creature they control. +Oracle:Flame Wave deals 4 damage to target player or planeswalker and each creature that player or that planeswalker's controller controls. diff --git a/forge-gui/res/cardsfolder/f/flameblast_dragon.txt b/forge-gui/res/cardsfolder/f/flameblast_dragon.txt index 5b9c4552fb1..253fccceb4e 100644 --- a/forge-gui/res/cardsfolder/f/flameblast_dragon.txt +++ b/forge-gui/res/cardsfolder/f/flameblast_dragon.txt @@ -3,8 +3,8 @@ ManaCost:4 R R Types:Creature Dragon PT:5/5 K:Flying -T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDamage | TriggerDescription$ Whenever CARDNAME attacks, you may pay {X}{R}. If you do, Flameblast Dragon deals X damage to target creature or player. -SVar:TrigDamage:AB$ DealDamage | Cost$ X R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDamage | TriggerDescription$ Whenever CARDNAME attacks, you may pay {X}{R}. If you do, Flameblast Dragon deals X damage to any target. +SVar:TrigDamage:AB$ DealDamage | Cost$ X R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X SVar:X:Count$xPaid SVar:Picture:http://www.wizards.com/global/images/magic/general/flameblast_dragon.jpg -Oracle:Flying\nWhenever Flameblast Dragon attacks, you may pay {X}{R}. If you do, Flameblast Dragon deals X damage to target creature or player. +Oracle:Flying\nWhenever Flameblast Dragon attacks, you may pay {X}{R}. If you do, Flameblast Dragon deals X damage to any target. diff --git a/forge-gui/res/cardsfolder/f/flamekin_spitfire.txt b/forge-gui/res/cardsfolder/f/flamekin_spitfire.txt index 2d27268287a..571e95365ab 100644 --- a/forge-gui/res/cardsfolder/f/flamekin_spitfire.txt +++ b/forge-gui/res/cardsfolder/f/flamekin_spitfire.txt @@ -2,6 +2,6 @@ Name:Flamekin Spitfire ManaCost:1 R Types:Creature Elemental Shaman PT:1/1 -A:AB$ DealDamage | Cost$ 3 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ 3 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/flamekin_spitfire.jpg -Oracle:{3}{R}: Flamekin Spitfire deals 1 damage to target creature or player. +Oracle:{3}{R}: Flamekin Spitfire deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/f/flames_of_the_blood_hand.txt b/forge-gui/res/cardsfolder/f/flames_of_the_blood_hand.txt index 1839b217e0b..d35a4eea7f4 100644 --- a/forge-gui/res/cardsfolder/f/flames_of_the_blood_hand.txt +++ b/forge-gui/res/cardsfolder/f/flames_of_the_blood_hand.txt @@ -1,8 +1,8 @@ Name:Flames of the Blood Hand ManaCost:2 R Types:Instant -A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 4 | NoPrevention$ True | SubAbility$ PreventHealing | SpellDescription$ CARDNAME deals 4 damage to target player. The damage can't be prevented. If that player would gain life this turn, that player gains no life instead. +A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 4 | NoPrevention$ True | SubAbility$ PreventHealing | SpellDescription$ CARDNAME deals 4 damage to target player or planeswalker. The damage can't be prevented. If that player would gain life this turn, that player gains no life instead. SVar:PreventHealing:DB$ Effect | Name$ Blood Hand Effect | ReplacementEffects$ GainLifeEvent | RememberObjects$ Targeted SVar:GainLifeEvent:Event$ GainLife | ValidPlayer$ Player.IsRemembered | Prevent$ True | Description$ If the targeted player would gain life this turn, that player gains no life instead. SVar:Picture:http://www.wizards.com/global/images/magic/general/flames_of_the_blood_hand.jpg -Oracle:Flames of the Blood Hand deals 4 damage to target player. The damage can't be prevented. If that player would gain life this turn, that player gains no life instead. +Oracle:Flames of the Blood Hand deals 4 damage to target player or planeswalker. The damage can't be prevented. If that player would gain life this turn, that player gains no life instead. diff --git a/forge-gui/res/cardsfolder/f/flames_of_the_firebrand.txt b/forge-gui/res/cardsfolder/f/flames_of_the_firebrand.txt index 8ddb574a181..5edded1e8b2 100644 --- a/forge-gui/res/cardsfolder/f/flames_of_the_firebrand.txt +++ b/forge-gui/res/cardsfolder/f/flames_of_the_firebrand.txt @@ -1,6 +1,6 @@ Name:Flames of the Firebrand ManaCost:2 R Types:Sorcery -A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to distribute damage to | NumDmg$ 3 | TargetMin$ 1 | TargetMax$ 3 | DividedAsYouChoose$ 3 | SpellDescription$ CARDNAME deals 3 damage divided as you choose among one, two, or three target creatures and/or players. +A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to distribute damage to | NumDmg$ 3 | TargetMin$ 1 | TargetMax$ 3 | DividedAsYouChoose$ 3 | SpellDescription$ CARDNAME deals 3 damage divided as you choose among one, two, or three targets. SVar:Picture:http://www.wizards.com/global/images/magic/general/flames_of_the_firebrand.jpg -Oracle:Flames of the Firebrand deals 3 damage divided as you choose among one, two, or three target creatures and/or players. +Oracle:Flames of the Firebrand deals 3 damage divided as you choose among one, two, or three targets. diff --git a/forge-gui/res/cardsfolder/f/flamewave_invoker.txt b/forge-gui/res/cardsfolder/f/flamewave_invoker.txt index 28529f08d73..06c1e66a03a 100644 --- a/forge-gui/res/cardsfolder/f/flamewave_invoker.txt +++ b/forge-gui/res/cardsfolder/f/flamewave_invoker.txt @@ -2,6 +2,6 @@ Name:Flamewave Invoker ManaCost:2 R Types:Creature Goblin Mutant PT:2/2 -A:AB$ DealDamage | Cost$ 7 R | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 5 | SpellDescription$ CARDNAME deals 5 damage to target player. +A:AB$ DealDamage | Cost$ 7 R | ValidTgts$ Player, Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 5 | SpellDescription$ CARDNAME deals 5 damage to target player or planeswalker. SVar:Picture:http://www.wizards.com/global/images/magic/general/flamewave_invoker.jpg -Oracle:{7}{R}: Flamewave Invoker deals 5 damage to target player. +Oracle:{7}{R}: Flamewave Invoker deals 5 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/f/flamewright.txt b/forge-gui/res/cardsfolder/f/flamewright.txt index f9bce9b0937..65f8e637c71 100644 --- a/forge-gui/res/cardsfolder/f/flamewright.txt +++ b/forge-gui/res/cardsfolder/f/flamewright.txt @@ -3,6 +3,6 @@ ManaCost:R W Types:Creature Human Artificer PT:1/1 A:AB$ Token | Cost$ 1 T | TokenAmount$ 1 | TokenName$ Construct | TokenTypes$ Artifact,Creature,Construct | TokenOwner$ You | TokenColors$ Colorless | TokenPower$ 1 | TokenToughness$ 1 | TokenKeywords$ Defender | SpellDescription$ Create a 1/1 colorless Construct artifact creature token with defender. -A:AB$ DealDamage | Cost$ T Sac<1/Creature.withDefender/creature with defender> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ T Sac<1/Creature.withDefender/creature with defender> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/flamewright.jpg -Oracle:{1}, {T}: Create a 1/1 colorless Construct artifact creature token with defender.\n{T}, Sacrifice a creature with defender: Flamewright deals 1 damage to target creature or player. +Oracle:{1}, {T}: Create a 1/1 colorless Construct artifact creature token with defender.\n{T}, Sacrifice a creature with defender: Flamewright deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/f/flaming_gambit.txt b/forge-gui/res/cardsfolder/f/flaming_gambit.txt index 7dd6849fd6a..3ab2204b0de 100644 --- a/forge-gui/res/cardsfolder/f/flaming_gambit.txt +++ b/forge-gui/res/cardsfolder/f/flaming_gambit.txt @@ -1,12 +1,12 @@ Name:Flaming Gambit ManaCost:X R Types:Instant -K:Flashback X R R -A:SP$ Pump | Cost$ X R | IsCurse$ True | ValidTgts$ Player | TgtPrompt$ Select target player | References$ X | SubAbility$ DBChooseCard | StackDescription$ SpellDescription | SpellDescription$ CARDNAME deals X damage to target player. That player may choose a creature they control and have CARDNAME deal that damage to it instead. -SVar:DBChooseCard:DB$ ChooseCard | Choices$ Card.Creature | Defined$ ParentTarget | MinAmount$ 0 | TargetControls$ True | AILogic$ WorstCard | SubAbility$ DBDamagePlayer +K:Flashback:X R R +A:SP$ Pump | Cost$ X R | IsCurse$ True | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select a player or planeswalker | References$ X | SubAbility$ DBChooseCard | StackDescription$ SpellDescription | SpellDescription$ CARDNAME deals X damage to target player. That player may choose a creature they control and have CARDNAME deal that damage to it instead. +SVar:DBChooseCard:DB$ ChooseCard | Choices$ Card.Creature | Defined$ TargetedOrController | MinAmount$ 0 | TargetControls$ True | AILogic$ WorstCard | SubAbility$ DBDamagePlayer SVar:DBDamagePlayer:DB$ DealDamage | Defined$ ParentTarget | NumDmg$ X | References$ X | ConditionDefined$ ChosenCard | ConditionPresent$ Card | ConditionCompare$ EQ0 | SubAbility$ DBDamageCreature SVar:DBDamageCreature:DB$ DealDamage | Defined$ ChosenCard | NumDmg$ X | References$ X | ConditionDefined$ ChosenCard | ConditionPresent$ Card | ConditionCompare$ GE1 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True SVar:X:Count$xPaid SVar:Picture:http://www.wizards.com/global/images/magic/general/flaming_gambit.jpg -Oracle:Flaming Gambit deals X damage to target player. That player may choose a creature they control and have Flaming Gambit deal that damage to it instead.\nFlashback {X}{R}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.) \ No newline at end of file +Oracle:Flaming Gambit deals X damage to target or planeswalker. That player or that planeswalker's controller may choose a creature they control and have Flaming Gambit deal that damage to it instead.\nFlashback {X}{R}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/f/flare.txt b/forge-gui/res/cardsfolder/f/flare.txt index b2c31d61789..3fed1b74396 100644 --- a/forge-gui/res/cardsfolder/f/flare.txt +++ b/forge-gui/res/cardsfolder/f/flare.txt @@ -1,8 +1,8 @@ Name:Flare ManaCost:2 R Types:Instant -A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ Flare deals 1 damage to target creature or player. Draw a card at the beginning of the next turn's upkeep.| SubAbility$ DelTrigSlowtrip +A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ Flare deals 1 damage to any target. Draw a card at the beginning of the next turn's upkeep.| SubAbility$ DelTrigSlowtrip SVar:DelTrigSlowtrip:DB$ DelayedTrigger | Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Player | Execute$ DrawSlowtrip | TriggerDescription$ Draw a card. SVar:DrawSlowtrip:DB$Draw | NumCards$ 1 | Defined$ You SVar:Picture:http://www.wizards.com/global/images/magic/general/flare.jpg -Oracle:Flare deals 1 damage to target creature or player.\nDraw a card at the beginning of the next turn's upkeep. +Oracle:Flare deals 1 damage to any target.\nDraw a card at the beginning of the next turn's upkeep. diff --git a/forge-gui/res/cardsfolder/f/flaring_pain.txt b/forge-gui/res/cardsfolder/f/flaring_pain.txt index 3d4897d8a7e..f1ef059f6c4 100644 --- a/forge-gui/res/cardsfolder/f/flaring_pain.txt +++ b/forge-gui/res/cardsfolder/f/flaring_pain.txt @@ -1,7 +1,7 @@ Name:Flaring Pain ManaCost:1 R Types:Instant -K:Flashback R +K:Flashback:R A:SP$ Effect | Cost$ 1 R | Name$ Flaring Pain Effect | StaticAbilities$ STCantPrevent | SpellDescription$ Damage can't be prevented this turn. SVar:STCantPrevent:Mode$ Continuous | EffectZone$ Command | GlobalRule$ Damage can't be prevented. | Description$ Damage can't be prevented. SVar:RemAIDeck:True diff --git a/forge-gui/res/cardsfolder/f/flash_of_defiance.txt b/forge-gui/res/cardsfolder/f/flash_of_defiance.txt index b8b68340952..122621b7768 100644 --- a/forge-gui/res/cardsfolder/f/flash_of_defiance.txt +++ b/forge-gui/res/cardsfolder/f/flash_of_defiance.txt @@ -1,7 +1,7 @@ Name:Flash of Defiance ManaCost:1 R Types:Sorcery -K:Flashback 1 R PayLife<3> +K:Flashback:1 R PayLife<3> A:SP$ Effect | Cost$ 1 R | Name$ Flash of Defiance Effect | StaticAbilities$ KWPump | AILogic$ Evasion | SpellDescription$ Green creatures and white creatures can't block this turn. SVar:KWPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.Green,Creature.White | AddHiddenKeyword$ CARDNAME can't block. | Description$ Green creatures and white creatures can't block this turn. SVar:RemAIDeck:True diff --git a/forge-gui/res/cardsfolder/f/flayer_of_the_hatebound.txt b/forge-gui/res/cardsfolder/f/flayer_of_the_hatebound.txt index 8f11331f594..6656666f59e 100644 --- a/forge-gui/res/cardsfolder/f/flayer_of_the_hatebound.txt +++ b/forge-gui/res/cardsfolder/f/flayer_of_the_hatebound.txt @@ -3,9 +3,9 @@ ManaCost:5 R Types:Creature Devil PT:4/2 K:Undying -T:Mode$ ChangesZone | Origin$ Graveyard | Destination$ Battlefield | TriggerZones$ Battlefield | ValidCard$ Creature.YouOwn+Other | Execute$ ReanimateDmg | TriggerDescription$ Whenever CARDNAME or another creature enters the battlefield from your graveyard, that creature deals damage equal to its power to target creature or player. -T:Mode$ ChangesZone | Origin$ Graveyard | Destination$ Battlefield | ValidCard$ Creature.Self | Secondary$ True | Execute$ ReanimateDmg | TriggerDescription$ Whenever CARDNAME or another creature enters the battlefield from your graveyard, that creature deals damage equal to its power to target creature or player. -SVar:ReanimateDmg:DB$DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | DamageSource$ TriggeredCard | NumDmg$ Damage | References$ Damage +T:Mode$ ChangesZone | Origin$ Graveyard | Destination$ Battlefield | TriggerZones$ Battlefield | ValidCard$ Creature.YouOwn+Other | Execute$ ReanimateDmg | TriggerDescription$ Whenever CARDNAME or another creature enters the battlefield from your graveyard, that creature deals damage equal to its power to any target. +T:Mode$ ChangesZone | Origin$ Graveyard | Destination$ Battlefield | ValidCard$ Creature.Self | Secondary$ True | Execute$ ReanimateDmg | TriggerDescription$ Whenever CARDNAME or another creature enters the battlefield from your graveyard, that creature deals damage equal to its power to any target. +SVar:ReanimateDmg:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | DamageSource$ TriggeredCard | NumDmg$ Damage | References$ Damage SVar:Damage:TriggeredCard$CardPower SVar:Picture:http://www.wizards.com/global/images/magic/general/flayer_of_the_hatebound.jpg -Oracle:Undying (When this creature dies, if it had no +1/+1 counters on it, return it to the battlefield under its owner's control with a +1/+1 counter on it.)\nWhenever Flayer of the Hatebound or another creature enters the battlefield from your graveyard, that creature deals damage equal to its power to target creature or player. +Oracle:Undying (When this creature dies, if it had no +1/+1 counters on it, return it to the battlefield under its owner's control with a +1/+1 counter on it.)\nWhenever Flayer of the Hatebound or another creature enters the battlefield from your graveyard, that creature deals damage equal to its power to any target. diff --git a/forge-gui/res/cardsfolder/f/flaying_tendrils.txt b/forge-gui/res/cardsfolder/f/flaying_tendrils.txt index cc9f345ce36..2035a7f6500 100644 --- a/forge-gui/res/cardsfolder/f/flaying_tendrils.txt +++ b/forge-gui/res/cardsfolder/f/flaying_tendrils.txt @@ -2,9 +2,6 @@ Name:Flaying Tendrils ManaCost:1 B B Types:Sorcery K:Devoid -A:SP$ PumpAll | Cost$ 1 B B | ValidCards$ Creature | NumAtt$ -2 | NumDef$ -2 | IsCurse$ True | SubAbility$ DBEffect | SpellDescription$ All creatures get -2/-2 until end of turn. If a creature would die this turn, exile it instead. -SVar:DBEffect:DB$ Effect | Name$ Flaying Tendrils Effect | ReplacementEffects$ Moved | SVars$ DBExile | SpellDescription$ If a creature would die this turn, exile it instead. -SVar:Moved:Event$ Moved | ValidCard$ Creature | Destination$ Graveyard | ReplaceWith$ DBExile | Description$ If a creature dealt damage by CARDNAME this turn would die, exile it instead. -SVar:DBExile:DB$ ChangeZone | Defined$ ReplacedCard | Origin$ Battlefield | Destination$ Exile +A:SP$ PumpAll | Cost$ 1 B B | ValidCards$ Creature | NumAtt$ -2 | NumDef$ -2 | IsCurse$ True | ReplaceDyingValid$ Creature | SpellDescription$ All creatures get -2/-2 until end of turn. If a creature would die this turn, exile it instead. SVar:Picture:http://www.wizards.com/global/images/magic/general/flaying_tendrils.jpg Oracle:Devoid (This card has no color.)\nAll creatures get -2/-2 until end of turn. If a creature would die this turn, exile it instead. diff --git a/forge-gui/res/cardsfolder/f/fledgling_mawcor.txt b/forge-gui/res/cardsfolder/f/fledgling_mawcor.txt index 91f69b64d1e..da5efbba490 100644 --- a/forge-gui/res/cardsfolder/f/fledgling_mawcor.txt +++ b/forge-gui/res/cardsfolder/f/fledgling_mawcor.txt @@ -4,6 +4,6 @@ Types:Creature Beast PT:2/2 K:Flying K:Morph:U U -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/fledgling_mawcor.jpg -Oracle:Flying\n{T}: Fledgling Mawcor deals 1 damage to target creature or player.\nMorph {U}{U} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.) +Oracle:Flying\n{T}: Fledgling Mawcor deals 1 damage to any target.\nMorph {U}{U} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.) diff --git a/forge-gui/res/cardsfolder/f/flesh_blood.txt b/forge-gui/res/cardsfolder/f/flesh_blood.txt index 34d85b37196..887a8655c58 100644 --- a/forge-gui/res/cardsfolder/f/flesh_blood.txt +++ b/forge-gui/res/cardsfolder/f/flesh_blood.txt @@ -15,7 +15,7 @@ ALTERNATE Name:Blood ManaCost:R G Types:Sorcery -A:SP$ Pump | Cost$ R G | ValidTgts$ Creature.YouCtrl | AILogic$ PowerDmg | TgtPrompt$ Select target creature you control | SubAbility$ BloodDamage | StackDescription$ None | SpellDescription$ Target creature you control deals damage equal to its power to target creature or player. -SVar:BloodDamage:DB$ DealDamage | ValidTgts$ Creature,Player | AILogic$ PowerDmg | TgtPrompt$ Select target creature or player | NumDmg$ Y | References$ Y | DamageSource$ ParentTarget +A:SP$ Pump | Cost$ R G | ValidTgts$ Creature.YouCtrl | AILogic$ PowerDmg | TgtPrompt$ Select target creature you control | SubAbility$ BloodDamage | StackDescription$ None | SpellDescription$ Target creature you control deals damage equal to its power to any target. +SVar:BloodDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | AILogic$ PowerDmg | TgtPrompt$ Select any target | NumDmg$ Y | References$ Y | DamageSource$ ParentTarget SVar:Y:ParentTargeted$CardPower -Oracle:Target creature you control deals damage equal to its power to target creature or player.\nFuse (You may cast one or both halves of this card from your hand.) +Oracle:Target creature you control deals damage equal to its power to any target.\nFuse (You may cast one or both halves of this card from your hand.) diff --git a/forge-gui/res/cardsfolder/f/fling.txt b/forge-gui/res/cardsfolder/f/fling.txt index 0e2c6d0fcd9..29981714e98 100644 --- a/forge-gui/res/cardsfolder/f/fling.txt +++ b/forge-gui/res/cardsfolder/f/fling.txt @@ -1,8 +1,8 @@ Name:Fling ManaCost:1 R Types:Instant -A:SP$ DealDamage | Cost$ 1 R Sac<1/Creature> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to the sacrificed creature's power to target creature or player. +A:SP$ DealDamage | Cost$ 1 R Sac<1/Creature> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to the sacrificed creature's power to any target. SVar:X:Sacrificed$CardPower SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/fling.jpg -Oracle:As an additional cost to cast Fling, sacrifice a creature.\nFling deals damage equal to the sacrificed creature's power to target creature or player. +Oracle:As an additional cost to cast Fling, sacrifice a creature.\nFling deals damage equal to the sacrificed creature's power to any target. diff --git a/forge-gui/res/cardsfolder/f/floodchaser.txt b/forge-gui/res/cardsfolder/f/floodchaser.txt index de870553253..6cc1acb2d79 100644 --- a/forge-gui/res/cardsfolder/f/floodchaser.txt +++ b/forge-gui/res/cardsfolder/f/floodchaser.txt @@ -4,7 +4,7 @@ Types:Creature Elemental PT:0/0 K:etbCounter:P1P1:6 S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Island | Description$ CARDNAME can't attack unless defending player controls an Island. -A:AB$ Animate | Cost$ U SubCounter<1/P1P1> | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ Island | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | RemoveAllAbilities$ True | SpellDescription$ Target land becomes an Island until end of turn. +A:AB$ Animate | Cost$ U SubCounter<1/P1P1> | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ Island | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True | SpellDescription$ Target land becomes an Island until end of turn. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/floodchaser.jpg Oracle:Floodchaser enters the battlefield with six +1/+1 counters on it.\nFloodchaser can't attack unless defending player controls an Island.\n{U}, Remove a +1/+1 counter from Floodchaser: Target land becomes an Island until end of turn. diff --git a/forge-gui/res/cardsfolder/f/flowering_field.txt b/forge-gui/res/cardsfolder/f/flowering_field.txt index c089254a4c2..95749ff5e72 100644 --- a/forge-gui/res/cardsfolder/f/flowering_field.txt +++ b/forge-gui/res/cardsfolder/f/flowering_field.txt @@ -3,8 +3,8 @@ ManaCost:1 W Types:Enchantment Aura K:Enchant land A:SP$ Attach | Cost$ 1 W | ValidTgts$ Land | AILogic$ Pump -S:Mode$ Continuous | Affected$ Land.EnchantedBy | AddAbility$ Pump | Description$ Enchanted land has "{T}: Prevent the next 1 damage that would be dealt to target creature or player this turn." -SVar:Pump:AB$PreventDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to target creature or player this turn. +S:Mode$ Continuous | Affected$ Land.EnchantedBy | AddAbility$ Pump | Description$ Enchanted land has "{T}: Prevent the next 1 damage that would be dealt to any target this turn." +SVar:Pump:AB$PreventDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to any target this turn. SVar:NonStackingAttachEffect:True SVar:Picture:http://www.wizards.com/global/images/magic/general/flowering_field.jpg -Oracle:Enchant land\nEnchanted land has "{T}: Prevent the next 1 damage that would be dealt to target creature or player this turn." +Oracle:Enchant land\nEnchanted land has "{T}: Prevent the next 1 damage that would be dealt to any target this turn." diff --git a/forge-gui/res/cardsfolder/f/foe_razer_regent.txt b/forge-gui/res/cardsfolder/f/foe_razer_regent.txt index 4fff384a65c..b145fb85135 100644 --- a/forge-gui/res/cardsfolder/f/foe_razer_regent.txt +++ b/forge-gui/res/cardsfolder/f/foe_razer_regent.txt @@ -4,7 +4,7 @@ Types:Creature Dragon PT:4/5 K:Flying T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigFight | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters the battlefield, you may have it fight target creature you don't control. -SVar:TrigFight:DB$ Fight | Defined$ TriggeredCard | ValidTgts$ Creature.YouDontCtrl | TgtPrompt$ Choose target creature you don't control +SVar:TrigFight:DB$ Fight | Defined$ TriggeredCardLKICopy | ValidTgts$ Creature.YouDontCtrl | TgtPrompt$ Choose target creature you don't control T:Mode$ Fight | ValidCard$ Creature.YouCtrl | TriggerZones$ Battlefield | Execute$ DelTrigPutCounter | TriggerDescription$ Whenever a creature you control fights, put two +1/+1 counters on it at the beginning of the next end step. SVar:DelTrigPutCounter:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigPutCounter | RememberObjects$ TriggeredFighter | TriggerDescription$ Put two +1/+1 counters on it at the beginning of the next end step. SVar:TrigPutCounter:DB$ PutCounter | Defined$ DelayTriggerRemembered | CounterType$ P1P1 | CounterNum$ 2 diff --git a/forge-gui/res/cardsfolder/f/folk_medicine.txt b/forge-gui/res/cardsfolder/f/folk_medicine.txt index 35793bda4f2..d3a4c4f0e51 100644 --- a/forge-gui/res/cardsfolder/f/folk_medicine.txt +++ b/forge-gui/res/cardsfolder/f/folk_medicine.txt @@ -1,7 +1,7 @@ Name:Folk Medicine ManaCost:2 G Types:Instant -K:Flashback 1 W +K:Flashback:1 W A:SP$ GainLife | Cost$ 2 G | LifeAmount$ X | References$ X | SpellDescription$ You gain 1 life for each creature you control. SVar:X:Count$TypeYouCtrl.Creature SVar:RemRandomDeck:True diff --git a/forge-gui/res/cardsfolder/f/font_of_ire.txt b/forge-gui/res/cardsfolder/f/font_of_ire.txt index aebb5bbd7fd..524b0d653be 100644 --- a/forge-gui/res/cardsfolder/f/font_of_ire.txt +++ b/forge-gui/res/cardsfolder/f/font_of_ire.txt @@ -1,6 +1,6 @@ Name:Font of Ire ManaCost:1 R Types:Enchantment -A:AB$ DealDamage | Cost$ 3 R Sac<1/CARDNAME> | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 5 | SpellDescription$ CARDNAME deals 5 damage to target player. +A:AB$ DealDamage | Cost$ 3 R Sac<1/CARDNAME> | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 5 | SpellDescription$ CARDNAME deals 5 damage to target player or planeswalker. SVar:Picture:http://www.wizards.com/global/images/magic/general/font_of_ire.jpg -Oracle:{3}{R}, Sacrifice Font of Ire: Font of Ire deals 5 damage to target player. +Oracle:{3}{R}, Sacrifice Font of Ire: Font of Ire deals 5 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/f/forbidden_alchemy.txt b/forge-gui/res/cardsfolder/f/forbidden_alchemy.txt index 0e598af1ded..56757a98306 100644 --- a/forge-gui/res/cardsfolder/f/forbidden_alchemy.txt +++ b/forge-gui/res/cardsfolder/f/forbidden_alchemy.txt @@ -1,7 +1,7 @@ Name:Forbidden Alchemy ManaCost:2 U Types:Instant -K:Flashback 6 B +K:Flashback:6 B A:SP$ Dig | Cost$ 2 U | DigNum$ 4 | DestinationZone2$ Graveyard | SpellDescription$ Look at the top four cards of your library. Put one of them into your hand and the rest into your graveyard. SVar:RemRandomDeck:True DeckHas:Ability$Graveyard diff --git a/forge-gui/res/cardsfolder/f/forerunner_of_the_heralds.txt b/forge-gui/res/cardsfolder/f/forerunner_of_the_heralds.txt index d2bfb32c0ee..73f895590a5 100644 --- a/forge-gui/res/cardsfolder/f/forerunner_of_the_heralds.txt +++ b/forge-gui/res/cardsfolder/f/forerunner_of_the_heralds.txt @@ -4,7 +4,7 @@ Types:Creature Merfolk Scout PT:3/2 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChange | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters the battlefield, you may search your library for a Merfolk card, reveal it, then shuffle your library and put that card on top of it. SVar:TrigChange:DB$ ChangeZone | Origin$ Library | Destination$ Library | LibraryPosition$ 0 | ChangeType$ Card.Merfolk | ChangeNum$ 1 | ShuffleNonMandatory$ True -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Permanent.Merfolk+YouCtrl+Other | TriggerZones$ Battlefield | Execute$ TrigCounters | TriggerDescription$ Whenever another Merfolk enters the battlefield under your control, put a +1/+1 counter on Foreruner of the Heralds. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Permanent.Merfolk+YouCtrl+Other | TriggerZones$ Battlefield | Execute$ TrigCounters | TriggerDescription$ Whenever another Merfolk enters the battlefield under your control, put a +1/+1 counter on CARDNAME. SVar:TrigCounters:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 DeckHas:Ability$Counters DeckHints:Type$Merfolk diff --git a/forge-gui/res/cardsfolder/f/forge_of_heroes.txt b/forge-gui/res/cardsfolder/f/forge_of_heroes.txt new file mode 100644 index 00000000000..0d3b0636316 --- /dev/null +++ b/forge-gui/res/cardsfolder/f/forge_of_heroes.txt @@ -0,0 +1,8 @@ +Name:Forge of Heroes +ManaCost:no cost +Types:Land +A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}. +A:AB$ Pump | Cost$ T | ValidTgts$ Card.IsCommander+enteredBattlefieldThisTurn | TgtPrompt$ Select target commander that entered the battlefield this turn | SubAbility$ DBPutCounter | StackDescription$ Select target commander that entered the battlefield this turn. | SpellDescription$ Choose target commander that entered the battlefield this turn. Put a +1/+1 counter on it if it's a creature and a loyalty counter on it if it's a planeswalker. +SVar:DBPutCounter:DB$ PutCounter | Defined$ ParentTarget | CounterType$ P1P1 | CounterNum$ 1 | ConditionDefined$ ParentTarget | ConditionPresent$ Creature | ConditionCompare$ GE1 | SubAbility$ DBPutCounterCommander +SVar:DBPutCounterCommander:DB$ PutCounter | Defined$ ParentTarget | CounterType$ LOYALTY | CounterNum$ 1 | ConditionDefined$ ParentTarget | ConditionPresent$ Planeswalker | ConditionCompare$ GE1 +Oracle:{T}: Add {C}.\n{T}: Choose target commander that entered the battlefield this turn. Put a +1/+1 counter on it if it's a creature and a loyalty counter on it if it's a planeswalker. diff --git a/forge-gui/res/cardsfolder/f/forgeborn_oreads.txt b/forge-gui/res/cardsfolder/f/forgeborn_oreads.txt index a98df393523..2db3e2ce2f2 100644 --- a/forge-gui/res/cardsfolder/f/forgeborn_oreads.txt +++ b/forge-gui/res/cardsfolder/f/forgeborn_oreads.txt @@ -2,10 +2,10 @@ Name:Forgeborn Oreads ManaCost:2 R R Types:Enchantment Creature Nymph PT:4/2 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDamage | TriggerDescription$ Constellation — Whenever CARDNAME or another enchantment enters the battlefield under your control, CARDNAME deals 1 damage to target creature or player. -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Enchantment.Other+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDamage | Secondary$ True | TriggerDescription$ Constellation — Whenever CARDNAME or another enchantment enters the battlefield under your control, CARDNAME deals 1 damage to target creature or player. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDamage | TriggerDescription$ Constellation — Whenever CARDNAME or another enchantment enters the battlefield under your control, CARDNAME deals 1 damage to any target. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Enchantment.Other+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDamage | Secondary$ True | TriggerDescription$ Constellation — Whenever CARDNAME or another enchantment enters the battlefield under your control, CARDNAME deals 1 damage to any target. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 SVar:PlayMain1:TRUE SVar:BuffedBy:Enchantment SVar:Picture:http://www.wizards.com/global/images/magic/general/forgeborn_oreads.jpg -Oracle:Constellation — Whenever Forgeborn Oreads or another enchantment enters the battlefield under your control, Forgeborn Oreads deals 1 damage to target creature or player. +Oracle:Constellation — Whenever Forgeborn Oreads or another enchantment enters the battlefield under your control, Forgeborn Oreads deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/f/forked_bolt.txt b/forge-gui/res/cardsfolder/f/forked_bolt.txt index 8e85718a41b..9583f133e52 100644 --- a/forge-gui/res/cardsfolder/f/forked_bolt.txt +++ b/forge-gui/res/cardsfolder/f/forked_bolt.txt @@ -1,6 +1,6 @@ Name:Forked Bolt ManaCost:R Types:Sorcery -A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to distribute damage to | NumDmg$ 2 | TargetMin$ 1 | TargetMax$ 2 | DividedAsYouChoose$ 2 | SpellDescription$ CARDNAME deals 2 damage divided as you choose among one or two target creatures and/or players. +A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to distribute damage to | NumDmg$ 2 | TargetMin$ 1 | TargetMax$ 2 | DividedAsYouChoose$ 2 | SpellDescription$ CARDNAME deals 2 damage divided as you choose among one or two targets. SVar:Picture:http://www.wizards.com/global/images/magic/general/forked_bolt.jpg -Oracle:Forked Bolt deals 2 damage divided as you choose among one or two target creatures and/or players. +Oracle:Forked Bolt deals 2 damage divided as you choose among one or two targets. diff --git a/forge-gui/res/cardsfolder/f/form_of_the_dragon.txt b/forge-gui/res/cardsfolder/f/form_of_the_dragon.txt index 3c1296db504..e409fde3821 100644 --- a/forge-gui/res/cardsfolder/f/form_of_the_dragon.txt +++ b/forge-gui/res/cardsfolder/f/form_of_the_dragon.txt @@ -2,9 +2,9 @@ Name:Form of the Dragon ManaCost:4 R R R Types:Enchantment S:Mode$ CantAttack | ValidCard$ Creature.withoutFlying | Target$ You | Description$ Creatures without flying can't attack you. -T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ At the beginning of your upkeep, CARDNAME deals 5 damage to target creature or player. -SVar:TrigDamage:DB$DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 5 +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ At the beginning of your upkeep, CARDNAME deals 5 damage to any target. +SVar:TrigDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 5 T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ Player | TriggerZones$ Battlefield | Execute$ TrigLife | TriggerDescription$ At the beginning of each end step, your life total becomes 5. SVar:TrigLife:DB$SetLife | Defined$ You | LifeAmount$ 5 SVar:Picture:http://www.wizards.com/global/images/magic/general/form_of_the_dragon.jpg -Oracle:At the beginning of your upkeep, Form of the Dragon deals 5 damage to target creature or player.\nAt the beginning of each end step, your life total becomes 5.\nCreatures without flying can't attack you. +Oracle:At the beginning of your upkeep, Form of the Dragon deals 5 damage to any target.\nAt the beginning of each end step, your life total becomes 5.\nCreatures without flying can't attack you. diff --git a/forge-gui/res/cardsfolder/f/foundry_champion.txt b/forge-gui/res/cardsfolder/f/foundry_champion.txt index 8d01fa8172a..57a72d0960d 100644 --- a/forge-gui/res/cardsfolder/f/foundry_champion.txt +++ b/forge-gui/res/cardsfolder/f/foundry_champion.txt @@ -2,10 +2,10 @@ Name:Foundry Champion ManaCost:4 R W Types:Creature Elemental Soldier PT:4/4 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals damage to target creature or player equal to the number of creatures you control. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals damage to any target equal to the number of creatures you control. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X A:AB$ Pump | Cost$ R | NumAtt$ +1 | SpellDescription$ CARDNAME gets +1/+0 until end of turn. A:AB$ Pump | Cost$ W | NumDef$ +1 | SpellDescription$ CARDNAME gets +0/+1 until end of turn. SVar:X:Count$Valid Creature.YouCtrl SVar:Picture:http://www.wizards.com/global/images/magic/general/foundry_champion.jpg -Oracle:When Foundry Champion enters the battlefield, it deals damage to target creature or player equal to the number of creatures you control.\n{R}: Foundry Champion gets +1/+0 until end of turn.\n{W}: Foundry Champion gets +0/+1 until end of turn. +Oracle:When Foundry Champion enters the battlefield, it deals damage to any target equal to the number of creatures you control.\n{R}: Foundry Champion gets +1/+0 until end of turn.\n{W}: Foundry Champion gets +0/+1 until end of turn. diff --git a/forge-gui/res/cardsfolder/f/fountain_of_renewal.txt b/forge-gui/res/cardsfolder/f/fountain_of_renewal.txt new file mode 100644 index 00000000000..2d92db70d05 --- /dev/null +++ b/forge-gui/res/cardsfolder/f/fountain_of_renewal.txt @@ -0,0 +1,9 @@ +Name:Fountain of Renewal +ManaCost:1 +Types:Artifact +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigGainLife | TriggerDescription$ At the beginning of your upkeep, you gain 1 life. +SVar:TrigGainLife:DB$GainLife | Defined$ You | LifeAmount$ 1 +A:AB$ Draw | Cost$ 3 Sac<1/CARDNAME> | NumCards$ 1 | SpellDescription$ Draw a card. +DeckHas:Ability$LifeGain +SVar:Picture:http://www.wizards.com/global/images/magic/general/fountain_of_renewal.jpg +Oracle:At the beginning of your upkeep, you gain 1 life.\n{3}, Sacrifice Fountain of Renewal: Draw a card. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/f/fraying_omnipotence.txt b/forge-gui/res/cardsfolder/f/fraying_omnipotence.txt new file mode 100644 index 00000000000..c2d0c1f2deb --- /dev/null +++ b/forge-gui/res/cardsfolder/f/fraying_omnipotence.txt @@ -0,0 +1,11 @@ +Name:Fraying Omnipotence +ManaCost:3 B B +Types:Sorcery +A:SP$ RepeatEach | Cost$ 3 B B | RepeatPlayers$ Player | RepeatSubAbility$ DBLoseLife | AILifeThreshold$ 1 | SpellDescription$ Each player loses half their life, then discards half the cards in their hand, then sacrifices half the creatures they control. Round up each time. +SVar:DBLoseLife:DB$ LoseLife | LifeAmount$ A | References$ A | Defined$ Player.IsRemembered | SubAbility$ DBDiscard +SVar:DBDiscard:DB$ Discard | NumCards$ C | References$ C | Defined$ Player.IsRemembered | Mode$ TgtChoose | SubAbility$ DBCreature +SVar:DBCreature:DB$ Sacrifice | SacValid$ Creature | Amount$ E | References$ E | Defined$ Player.IsRemembered | +SVar:A:PlayerCountRemembered$LifeTotal/HalfUp +SVar:C:PlayerCountRemembered$CardsInHand/HalfUp +SVar:E:PlayerCountRemembered$Valid Creature.RememberedPlayerCtrl/HalfUp +Oracle:Each player loses half their life, then discards half the cards in their hand, then sacrifices half the creatures they control. Round up each time. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/f/freyalise_supplicant.txt b/forge-gui/res/cardsfolder/f/freyalise_supplicant.txt index 1ed2d4b0a90..c1044f6380a 100644 --- a/forge-gui/res/cardsfolder/f/freyalise_supplicant.txt +++ b/forge-gui/res/cardsfolder/f/freyalise_supplicant.txt @@ -2,9 +2,9 @@ Name:Freyalise Supplicant ManaCost:1 G Types:Creature Human Cleric PT:1/1 -A:AB$ DealDamage | Cost$ T Sac<1/Creature.Red;Creature.White/red or white creature> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage to target creature or player equal to half the sacrificed creature's power, rounded down. +A:AB$ DealDamage | Cost$ T Sac<1/Creature.Red;Creature.White/red or white creature> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage to any target equal to half the sacrificed creature's power, rounded down. SVar:X:Sacrificed$CardPower/HalfDown SVar:RemAIDeck:True SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/freyalise_supplicant.jpg -Oracle:{T}, Sacrifice a red or white creature: Freyalise Supplicant deals damage to target creature or player equal to half the sacrificed creature's power, rounded down. +Oracle:{T}, Sacrifice a red or white creature: Freyalise Supplicant deals damage to any target equal to half the sacrificed creature's power, rounded down. diff --git a/forge-gui/res/cardsfolder/f/frilled_deathspitter.txt b/forge-gui/res/cardsfolder/f/frilled_deathspitter.txt index cdf199ef838..510afba0d9a 100644 --- a/forge-gui/res/cardsfolder/f/frilled_deathspitter.txt +++ b/forge-gui/res/cardsfolder/f/frilled_deathspitter.txt @@ -2,7 +2,7 @@ Name:Frilled Deathspitter ManaCost:2 R Types:Creature Dinosaur PT:3/2 -T:Mode$ DamageDoneOnce | Execute$ TrigDealDamage | ValidTarget$ Card.Self | TriggerZones$ Battlefield | TriggerDescription$ Enrage — Whenever CARDNAME is dealt damage, it deals 2 damage to target opponent. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | NumDmg$ 2 +T:Mode$ DamageDoneOnce | Execute$ TrigDealDamage | ValidTarget$ Card.Self | TriggerZones$ Battlefield | TriggerDescription$ Enrage — Whenever CARDNAME is dealt damage, it deals 2 damage to target opponent or planeswalker. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Opponent,Planeswalker | TgtPrompt$ Select target opponent or planeswalker | NumDmg$ 2 SVar:Picture:http://www.wizards.com/global/images/magic/general/frilled_deathspitter.jpg -Oracle:Enrage — Whenever Frilled Deathspitter is dealt damage, it deals 2 damage to target opponent. +Oracle:Enrage — Whenever Frilled Deathspitter is dealt damage, it deals 2 damage to target opponent or planeswalker. diff --git a/forge-gui/res/cardsfolder/f/frilled_sea_serpent.txt b/forge-gui/res/cardsfolder/f/frilled_sea_serpent.txt new file mode 100644 index 00000000000..d121302c407 --- /dev/null +++ b/forge-gui/res/cardsfolder/f/frilled_sea_serpent.txt @@ -0,0 +1,6 @@ +Name:Frilled Sea Serpent +ManaCost:4 U U +Types:Creature Serpent +A:AB$ Pump | Cost$ 5 U U | ValidCard$ Card.Self | KW$ Unblockable | SpellDescription$ CARDNAME can't be blocked this turn. +Oracle:{5}{U}{U}: Frilled Sea Serpent can't be blocked this turn. +PT:4/6 diff --git a/forge-gui/res/cardsfolder/f/frontier_siege.txt b/forge-gui/res/cardsfolder/f/frontier_siege.txt index d76ba6a27ba..1b30e4a04f3 100644 --- a/forge-gui/res/cardsfolder/f/frontier_siege.txt +++ b/forge-gui/res/cardsfolder/f/frontier_siege.txt @@ -8,6 +8,6 @@ SVar:KhansTrigger:Mode$ Phase | Phase$ Main1,Main2 | TriggerZones$ Battlefield | SVar:ManaGain:DB$ Mana | Produced$ G G SVar:Dragons:DB$ Animate | Defined$ Self | Triggers$ DragonsTrigger | Permanent$ True | SpellDescription$ Dragons SVar:DragonsTrigger:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.YouCtrl+withFlying | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ AirFight | TriggerDescription$ Whenever a creature with flying enters the battlefield under your control, you may have it fight target creature you don't control. -SVar:AirFight:DB$ Fight | Defined$ TriggeredCard | ValidTgts$ Creature.YouDontCtrl | TgtPrompt$ Choose target creature you don't control | ConditionDefined$ TriggeredCard | ConditionPresent$ Creature +SVar:AirFight:DB$ Fight | Defined$ TriggeredCardLKICopy | ValidTgts$ Creature.YouDontCtrl | TgtPrompt$ Choose target creature you don't control SVar:Picture:http://www.wizards.com/global/images/magic/general/frontier_siege.jpg Oracle:As Frontier Siege enters the battlefield, choose Khans or Dragons.\n• Khans — At the beginning of each of your main phases, add {G}{G}.\n• Dragons — Whenever a creature with flying enters the battlefield under your control, you may have it fight target creature you don't control. diff --git a/forge-gui/res/cardsfolder/f/frontline_devastator.txt b/forge-gui/res/cardsfolder/f/frontline_devastator.txt index ce8b002283f..b33c98763cf 100644 --- a/forge-gui/res/cardsfolder/f/frontline_devastator.txt +++ b/forge-gui/res/cardsfolder/f/frontline_devastator.txt @@ -2,7 +2,7 @@ Name:Frontline Devastator ManaCost:3 R Types:Creature Zombie Minotaur Warrior PT:3/3 -K:Afflict 2 +K:Afflict:2 A:AB$ Pump | Cost$ 1 R | NumAtt$ +1 | SpellDescription$ CARDNAME gets +1/+0 until end of turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/frontline_devastator.jpg Oracle:Afflict 2 (Whenever this creature becomes blocked, defending player loses 2 life.)\n{1}{R}: Frontline Devastator gets +1/+0 until end of turn. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/f/frost_giant.txt b/forge-gui/res/cardsfolder/f/frost_giant.txt index d73b5e6a7ce..da541a3c086 100644 --- a/forge-gui/res/cardsfolder/f/frost_giant.txt +++ b/forge-gui/res/cardsfolder/f/frost_giant.txt @@ -2,6 +2,6 @@ Name:Frost Giant ManaCost:3 R R R Types:Creature Giant PT:4/4 -K:Rampage 2 +K:Rampage:2 SVar:Picture:http://www.wizards.com/global/images/magic/general/frost_giant.jpg Oracle:Rampage 2 (Whenever this creature becomes blocked, it gets +2/+2 until end of turn for each creature blocking it beyond the first.) diff --git a/forge-gui/res/cardsfolder/f/frostwielder.txt b/forge-gui/res/cardsfolder/f/frostwielder.txt index 53f35e268fe..c05b15598cb 100644 --- a/forge-gui/res/cardsfolder/f/frostwielder.txt +++ b/forge-gui/res/cardsfolder/f/frostwielder.txt @@ -2,9 +2,9 @@ Name:Frostwielder ManaCost:2 R R Types:Creature Human Shaman PT:1/2 -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. R:Event$ Moved | ValidLKI$ Creature.DamagedBy | Destination$ Graveyard | ActiveZones$ Battlefield | ReplaceWith$ DBExile | Description$ If a creature dealt damage by CARDNAME this turn would die, exile it instead. SVar:DBExile:DB$ ChangeZone | Defined$ ReplacedCard | Origin$ Battlefield | Destination$ Exile SVar:NonCombatPriority:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/frostwielder.jpg -Oracle:{T}: Frostwielder deals 1 damage to target creature or player.\nIf a creature dealt damage by Frostwielder this turn would die, exile it instead. +Oracle:{T}: Frostwielder deals 1 damage to any target.\nIf a creature dealt damage by Frostwielder this turn would die, exile it instead. diff --git a/forge-gui/res/cardsfolder/f/fumiko_the_lowblood.txt b/forge-gui/res/cardsfolder/f/fumiko_the_lowblood.txt index f80f1dc47a8..3198a9223b0 100644 --- a/forge-gui/res/cardsfolder/f/fumiko_the_lowblood.txt +++ b/forge-gui/res/cardsfolder/f/fumiko_the_lowblood.txt @@ -2,7 +2,7 @@ Name:Fumiko the Lowblood ManaCost:2 R R Types:Legendary Creature Human Samurai PT:3/2 -K:Bushido X +K:Bushido:X S:Mode$ Continuous | Affected$ Creature.OppCtrl | AddHiddenKeyword$ CARDNAME attacks each combat if able. | Description$ Creatures your opponents control attack each combat if able. SVar:Picture:http://www.wizards.com/global/images/magic/general/fumiko_the_lowblood.jpg Oracle:Fumiko the Lowblood has bushido X, where X is the number of attacking creatures. (When this blocks or becomes blocked, it gets +X/+X until end of turn.)\nCreatures your opponents control attack each combat if able. diff --git a/forge-gui/res/cardsfolder/f/furious_assault.txt b/forge-gui/res/cardsfolder/f/furious_assault.txt index c0ee7417564..b25a5135370 100644 --- a/forge-gui/res/cardsfolder/f/furious_assault.txt +++ b/forge-gui/res/cardsfolder/f/furious_assault.txt @@ -1,8 +1,8 @@ Name:Furious Assault ManaCost:2 R Types:Enchantment -T:Mode$ SpellCast | ValidCard$ Creature | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever you cast a creature spell, CARDNAME deals 1 damage to target player. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 1 +T:Mode$ SpellCast | ValidCard$ Creature | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever you cast a creature spell, CARDNAME deals 1 damage to target player or planeswalker. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 SVar:BuffedBy:Creature SVar:Picture:http://www.wizards.com/global/images/magic/general/furious_assault.jpg -Oracle:Whenever you cast a creature spell, Furious Assault deals 1 damage to target player. +Oracle:Whenever you cast a creature spell, Furious Assault deals 1 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/f/furious_reprisal.txt b/forge-gui/res/cardsfolder/f/furious_reprisal.txt index aa55d6fe498..be68bdb3350 100644 --- a/forge-gui/res/cardsfolder/f/furious_reprisal.txt +++ b/forge-gui/res/cardsfolder/f/furious_reprisal.txt @@ -1,6 +1,6 @@ Name:Furious Reprisal ManaCost:3 R Types:Sorcery -A:SP$ DealDamage | Cost$ 3 R | TargetMin$ 2 | TargetMax$ 2 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to each of two target creatures and/or players. +A:SP$ DealDamage | Cost$ 3 R | TargetMin$ 2 | TargetMax$ 2 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to each of two targets. SVar:Picture:http://www.wizards.com/global/images/magic/general/furious_reprisal.jpg -Oracle:Furious Reprisal deals 2 damage to each of two target creatures and/or players. +Oracle:Furious Reprisal deals 2 damage to each of two targets. diff --git a/forge-gui/res/cardsfolder/f/furnace_celebration.txt b/forge-gui/res/cardsfolder/f/furnace_celebration.txt index 0be63a8a9fe..3eb1b3e2874 100644 --- a/forge-gui/res/cardsfolder/f/furnace_celebration.txt +++ b/forge-gui/res/cardsfolder/f/furnace_celebration.txt @@ -1,8 +1,8 @@ Name:Furnace Celebration ManaCost:1 R R Types:Enchantment -T:Mode$ Sacrificed | ValidCard$ Permanent.Other | Execute$ TrigDealDamage | OptionalDecider$ You | TriggerZones$ Battlefield | ValidPlayer$ You | TriggerDescription$ Whenever you sacrifice another permanent, you may pay {2}. If you do, CARDNAME deals 2 damage to target creature or player. -SVar:TrigDealDamage:AB$DealDamage | Cost$ 2 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 +T:Mode$ Sacrificed | ValidCard$ Permanent.Other | Execute$ TrigDealDamage | OptionalDecider$ You | TriggerZones$ Battlefield | ValidPlayer$ You | TriggerDescription$ Whenever you sacrifice another permanent, you may pay {2}. If you do, CARDNAME deals 2 damage to any target. +SVar:TrigDealDamage:AB$DealDamage | Cost$ 2 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/furnace_celebration.jpg -Oracle:Whenever you sacrifice another permanent, you may pay {2}. If you do, Furnace Celebration deals 2 damage to target creature or player. +Oracle:Whenever you sacrifice another permanent, you may pay {2}. If you do, Furnace Celebration deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/f/furnace_of_rath.txt b/forge-gui/res/cardsfolder/f/furnace_of_rath.txt index be355eda9ea..b4669d30018 100644 --- a/forge-gui/res/cardsfolder/f/furnace_of_rath.txt +++ b/forge-gui/res/cardsfolder/f/furnace_of_rath.txt @@ -1,10 +1,10 @@ Name:Furnace of Rath ManaCost:1 R R R Types:Enchantment -R:Event$ DamageDone | ActiveZones$ Battlefield | ValidSource$ Card | ValidTarget$ Creature,Player | ReplaceWith$ DmgTwice | Description$ If a source would deal damage to a creature or player, it deals double that damage to that creature or player instead. +R:Event$ DamageDone | ActiveZones$ Battlefield | ValidSource$ Card | ValidTarget$ Permanent,Player | ReplaceWith$ DmgTwice | Description$ If a source would deal damage to a permanent or player, it deals double that damage to that permanent or player instead. SVar:DmgTwice:DB$ ReplaceEffect | VarName$ DamageAmount | VarValue$ X | References$ X SVar:X:ReplaceCount$DamageAmount/Twice SVar:PlayMain1:TRUE SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/furnace_of_rath.jpg -Oracle:If a source would deal damage to a creature or player, it deals double that damage to that creature or player instead. +Oracle:If a source would deal damage to a permanent or player, it deals double that damage to that permanent or player instead. diff --git a/forge-gui/res/cardsfolder/f/furystoke_giant.txt b/forge-gui/res/cardsfolder/f/furystoke_giant.txt index 4e53ee0bb96..e52e81f3f28 100644 --- a/forge-gui/res/cardsfolder/f/furystoke_giant.txt +++ b/forge-gui/res/cardsfolder/f/furystoke_giant.txt @@ -3,8 +3,8 @@ ManaCost:3 R R Types:Creature Giant Warrior PT:3/3 K:Persist -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigAnimate | TriggerDescription$ When CARDNAME enters the battlefield, other creatures you control gain "{T}: This creature deals 2 damage to target creature or player" until end of turn. -SVar:TrigAnimate:DB$AnimateAll | ValidCards$ Creature.Other+YouCtrl | Abilities$ ABDealDamage | SpellDescription$ Other creatures you control gain "{T}: This creature deals 2 damage to target creature or player" until end of turn. -SVar:ABDealDamage:AB$DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigAnimate | TriggerDescription$ When CARDNAME enters the battlefield, other creatures you control gain "{T}: This creature deals 2 damage to any target" until end of turn. +SVar:TrigAnimate:DB$AnimateAll | ValidCards$ Creature.Other+YouCtrl | Abilities$ ABDealDamage | SpellDescription$ Other creatures you control gain "{T}: This creature deals 2 damage to any target" until end of turn. +SVar:ABDealDamage:AB$DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/furystoke_giant.jpg -Oracle:When Furystoke Giant enters the battlefield, other creatures you control gain "{T}: This creature deals 2 damage to target creature or player" until end of turn.\nPersist (When this creature dies, if it had no -1/-1 counters on it, return it to the battlefield under its owner's control with a -1/-1 counter on it.) +Oracle:When Furystoke Giant enters the battlefield, other creatures you control gain "{T}: This creature deals 2 damage to any target" until end of turn.\nPersist (When this creature dies, if it had no -1/-1 counters on it, return it to the battlefield under its owner's control with a -1/-1 counter on it.) diff --git a/forge-gui/res/cardsfolder/g/gabriel_angelfire.txt b/forge-gui/res/cardsfolder/g/gabriel_angelfire.txt index c87184e97b0..cda7ff8da00 100644 --- a/forge-gui/res/cardsfolder/g/gabriel_angelfire.txt +++ b/forge-gui/res/cardsfolder/g/gabriel_angelfire.txt @@ -7,7 +7,7 @@ SVar:TrigChoice:DB$ GenericChoice | Defined$ You | Choices$ SVar1,SVar2,SVar3,SV SVar:SVar1:DB$ Pump | Defined$ Self | KW$ Flying | UntilYourNextUpkeep$ True | SpellDescription$ Flying SVar:SVar2:DB$ Pump | Defined$ Self | KW$ First Strike | UntilYourNextUpkeep$ True | SpellDescription$ First strike SVar:SVar3:DB$ Pump | Defined$ Self | KW$ Trample | UntilYourNextUpkeep$ True | SpellDescription$ Trample -SVar:SVar4:DB$ Pump | Defined$ Self | KW$ Rampage 3 | UntilYourNextUpkeep$ True | SpellDescription$ Rampage 3 +SVar:SVar4:DB$ Pump | Defined$ Self | KW$ Rampage:3 | UntilYourNextUpkeep$ True | SpellDescription$ Rampage 3 SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/gabriel_angelfire.jpg Oracle:At the beginning of your upkeep, choose flying, first strike, trample, or rampage 3. Gabriel Angelfire gains that ability until your next upkeep. (Whenever a creature with rampage 3 becomes blocked, it gets +3/+3 until end of turn for each creature blocking it beyond the first.) diff --git a/forge-gui/res/cardsfolder/g/gaeas_liege.txt b/forge-gui/res/cardsfolder/g/gaeas_liege.txt index 0ca101ad738..815683424fb 100644 --- a/forge-gui/res/cardsfolder/g/gaeas_liege.txt +++ b/forge-gui/res/cardsfolder/g/gaeas_liege.txt @@ -8,7 +8,7 @@ SVar:X:Count$Valid Forest.YouCtrl S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ Y | SetToughness$ Y | CheckSVar$ B | SVarCompare$ EQ1 SVar:B:Count$Valid Card.Self+attacking SVar:Y:Count$Valid Forest.DefenderCtrl -A:AB$ Animate | Cost$ T | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ Forest | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | RemoveAllAbilities$ True | UntilHostLeavesPlay$ True | SpellDescription$ Target land becomes a Forest until CARDNAME leaves the battlefield. +A:AB$ Animate | Cost$ T | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ Forest | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True | UntilHostLeavesPlay$ True | SpellDescription$ Target land becomes a Forest until CARDNAME leaves the battlefield. SVar:BuffedBy:Forest SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/gaeas_liege.jpg diff --git a/forge-gui/res/cardsfolder/g/gallant_cavalry.txt b/forge-gui/res/cardsfolder/g/gallant_cavalry.txt new file mode 100644 index 00000000000..1beb7b93083 --- /dev/null +++ b/forge-gui/res/cardsfolder/g/gallant_cavalry.txt @@ -0,0 +1,9 @@ +Name:Gallant Cavalry +ManaCost:3 W +Types:Creature Human Knight +K:Vigilance +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, create a 2/2 white Knight creature token with vigilance. +SVar:TrigToken:DB$ Token | TokenOwner$ You | TokenAmount$ 1 | TokenPower$ 2 | TokenToughness$ 2 | TokenColors$ White | TokenTypes$ Knight,Creature | TokenKeywords$ Vigilance | TokenImage$ w 2 2 knight m19 +DeckHas:Ability$Token +Oracle:Vigilance (Attacking doesn't cause this creature to tap.)\nWhen Gallant Cavalry enters the battlefield, create a 2/2 white Knight creature token with vigilance. +PT:2/2 diff --git a/forge-gui/res/cardsfolder/g/galvanic_arc.txt b/forge-gui/res/cardsfolder/g/galvanic_arc.txt index 369ae6b8aa7..0e6df8d5ca0 100644 --- a/forge-gui/res/cardsfolder/g/galvanic_arc.txt +++ b/forge-gui/res/cardsfolder/g/galvanic_arc.txt @@ -4,7 +4,7 @@ Types:Enchantment Aura K:Enchant creature A:SP$ Attach | Cost$ 2 R | ValidTgts$ Creature | AILogic$ Pump S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ First Strike | Description$ Enchanted creature has first strike. -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 3 damage to target creature or player. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 3 damage to any target. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 SVar:Picture:http://www.wizards.com/global/images/magic/general/galvanic_arc.jpg -Oracle:Enchant creature\nWhen Galvanic Arc enters the battlefield, it deals 3 damage to target creature or player.\nEnchanted creature has first strike. +Oracle:Enchant creature\nWhen Galvanic Arc enters the battlefield, it deals 3 damage to any target.\nEnchanted creature has first strike. diff --git a/forge-gui/res/cardsfolder/g/galvanic_blast.txt b/forge-gui/res/cardsfolder/g/galvanic_blast.txt index 87d6f9d8c19..9513101f8e1 100644 --- a/forge-gui/res/cardsfolder/g/galvanic_blast.txt +++ b/forge-gui/res/cardsfolder/g/galvanic_blast.txt @@ -1,7 +1,7 @@ Name:Galvanic Blast ManaCost:R Types:Instant -A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals 2 damage to target creature or player. Metalcraft — CARDNAME deals 4 damage to that creature or player instead if you control 3 or more artifacts. +A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals 2 damage to target creature or player. Metalcraft — CARDNAME deals 4 damage to that permanent or player instead if you control 3 or more artifacts. SVar:X:Count$Metalcraft.4.2 SVar:Picture:http://www.wizards.com/global/images/magic/general/galvanic_blast.jpg Oracle:Galvanic Blast deals 2 damage to any target.\nMetalcraft — Galvanic Blast deals 4 damage to that permanent or player instead if you control three or more artifacts. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/g/gang_of_devils.txt b/forge-gui/res/cardsfolder/g/gang_of_devils.txt index 9846c5034b1..e9f66af0b3d 100644 --- a/forge-gui/res/cardsfolder/g/gang_of_devils.txt +++ b/forge-gui/res/cardsfolder/g/gang_of_devils.txt @@ -2,7 +2,7 @@ Name:Gang of Devils ManaCost:5 R Types:Creature Devil PT:3/3 -T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ DevilTakeYou | TriggerDescription$ When CARDNAME dies, it deals 3 damage divided as you choose among one, two, or three target creatures and/or players. -SVar:DevilTakeYou:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to distribute damage to | NumDmg$ 3 | TargetMin$ 1 | TargetMax$ 3 | DividedAsYouChoose$ 3 +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ DevilTakeYou | TriggerDescription$ When CARDNAME dies, it deals 3 damage divided as you choose among one, two, or three targets. +SVar:DevilTakeYou:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to distribute damage to | NumDmg$ 3 | TargetMin$ 1 | TargetMax$ 3 | DividedAsYouChoose$ 3 SVar:Picture:http://www.wizards.com/global/images/magic/general/gang_of_devils.jpg -Oracle:When Gang of Devils dies, it deals 3 damage divided as you choose among one, two, or three target creatures and/or players. +Oracle:When Gang of Devils dies, it deals 3 damage divided as you choose among one, two, or three targets. diff --git a/forge-gui/res/cardsfolder/g/gaze_of_justice.txt b/forge-gui/res/cardsfolder/g/gaze_of_justice.txt index ef6abfedce5..7414210628b 100644 --- a/forge-gui/res/cardsfolder/g/gaze_of_justice.txt +++ b/forge-gui/res/cardsfolder/g/gaze_of_justice.txt @@ -1,7 +1,7 @@ Name:Gaze of Justice ManaCost:W Types:Sorcery -K:Flashback 5 W tapXType<3/Creature.White/white creature> +K:Flashback:5 W tapXType<3/Creature.White/white creature> A:SP$ ChangeZone | Cost$ W tapXType<3/Creature.White> | ValidTgts$ Creature | TgtPrompt$ Select target creature | Origin$ Battlefield | Destination$ Exile | CostDesc$ As an additional cost to cast CARDNAME, tap three untapped white creatures you control. | SpellDescription$ Exile target creature. SVar:Picture:http://www.wizards.com/global/images/magic/general/gaze_of_justice.jpg Oracle:As an additional cost to cast Gaze of Justice, tap three untapped white creatures you control.\nExile target creature.\nFlashback {5}{W} (You may cast this card from your graveyard for its flashback cost and any additional costs. Then exile it.) diff --git a/forge-gui/res/cardsfolder/g/gearsmith_guardian.txt b/forge-gui/res/cardsfolder/g/gearsmith_guardian.txt new file mode 100644 index 00000000000..b4e33d0029e --- /dev/null +++ b/forge-gui/res/cardsfolder/g/gearsmith_guardian.txt @@ -0,0 +1,9 @@ +Name:Gearsmith Guardian +ManaCost:5 +Types:Artifact Creature Construct +PT:3/5 +S:Mode$ Continuous | Affected$ Card.Self | AddPower$ 2 | IsPresent$ Creature.YouCtrl+Blue | Description$ CARDNAME gets +2/+0 as long as you control a blue creature. +SVar:BuffedBy:Creature.Blue +DeckHints:Color$Blue +SVar:Picture:http://www.wizards.com/global/images/magic/general/gearsmith_guardian.jpg +Oracle:Gearsmith Guardian gets +2/+0 as long as you control a blue creature. diff --git a/forge-gui/res/cardsfolder/g/gearsmith_prodigy.txt b/forge-gui/res/cardsfolder/g/gearsmith_prodigy.txt new file mode 100644 index 00000000000..762e461a1fd --- /dev/null +++ b/forge-gui/res/cardsfolder/g/gearsmith_prodigy.txt @@ -0,0 +1,8 @@ +Name:Gearsmith Prodigy +ManaCost:U +Types:Creature Human Artificer +S:Mode$ Continuous | Affected$ Card.Self | AddPower$ 1 | AddToughness$ 0 | IsPresent$ Artifact.YouCtrl | Description$ CARDNAME gets +1/+0 as long as you control an artifact. +SVar:BuffedBy:Artifact +DeckHints:Type$Artifact +Oracle:Gearsmith Prodigy gets +1/+0 as long as you control an artifact. +PT:1/2 diff --git a/forge-gui/res/cardsfolder/g/geistblast.txt b/forge-gui/res/cardsfolder/g/geistblast.txt index 862077045c8..f9771cd0695 100644 --- a/forge-gui/res/cardsfolder/g/geistblast.txt +++ b/forge-gui/res/cardsfolder/g/geistblast.txt @@ -1,7 +1,7 @@ Name:Geistblast ManaCost:2 R Types:Instant -A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. A:AB$ CopySpellAbility | Cost$ 2 U ExileFromGrave<1/CARDNAME> | ActivationZone$ Graveyard | ValidTgts$ Instant.YouCtrl,Sorcery.YouCtrl | TargetType$ Spell | SpellDescription$ Copy target instant or sorcery spell you control. You may choose new targets for the copy. SVar:Picture:http://www.wizards.com/global/images/magic/general/geistblast.jpg -Oracle:Geistblast deals 2 damage to target creature or player.\n{2}{U}, Exile Geistblast from your graveyard: Copy target instant or sorcery spell you control. You may choose new targets for the copy. +Oracle:Geistblast deals 2 damage to any target.\n{2}{U}, Exile Geistblast from your graveyard: Copy target instant or sorcery spell you control. You may choose new targets for the copy. diff --git a/forge-gui/res/cardsfolder/g/geistflame.txt b/forge-gui/res/cardsfolder/g/geistflame.txt index 7359d4a0932..84568519b7c 100644 --- a/forge-gui/res/cardsfolder/g/geistflame.txt +++ b/forge-gui/res/cardsfolder/g/geistflame.txt @@ -1,7 +1,7 @@ Name:Geistflame ManaCost:R Types:Instant -K:Flashback 3 R -A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +K:Flashback:3 R +A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/geistflame.jpg -Oracle:Geistflame deals 1 damage to target creature or player.\nFlashback {3}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.) +Oracle:Geistflame deals 1 damage to any target.\nFlashback {3}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/g/gelectrode.txt b/forge-gui/res/cardsfolder/g/gelectrode.txt index f48f6b01067..67c89899753 100644 --- a/forge-gui/res/cardsfolder/g/gelectrode.txt +++ b/forge-gui/res/cardsfolder/g/gelectrode.txt @@ -2,9 +2,9 @@ Name:Gelectrode ManaCost:1 U R Types:Creature Weird PT:0/1 -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. T:Mode$ SpellCast | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigUntap | OptionalDecider$ You | TriggerDescription$ Whenever you cast an instant or sorcery spell, you may untap CARDNAME. SVar:TrigUntap:DB$Untap | Defined$ Self SVar:NonCombatPriority:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/gelectrode.jpg -Oracle:{T}: Gelectrode deals 1 damage to target creature or player.\nWhenever you cast an instant or sorcery spell, you may untap Gelectrode. +Oracle:{T}: Gelectrode deals 1 damage to any target.\nWhenever you cast an instant or sorcery spell, you may untap Gelectrode. diff --git a/forge-gui/res/cardsfolder/g/generous_patron.txt b/forge-gui/res/cardsfolder/g/generous_patron.txt new file mode 100644 index 00000000000..521fbf9e2c3 --- /dev/null +++ b/forge-gui/res/cardsfolder/g/generous_patron.txt @@ -0,0 +1,11 @@ +Name:Generous Patron +ManaCost:2 G +Types:Creature Elf Advisor +PT:1/4 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPut | TriggerDescription$ When CARDNAME enters the battlefield, support 2. (Put a +1/+1 counter on each of up to two other target creatures.) +SVar:TrigPut:DB$PutCounter | ValidTgts$ Creature.Other | TgtPrompt$ Select target creature other than CARDNAME | TargetMin$ 0 | TargetMax$ 2 | CounterType$ P1P1 | CounterNum$ 1 +T:Mode$ CounterAddedOnce | ValidCard$ Creature.YouDontCtrl | ValidSource$ You | TriggerZones$ Battlefield | CounterType$ P1P1 | Execute$ DBDraw | TriggerDescription$ Whenever you put one or more counters on a creature you don't control, draw a card. +SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ 1 +DeckHas:Ability$Counters +DeckHints:Ability$Counters +Oracle:When Generous Patron enters the battlefield, support 2. (Put a +1/+1 counter on each of up to two other target creatures.)\nWhenever you put one or more counters on a creature you don't control, draw a card. diff --git a/forge-gui/res/cardsfolder/g/ghastbark_twins.txt b/forge-gui/res/cardsfolder/g/ghastbark_twins.txt new file mode 100644 index 00000000000..345eebe9ef7 --- /dev/null +++ b/forge-gui/res/cardsfolder/g/ghastbark_twins.txt @@ -0,0 +1,7 @@ +Name:Ghastbark Twins +ManaCost:5 G G +Types:Creature Treefolk +K:Trample +K:CARDNAME can block an additional creature each combat. +Oracle:Trample (This creature can deal excess combat damage to the player or planeswalker it's attacking.)\nGhastbark Twins can block an additional creature each combat. +PT:7/7 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/g/ghastly_remains.txt b/forge-gui/res/cardsfolder/g/ghastly_remains.txt index e4650be05db..3a670d68867 100644 --- a/forge-gui/res/cardsfolder/g/ghastly_remains.txt +++ b/forge-gui/res/cardsfolder/g/ghastly_remains.txt @@ -3,7 +3,7 @@ ManaCost:B B B Types:Creature Zombie PT:0/0 K:Amplify:1:Zombie -T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | IsPresent$ Card.Self | PresentZone$ Graveyard | PresentPlayer$ You | TriggerZones$ Graveyard | OptionalDecider$ You | Execute$ TrigReturn | TriggerDescription$ At the beginning of your upkeep, if CARDNAME is in your graveyard, you may pay {B}{B}{B}. If you do, return CARDNAME to your hand. +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | IsPresent$ Card.StrictlySelf | PresentZone$ Graveyard | PresentPlayer$ You | TriggerZones$ Graveyard | OptionalDecider$ You | Execute$ TrigReturn | TriggerDescription$ At the beginning of your upkeep, if CARDNAME is in your graveyard, you may pay {B}{B}{B}. If you do, return CARDNAME to your hand. SVar:TrigReturn:AB$ChangeZone | Cost$ B B B | Defined$ Self | Origin$ Graveyard | Destination$ Hand SVar:NeedsToPlayVar:X GE2 SVar:X:Count$TypeInYourHand.Zombie diff --git a/forge-gui/res/cardsfolder/g/ghirapur_aether_grid.txt b/forge-gui/res/cardsfolder/g/ghirapur_aether_grid.txt index b9af2a274b6..47c39e2d250 100644 --- a/forge-gui/res/cardsfolder/g/ghirapur_aether_grid.txt +++ b/forge-gui/res/cardsfolder/g/ghirapur_aether_grid.txt @@ -1,7 +1,7 @@ Name:Ghirapur Aether Grid ManaCost:2 R Types:Enchantment -A:AB$ DealDamage | Cost$ tapXType<2/Artifact> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ tapXType<2/Artifact> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/ghirapur_aether_grid.jpg -Oracle:Tap two untapped artifacts you control: Ghirapur Aether Grid deals 1 damage to target creature or player. +Oracle:Tap two untapped artifacts you control: Ghirapur Aether Grid deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/g/ghirapur_guide.txt b/forge-gui/res/cardsfolder/g/ghirapur_guide.txt index 9715ca3e6b3..3c2ae26a9b8 100644 --- a/forge-gui/res/cardsfolder/g/ghirapur_guide.txt +++ b/forge-gui/res/cardsfolder/g/ghirapur_guide.txt @@ -3,6 +3,6 @@ ManaCost:2 G Types:Creature Elf Scout PT:3/2 A:AB$ Effect | Cost$ 2 G | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature | RememberObjects$ Targeted | Name$ Ghirapur Guide's Effect | StaticAbilities$ KWPump | SpellDescription$ Target creature you control can't be blocked by creatures with power 2 or less this turn. -SVar:KWPump:Mode$ CantBlockBy | ValidAttacker$ Creature.Remembered | ValidBlocker$ Creature.powerLE2 | EffectZone$ Command | Description$ Remembered creature can't be blocked by creatures with power 2 or less this turn. +SVar:KWPump:Mode$ CantBlockBy | ValidAttacker$ Creature.IsRemembered | ValidBlocker$ Creature.powerLE2 | EffectZone$ Command | Description$ Remembered creature can't be blocked by creatures with power 2 or less this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/ghirapur_guide.jpg Oracle:{2}{G}: Target creature you control can't be blocked by creatures with power 2 or less this turn. diff --git a/forge-gui/res/cardsfolder/g/ghitu_fire.txt b/forge-gui/res/cardsfolder/g/ghitu_fire.txt index 3ed8d20f376..8f02088eb45 100644 --- a/forge-gui/res/cardsfolder/g/ghitu_fire.txt +++ b/forge-gui/res/cardsfolder/g/ghitu_fire.txt @@ -2,7 +2,7 @@ Name:Ghitu Fire ManaCost:X R Types:Sorcery K:MayFlashCost:2 -A:SP$ DealDamage | Cost$ X R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to target creature or player. +A:SP$ DealDamage | Cost$ X R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to any target. SVar:X:Count$xPaid SVar:Picture:http://www.wizards.com/global/images/magic/general/ghitu_fire.jpg Oracle:You may cast Ghitu Fire as though it had flash if you pay {2} more to cast it. (You may cast it any time you could cast an instant.)\nGhitu Fire deals X damage to any target. diff --git a/forge-gui/res/cardsfolder/g/ghitu_fire_eater.txt b/forge-gui/res/cardsfolder/g/ghitu_fire_eater.txt index 9d6c5f2c6b8..37aca896188 100644 --- a/forge-gui/res/cardsfolder/g/ghitu_fire_eater.txt +++ b/forge-gui/res/cardsfolder/g/ghitu_fire_eater.txt @@ -2,7 +2,7 @@ Name:Ghitu Fire-Eater ManaCost:2 R Types:Creature Human Nomad PT:2/2 -A:AB$ DealDamage | Cost$ T Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to its power to target creature or player. +A:AB$ DealDamage | Cost$ T Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to its power to any target. SVar:X:Count$CardPower SVar:Picture:http://www.wizards.com/global/images/magic/general/ghitu_fire_eater.jpg -Oracle:{T}, Sacrifice Ghitu Fire-Eater: Ghitu Fire-Eater deals damage equal to its power to target creature or player. +Oracle:{T}, Sacrifice Ghitu Fire-Eater: Ghitu Fire-Eater deals damage equal to its power to any target. diff --git a/forge-gui/res/cardsfolder/g/ghitu_slinger.txt b/forge-gui/res/cardsfolder/g/ghitu_slinger.txt index c9e7b934451..34b2889dbd4 100644 --- a/forge-gui/res/cardsfolder/g/ghitu_slinger.txt +++ b/forge-gui/res/cardsfolder/g/ghitu_slinger.txt @@ -2,9 +2,9 @@ Name:Ghitu Slinger ManaCost:2 R Types:Creature Human Nomad PT:2/2 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 2 damage to target creature or player. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 2 damage to any target. K:Echo:2 R -SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 +SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 SVar:PlayMain1:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/ghitu_slinger.jpg -Oracle:Echo {2}{R} (At the beginning of your upkeep, if this came under your control since the beginning of your last upkeep, sacrifice it unless you pay its echo cost.)\nWhen Ghitu Slinger enters the battlefield, it deals 2 damage to target creature or player. +Oracle:Echo {2}{R} (At the beginning of your upkeep, if this came under your control since the beginning of your last upkeep, sacrifice it unless you pay its echo cost.)\nWhen Ghitu Slinger enters the battlefield, it deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/g/ghostfire.txt b/forge-gui/res/cardsfolder/g/ghostfire.txt index 3058cfd01b1..22b492f7216 100644 --- a/forge-gui/res/cardsfolder/g/ghostfire.txt +++ b/forge-gui/res/cardsfolder/g/ghostfire.txt @@ -1,7 +1,7 @@ Name:Ghostfire ManaCost:2 R Types:Instant -A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. +A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. Colors:colorless SVar:Picture:http://www.wizards.com/global/images/magic/general/ghostfire.jpg -Oracle:Ghostfire is colorless.\nGhostfire deals 3 damage to target creature or player. +Oracle:Ghostfire is colorless.\nGhostfire deals 3 damage to any target. diff --git a/forge-gui/res/cardsfolder/g/ghosts_of_the_innocent.txt b/forge-gui/res/cardsfolder/g/ghosts_of_the_innocent.txt index 95c7e2de59e..3052274f6ee 100644 --- a/forge-gui/res/cardsfolder/g/ghosts_of_the_innocent.txt +++ b/forge-gui/res/cardsfolder/g/ghosts_of_the_innocent.txt @@ -2,9 +2,9 @@ Name:Ghosts of the Innocent ManaCost:5 W W Types:Creature Spirit PT:4/5 -R:Event$ DamageDone | ActiveZones$ Battlefield | ValidTarget$ Player,Creature | ReplaceWith$ DmgHalfDown | Description$ If a source would deal damage to a creature or player, it deals half that damage, rounded down, to that creature or player instead. +R:Event$ DamageDone | ActiveZones$ Battlefield | ValidTarget$ Player,Permanent | ReplaceWith$ DmgHalfDown | Description$ If a source would deal damage to a permanent or player, it deals half that damage, rounded down, to that permanent or player instead. SVar:DmgHalfDown:DB$ ReplaceEffect | VarName$ DamageAmount | VarValue$ X | References$ X SVar:X:ReplaceCount$DamageAmount/HalfDown SVar:Picture:http://www.wizards.com/global/images/magic/general/ghosts_of_the_innocent.jpg SVar:RemRandomDeck:True -Oracle:If a source would deal damage to a creature or player, it deals half that damage, rounded down, to that creature or player instead. +Oracle:If a source would deal damage to a permanent or player, it deals half that damage, rounded down, to that permanent or player instead. diff --git a/forge-gui/res/cardsfolder/g/giants_ire.txt b/forge-gui/res/cardsfolder/g/giants_ire.txt index 6bf3e7635c4..d1ad63f483b 100644 --- a/forge-gui/res/cardsfolder/g/giants_ire.txt +++ b/forge-gui/res/cardsfolder/g/giants_ire.txt @@ -1,8 +1,8 @@ Name:Giant's Ire ManaCost:3 R Types:Tribal Sorcery Giant -A:SP$ DealDamage | Cost$ 3 R | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 4 | SubAbility$ DBDraw | SpellDescription$ CARDNAME deals 4 damage to target player. If you control a Giant, draw a card. +A:SP$ DealDamage | Cost$ 3 R | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 4 | SubAbility$ DBDraw | SpellDescription$ CARDNAME deals 4 damage to target player or planeswalker. If you control a Giant, draw a card. SVar:DBDraw:DB$Draw | NumCards$ 1 | ConditionPresent$ Giant.YouCtrl | ConditionCompare$ GE1 | ConditionDescription$ If you control a Giant, SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/giants_ire.jpg -Oracle:Giant's Ire deals 4 damage to target player. If you control a Giant, draw a card. +Oracle:Giant's Ire deals 4 damage to target player or planeswalker. If you control a Giant, draw a card. diff --git a/forge-gui/res/cardsfolder/g/gideons_phalanx.txt b/forge-gui/res/cardsfolder/g/gideons_phalanx.txt index 554dbc67a38..f8d3d94c14d 100644 --- a/forge-gui/res/cardsfolder/g/gideons_phalanx.txt +++ b/forge-gui/res/cardsfolder/g/gideons_phalanx.txt @@ -1,7 +1,7 @@ Name:Gideon's Phalanx ManaCost:5 W W Types:Instant -A:SP$ Token | Cost$ 5 W W | TokenAmount$ 4 | TokenName$ Knight | TokenTypes$ Creature,Kngiht | TokenOwner$ You | TokenColors$ White | TokenPower$ 2 | TokenToughness$ 2 | TokenKeywords$ Vigilance | TokenImage$ w 2 2 knight ori | SubAbility$ DBPumpAll | SpellDescription$ Create four 2/2 white Knight creature tokens with vigilance. Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, creatures you control gain indestructible until end of turn. +A:SP$ Token | Cost$ 5 W W | TokenAmount$ 4 | TokenName$ Knight | TokenTypes$ Creature,Knight | TokenOwner$ You | TokenColors$ White | TokenPower$ 2 | TokenToughness$ 2 | TokenKeywords$ Vigilance | TokenImage$ w 2 2 knight ori | SubAbility$ DBPumpAll | SpellDescription$ Create four 2/2 white Knight creature tokens with vigilance. Spell mastery — If there are two or more instant and/or sorcery cards in your graveyard, creatures you control gain indestructible until end of turn. SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Creature.YouCtrl | KW$ Indestructible | ConditionCheckSVar$ X | ConditionSVarCompare$ GE2 | References$ X SVar:X:Count$ValidGraveyard Instant.YouOwn,Sorcery.YouOwn SVar:Picture:http://www.wizards.com/global/images/magic/general/gideons_phalanx.jpg diff --git a/forge-gui/res/cardsfolder/g/gigadrowse.txt b/forge-gui/res/cardsfolder/g/gigadrowse.txt index 937674b35fb..5a7924c7d19 100644 --- a/forge-gui/res/cardsfolder/g/gigadrowse.txt +++ b/forge-gui/res/cardsfolder/g/gigadrowse.txt @@ -2,6 +2,6 @@ Name:Gigadrowse ManaCost:U Types:Instant A:SP$ Tap | Cost$ U | ValidTgts$ Permanent | TgtPrompt$ Select target permanent | SpellDescription$ Tap target permanent. -K:Replicate U +K:Replicate:U SVar:Picture:http://www.wizards.com/global/images/magic/general/gigadrowse.jpg Oracle:Replicate {U} (When you cast this spell, copy it for each time you paid its replicate cost. You may choose new targets for the copies.)\nTap target permanent. diff --git a/forge-gui/res/cardsfolder/g/gigantosaurus.txt b/forge-gui/res/cardsfolder/g/gigantosaurus.txt new file mode 100644 index 00000000000..8ab91d17ea0 --- /dev/null +++ b/forge-gui/res/cardsfolder/g/gigantosaurus.txt @@ -0,0 +1,5 @@ +Name:Gigantosaurus +ManaCost:G G G G G +Types:Creature Dinosaur +Oracle: +PT:10/10 diff --git a/forge-gui/res/cardsfolder/g/gigapede.txt b/forge-gui/res/cardsfolder/g/gigapede.txt index bbd3b2aed05..3d9debf3b35 100644 --- a/forge-gui/res/cardsfolder/g/gigapede.txt +++ b/forge-gui/res/cardsfolder/g/gigapede.txt @@ -2,7 +2,7 @@ Name:Gigapede ManaCost:3 G G Types:Creature Insect PT:6/1 -T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Graveyard | OptionalDecider$ You | Execute$ TrigChange | TriggerDescription$ At the beginning of your upkeep, if CARDNAME is in your graveyard, you may discard a card. If you do, return CARDNAME to your hand. +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Graveyard | IsPresent$ Card.StrictlySelf | PresentZone$ Graveyard | PresentPlayer$ You | OptionalDecider$ You | Execute$ TrigChange | TriggerDescription$ At the beginning of your upkeep, if CARDNAME is in your graveyard, you may discard a card. If you do, return CARDNAME to your hand. SVar:TrigChange:AB$ChangeZone | Cost$ Discard<1/Card> | Origin$ Graveyard | Destination$ Hand | Defined$ Self K:Shroud SVar:Picture:http://www.wizards.com/global/images/magic/general/gigapede.jpg diff --git a/forge-gui/res/cardsfolder/g/glacial_ray.txt b/forge-gui/res/cardsfolder/g/glacial_ray.txt index 0b36813c90d..dfee1262337 100644 --- a/forge-gui/res/cardsfolder/g/glacial_ray.txt +++ b/forge-gui/res/cardsfolder/g/glacial_ray.txt @@ -2,7 +2,7 @@ Name:Glacial Ray ManaCost:1 R Types:Instant Arcane K:Splice:Arcane:1 R -A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. DeckHints:Type$Arcane SVar:Picture:http://www.wizards.com/global/images/magic/general/glacial_ray.jpg -Oracle:Glacial Ray deals 2 damage to target creature or player.\nSplice onto Arcane {1}{R} (As you cast an Arcane spell, you may reveal this card from your hand and pay its splice cost. If you do, add this card's effects to that spell.) +Oracle:Glacial Ray deals 2 damage to any target.\nSplice onto Arcane {1}{R} (As you cast an Arcane spell, you may reveal this card from your hand and pay its splice cost. If you do, add this card's effects to that spell.) diff --git a/forge-gui/res/cardsfolder/g/glaciers.txt b/forge-gui/res/cardsfolder/g/glaciers.txt index 28f27f8febb..bf97c3aa521 100644 --- a/forge-gui/res/cardsfolder/g/glaciers.txt +++ b/forge-gui/res/cardsfolder/g/glaciers.txt @@ -2,7 +2,7 @@ Name:Glaciers ManaCost:2 W U Types:Enchantment K:UpkeepCost:W U -S:Mode$ Continuous | Affected$ Mountain | AddType$ Plains | RemoveSubTypes$ True | RemoveAllAbilities$ True | Description$ All Mountains are Plains. +S:Mode$ Continuous | Affected$ Mountain | AddType$ Plains | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True | Description$ All Mountains are Plains. SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/glaciers.jpg Oracle:At the beginning of your upkeep, sacrifice Glaciers unless you pay {W}{U}.\nAll Mountains are Plains. diff --git a/forge-gui/res/cardsfolder/g/glarecaster.txt b/forge-gui/res/cardsfolder/g/glarecaster.txt index 060e16989d5..8ca7a766ffd 100644 --- a/forge-gui/res/cardsfolder/g/glarecaster.txt +++ b/forge-gui/res/cardsfolder/g/glarecaster.txt @@ -3,10 +3,10 @@ ManaCost:4 W W Types:Creature Bird Cleric PT:3/3 K:Flying -A:AB$ Effect | Cost$ 5 W | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to redirect the damage to | ReplacementEffects$ SelflessDamage | SVars$ SelflessDamage,SelflessDmg,ExileEffect | References$ SelflessDamage,SelflessDmg,ExileEffect | RememberObjects$ Targeted | ExileOnMoved$ Battlefield | SpellDescription$ The next time damage would be dealt to CARDNAME and/or you this turn, that damage is dealt to target creature or player instead. -SVar:SelflessDamage:Event$ DamageDone | ValidTarget$ Creature.EffectSource,You | ReplaceWith$ SelflessDmg | DamageTarget$ Remembered | Description$ The next time damage would be dealt to EFFECTSOURCE and/or you this turn, that damage is dealt to target creature or player instead. +A:AB$ Effect | Cost$ 5 W | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to redirect the damage to | ReplacementEffects$ SelflessDamage | SVars$ SelflessDamage,SelflessDmg,ExileEffect | References$ SelflessDamage,SelflessDmg,ExileEffect | RememberObjects$ Targeted | ExileOnMoved$ Battlefield | SpellDescription$ The next time damage would be dealt to CARDNAME and/or you this turn, that damage is dealt to any target instead. +SVar:SelflessDamage:Event$ DamageDone | ValidTarget$ Creature.EffectSource,You | ReplaceWith$ SelflessDmg | DamageTarget$ Remembered | Description$ The next time damage would be dealt to EFFECTSOURCE and/or you this turn, that damage is dealt to any target instead. SVar:SelflessDmg:DB$ ReplaceEffect | VarName$ Affected | VarValue$ Remembered | VarType$ GameEntity | SubAbility$ ExileEffect SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile | Static$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/glarecaster.jpg -Oracle:Flying\n{5}{W}: The next time damage would be dealt to Glarecaster and/or you this turn, that damage is dealt to target creature or player instead. +Oracle:Flying\n{5}{W}: The next time damage would be dealt to Glarecaster and/or you this turn, that damage is dealt to any target instead. diff --git a/forge-gui/res/cardsfolder/g/glaring_spotlight.txt b/forge-gui/res/cardsfolder/g/glaring_spotlight.txt index 4d96918ae66..a45d751b09e 100644 --- a/forge-gui/res/cardsfolder/g/glaring_spotlight.txt +++ b/forge-gui/res/cardsfolder/g/glaring_spotlight.txt @@ -1,7 +1,7 @@ Name:Glaring Spotlight ManaCost:1 Types:Artifact -S:Mode$ Continuous | Affected$ You | AddKeyword$ Spells and abilities you control can target hexproof creatures | Description$ Creatures your opponents control with hexproof can be the targets of spells and abilities you control as though they didn't have hexproof. +S:Mode$ Continuous | Affected$ You | AddKeyword$ IgnoreHexproof:Creature.OppCtrl | Description$ Creatures your opponents control with hexproof can be the targets of spells and abilities you control as though they didn't have hexproof. A:AB$ PumpAll | Cost$ 3 Sac<1/CARDNAME> | ValidCards$ Creature.YouCtrl | KW$ Hexproof | SubAbility$ GSEffect | SpellDescription$ Creatures you control gain hexproof until end of turn and can't be blocked this turn. SVar:GSEffect:DB$ Effect | Name$ Glaring Spotlight Effect | StaticAbilities$ KWPump SVar:KWPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.YouCtrl | AddHiddenKeyword$ Unblockable | Description$ Creatures you control can't be blocked this turn. diff --git a/forge-gui/res/cardsfolder/g/gliding_licid.txt b/forge-gui/res/cardsfolder/g/gliding_licid.txt index ede3b90e56a..f9c69bb38e7 100644 --- a/forge-gui/res/cardsfolder/g/gliding_licid.txt +++ b/forge-gui/res/cardsfolder/g/gliding_licid.txt @@ -2,7 +2,7 @@ Name:Gliding Licid ManaCost:2 U Types:Creature Licid PT:2/2 -A:AB$ Animate | Cost$ U T | Defined$ Self | RemoveThisAbility$ True | Permanent$ True | RevertCost$ U | Keywords$ Enchant creature | Abilities$ SPAttach | Types$ Enchantment,Aura | RemoveCardTypes$ True | RemoveSubTypes$ True | SubAbility$ DBAttach | SpellDescription$ CARDNAME loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {U} to end this effect. +A:AB$ Animate | Cost$ U T | Defined$ Self | RemoveThisAbility$ True | Permanent$ True | RevertCost$ U | Keywords$ Enchant creature | Abilities$ SPAttach | Types$ Enchantment,Aura | RemoveCardTypes$ True | RemoveEnchantmentTypes$ True | SubAbility$ DBAttach | SpellDescription$ CARDNAME loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {U} to end this effect. SVar:DBAttach:DB$ Attach | ValidTgts$ Creature | AILogic$ Pump SVar:SPAttach:SP$ Attach | Cost$ 0 | ValidTgts$ Creature S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Flying | Description$ Enchanted creature has flying. diff --git a/forge-gui/res/cardsfolder/g/gnaw_to_the_bone.txt b/forge-gui/res/cardsfolder/g/gnaw_to_the_bone.txt index c646444cee8..ba822cc54b0 100644 --- a/forge-gui/res/cardsfolder/g/gnaw_to_the_bone.txt +++ b/forge-gui/res/cardsfolder/g/gnaw_to_the_bone.txt @@ -1,7 +1,7 @@ Name:Gnaw to the Bone ManaCost:2 G Types:Instant -K:Flashback 2 G +K:Flashback:2 G A:SP$ GainLife | Cost$ 2 G | Defined$ You | LifeAmount$ X | References$ X | SpellDescription$ You gain 2 life for each creature card in your graveyard. SVar:X:Count$TypeInYourYard.Creature/Times.2 SVar:Picture:http://www.wizards.com/global/images/magic/general/gnaw_to_the_bone.jpg diff --git a/forge-gui/res/cardsfolder/g/goblin_arsonist.txt b/forge-gui/res/cardsfolder/g/goblin_arsonist.txt index 5067652ea74..afb00c34bc2 100644 --- a/forge-gui/res/cardsfolder/g/goblin_arsonist.txt +++ b/forge-gui/res/cardsfolder/g/goblin_arsonist.txt @@ -2,7 +2,7 @@ Name:Goblin Arsonist ManaCost:R Types:Creature Goblin Shaman PT:1/1 -T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | OptionalDecider$ You | Execute$ TrigDealDamage | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, you may have it deal 1 damage to target creature or player. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | OptionalDecider$ You | Execute$ TrigDealDamage | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, you may have it deal 1 damage to any target. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_arsonist.jpg -Oracle:When Goblin Arsonist dies, you may have it deal 1 damage to target creature or player. +Oracle:When Goblin Arsonist dies, you may have it deal 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/g/goblin_artillery.txt b/forge-gui/res/cardsfolder/g/goblin_artillery.txt index 0ce81f4ffca..360f8a0278a 100644 --- a/forge-gui/res/cardsfolder/g/goblin_artillery.txt +++ b/forge-gui/res/cardsfolder/g/goblin_artillery.txt @@ -2,7 +2,9 @@ Name:Goblin Artillery ManaCost:1 R R Types:Creature Goblin Warrior PT:1/3 -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SubAbility$ DBDealDamage | SpellDescription$ CARDNAME deals 2 damage to target creature or player and 3 damage to you. -SVar:DBDealDamage:DB$DealDamage | Defined$ You | NumDmg$ 3 +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | DamageMap$ True | AILogic$ SelfDamage | SubAbility$ DBDealDamage | SpellDescription$ CARDNAME deals 2 damage to any target and 3 damage to you. +SVar:DBDealDamage:DB$DealDamage | Defined$ You | NumDmg$ 3 | SubAbility$ DBDamageResolve +SVar:DBDamageResolve:DB$ DamageResolve +SVar:SelfDamageAmount:3 SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_artillery.jpg -Oracle:{T}: Goblin Artillery deals 2 damage to target creature or player and 3 damage to you. +Oracle:{T}: Goblin Artillery deals 2 damage to any target and 3 damage to you. diff --git a/forge-gui/res/cardsfolder/g/goblin_bangchuckers.txt b/forge-gui/res/cardsfolder/g/goblin_bangchuckers.txt index 2ef7ac2ca8e..8845b77ffce 100644 --- a/forge-gui/res/cardsfolder/g/goblin_bangchuckers.txt +++ b/forge-gui/res/cardsfolder/g/goblin_bangchuckers.txt @@ -2,9 +2,9 @@ Name:Goblin Bangchuckers ManaCost:2 R R Types:Creature Goblin Warrior PT:2/2 -A:AB$ FlipACoin | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | WinSubAbility$ DBDamageTarget | LoseSubAbility$ DBDamageSelf | SpellDescription$ Flip a coin. If you win the flip, CARDNAME deals 2 damage to target creature or player. If you lose the flip, CARDNAME deals 2 damage to itself. +A:AB$ FlipACoin | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | WinSubAbility$ DBDamageTarget | LoseSubAbility$ DBDamageSelf | SpellDescription$ Flip a coin. If you win the flip, CARDNAME deals 2 damage to any target. If you lose the flip, CARDNAME deals 2 damage to itself. SVar:DBDamageTarget:DB$DealDamage | Defined$ Targeted | NumDmg$ 2 SVar:DBDamageSelf:DB$DealDamage | Defined$ Self | NumDmg$ 2 SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_bangchuckers.jpg -Oracle:{T}: Flip a coin. If you win the flip, Goblin Bangchuckers deals 2 damage to target creature or player. If you lose the flip, Goblin Bangchuckers deals 2 damage to itself. +Oracle:{T}: Flip a coin. If you win the flip, Goblin Bangchuckers deals 2 damage to any target. If you lose the flip, Goblin Bangchuckers deals 2 damage to itself. diff --git a/forge-gui/res/cardsfolder/g/goblin_barrage.txt b/forge-gui/res/cardsfolder/g/goblin_barrage.txt index 0405c6bee5d..169df15e9b6 100644 --- a/forge-gui/res/cardsfolder/g/goblin_barrage.txt +++ b/forge-gui/res/cardsfolder/g/goblin_barrage.txt @@ -3,7 +3,7 @@ ManaCost:3 R Types:Sorcery K:Kicker:Sac<1/Artifact;Goblin/artifact or Goblin> A:SP$ DealDamage | Cost$ 3 R | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 4 | SubAbility$ DBDealDamage | SpellDescription$ CARDNAME deals 4 damage to target creature. If this spell was kicked, it also deals 4 damage to target player or planeswalker. -SVar:DBDealDamage:DB$ DealDamage | Condition$ Kicked | ValidTgts$ Player,Planeswalker | NumDmg$ 4 | TargetMin$ X | TargetMax$ X | TgtPrompt$ Select target player or planeswalker +SVar:DBDealDamage:DB$ DealDamage | Condition$ Kicked | ValidTgts$ Player,Planeswalker | NumDmg$ 4 | TargetMin$ X | TargetMax$ X | References$ X | TgtPrompt$ Select target player or planeswalker SVar:X:Count$Kicked.1.0 DeckHints:Type$Goblin|Artifact Oracle:Kicker—Sacrifice an artifact or Goblin. (You may sacrifice an artifact or Goblin in addition to any other costs as you cast this spell.)\nGoblin Barrage deals 4 damage to target creature. If this spell was kicked, it also deals 4 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/g/goblin_bomb.txt b/forge-gui/res/cardsfolder/g/goblin_bomb.txt index 92e4dfe1ef8..70e6d8d5285 100644 --- a/forge-gui/res/cardsfolder/g/goblin_bomb.txt +++ b/forge-gui/res/cardsfolder/g/goblin_bomb.txt @@ -5,6 +5,6 @@ T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | O SVar:TrigFlip:DB$ FlipACoin | WinSubAbility$ DBAddCounter | LoseSubAbility$ DBRemoveCounter SVar:DBAddCounter:DB$ PutCounter | Defined$ Self | CounterType$ FUSE | CounterNum$ 1 SVar:DBRemoveCounter:DB$ RemoveCounter | Defined$ Self | CounterType$ FUSE | CounterNum$ 1 -A:AB$ DealDamage | Cost$ SubCounter<5/FUSE> Sac<1/CARDNAME> | ValidTgts$ Player | TgtPrompt$ Choose target player | NumDmg$ 20 | SpellDescription$ CARDNAME deals 20 damage to target player. +A:AB$ DealDamage | Cost$ SubCounter<5/FUSE> Sac<1/CARDNAME> | ValidTgts$ Player,Planeswalker | TgtPrompt$ Choose target player or planeswalker | NumDmg$ 20 | SpellDescription$ CARDNAME deals 20 damage to target player or planeswalker. SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_bomb.jpg -Oracle:At the beginning of your upkeep, you may flip a coin. If you win the flip, put a fuse counter on Goblin Bomb. If you lose the flip, remove a fuse counter from Goblin Bomb.\nRemove five fuse counters from Goblin Bomb, Sacrifice Goblin Bomb: Goblin Bomb deals 20 damage to target player. +Oracle:At the beginning of your upkeep, you may flip a coin. If you win the flip, put a fuse counter on Goblin Bomb. If you lose the flip, remove a fuse counter from Goblin Bomb.\nRemove five fuse counters from Goblin Bomb, Sacrifice Goblin Bomb: Goblin Bomb deals 20 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/g/goblin_bombardment.txt b/forge-gui/res/cardsfolder/g/goblin_bombardment.txt index b26503f04df..b46c650c9b2 100644 --- a/forge-gui/res/cardsfolder/g/goblin_bombardment.txt +++ b/forge-gui/res/cardsfolder/g/goblin_bombardment.txt @@ -1,8 +1,8 @@ Name:Goblin Bombardment ManaCost:1 R Types:Enchantment -A:AB$ DealDamage | Cost$ Sac<1/Creature> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ Sac<1/Creature> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:RemAIDeck:True SVar:NonStackingEffect:True SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_bombardment.jpg -Oracle:Sacrifice a creature: Goblin Bombardment deals 1 damage to target creature or player. +Oracle:Sacrifice a creature: Goblin Bombardment deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/g/goblin_boom_keg.txt b/forge-gui/res/cardsfolder/g/goblin_boom_keg.txt index b5499e1bd57..4dad4649b62 100644 --- a/forge-gui/res/cardsfolder/g/goblin_boom_keg.txt +++ b/forge-gui/res/cardsfolder/g/goblin_boom_keg.txt @@ -3,8 +3,8 @@ ManaCost:4 Types:Artifact T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigSac | TriggerDescription$ At the beginning of your upkeep, sacrifice CARDNAME. SVar:TrigSac:DB$ Sacrifice | Defined$ Self -T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME is put into a graveyard from the battlefield, it deals 3 damage to target creature or player. -SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME is put into a graveyard from the battlefield, it deals 3 damage to any target. +SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 SVar:SacMe:4 SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_boom_keg.jpg -Oracle:At the beginning of your upkeep, sacrifice Goblin Boom Keg.\nWhen Goblin Boom Keg is put into a graveyard from the battlefield, it deals 3 damage to target creature or player. +Oracle:At the beginning of your upkeep, sacrifice Goblin Boom Keg.\nWhen Goblin Boom Keg is put into a graveyard from the battlefield, it deals 3 damage to any target. diff --git a/forge-gui/res/cardsfolder/g/goblin_cannon.txt b/forge-gui/res/cardsfolder/g/goblin_cannon.txt index bc559ddc893..add918f199f 100644 --- a/forge-gui/res/cardsfolder/g/goblin_cannon.txt +++ b/forge-gui/res/cardsfolder/g/goblin_cannon.txt @@ -1,8 +1,8 @@ Name:Goblin Cannon ManaCost:4 Types:Artifact -A:AB$DealDamage | Cost$ 2 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SubAbility$ DBSac | SpellDescription$ CARDNAME deals 1 damage to target creature or player. Sacrifice CARDNAME. +A:AB$DealDamage | Cost$ 2 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SubAbility$ DBSac | SpellDescription$ CARDNAME deals 1 damage to any target. Sacrifice CARDNAME. SVar:DBSac:DB$Sacrifice | Defined$ Self SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_cannon.jpg -Oracle:{2}: Goblin Cannon deals 1 damage to target creature or player. Sacrifice Goblin Cannon. +Oracle:{2}: Goblin Cannon deals 1 damage to any target. Sacrifice Goblin Cannon. diff --git a/forge-gui/res/cardsfolder/g/goblin_charbelcher.txt b/forge-gui/res/cardsfolder/g/goblin_charbelcher.txt index 2c1903fe436..382f308adc2 100644 --- a/forge-gui/res/cardsfolder/g/goblin_charbelcher.txt +++ b/forge-gui/res/cardsfolder/g/goblin_charbelcher.txt @@ -1,12 +1,12 @@ Name:Goblin Charbelcher ManaCost:4 Types:Artifact -A:AB$ DigUntil | Cost$ 3 T | Valid$ Land | ValidDescription$ land | RememberRevealed$ True | RevealedDestination$ Library | RevealedLibraryPosition$ -1 | SubAbility$ DBBelch | SpellDescription$ Reveal cards from the top of your library until you reveal a land card. CARDNAME deals damage equal to the number of nonland cards revealed this way to target creature or player. If the revealed land card was a Mountain, CARDNAME deals double that damage instead. Put the revealed cards on the bottom of your library in any order. | StackDescription$ SpellDescription -SVar:DBBelch:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X,FoundMountain | ConditionCheckSVar$ FoundMountain | ConditionSVarCompare$ EQ0 | SubAbility$ DBDoubleBelch | StackDescription$ None +A:AB$ DigUntil | Cost$ 3 T | Valid$ Land | ValidDescription$ land | RememberRevealed$ True | RevealedDestination$ Library | RevealedLibraryPosition$ -1 | SubAbility$ DBBelch | SpellDescription$ Reveal cards from the top of your library until you reveal a land card. CARDNAME deals damage equal to the number of nonland cards revealed this way to any target. If the revealed land card was a Mountain, CARDNAME deals double that damage instead. Put the revealed cards on the bottom of your library in any order. | StackDescription$ SpellDescription +SVar:DBBelch:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X,FoundMountain | ConditionCheckSVar$ FoundMountain | ConditionSVarCompare$ EQ0 | SubAbility$ DBDoubleBelch | StackDescription$ None SVar:DBDoubleBelch:DB$ DealDamage | Defined$ Targeted | NumDmg$ DoubleX | SubAbility$ DBCleanup | ConditionCheckSVar$ FoundMountain | ConditionSVarCompare$ EQ1 | StackDescription$ None | References$ DoubleX,FoundMountain SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Remembered$Valid Card.nonLand SVar:DoubleX:Remembered$Valid Card.nonLand/Times.2 SVar:FoundMountain:Remembered$Valid Card.Mountain SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_charbelcher.jpg -Oracle:{3}, {T}: Reveal cards from the top of your library until you reveal a land card. Goblin Charbelcher deals damage equal to the number of nonland cards revealed this way to target creature or player. If the revealed land card was a Mountain, Goblin Charbelcher deals double that damage instead. Put the revealed cards on the bottom of your library in any order. +Oracle:{3}, {T}: Reveal cards from the top of your library until you reveal a land card. Goblin Charbelcher deals damage equal to the number of nonland cards revealed this way to any target. If the revealed land card was a Mountain, Goblin Charbelcher deals double that damage instead. Put the revealed cards on the bottom of your library in any order. diff --git a/forge-gui/res/cardsfolder/g/goblin_dynamo.txt b/forge-gui/res/cardsfolder/g/goblin_dynamo.txt index 4f0007519d8..09a9cc1baae 100644 --- a/forge-gui/res/cardsfolder/g/goblin_dynamo.txt +++ b/forge-gui/res/cardsfolder/g/goblin_dynamo.txt @@ -2,9 +2,9 @@ Name:Goblin Dynamo ManaCost:5 R R Types:Creature Goblin Mutant PT:4/4 -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. -A:AB$ DealDamage | Cost$ X R T Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to target creature or player. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. +A:AB$ DealDamage | Cost$ X R T Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to any target. SVar:X:Count$xPaid SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_dynamo.jpg -Oracle:{T}: Goblin Dynamo deals 1 damage to target creature or player.\n{X}{R}, {T}, Sacrifice Goblin Dynamo: Goblin Dynamo deals X damage to target creature or player. +Oracle:{T}: Goblin Dynamo deals 1 damage to any target.\n{X}{R}, {T}, Sacrifice Goblin Dynamo: Goblin Dynamo deals X damage to any target. diff --git a/forge-gui/res/cardsfolder/g/goblin_festival.txt b/forge-gui/res/cardsfolder/g/goblin_festival.txt index 3d9080f0404..4544660c261 100644 --- a/forge-gui/res/cardsfolder/g/goblin_festival.txt +++ b/forge-gui/res/cardsfolder/g/goblin_festival.txt @@ -1,11 +1,11 @@ Name:Goblin Festival ManaCost:1 R Types:Enchantment -A:AB$ DealDamage | Cost$ 2 | NumDmg$ 1 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | SubAbility$ RememberActivator | SpellDescription$ CARDNAME deals 1 damage to target creature or player. Flip a coin. If you lose the flip, choose one of your opponents. That player gains control of CARDNAME. +A:AB$ DealDamage | Cost$ 2 | NumDmg$ 1 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | SubAbility$ RememberActivator | SpellDescription$ CARDNAME deals 1 damage to any target. Flip a coin. If you lose the flip, choose one of your opponents. That player gains control of CARDNAME. SVar:RememberActivator:DB$ Pump | RememberObjects$ You | Static$ True | StackDescription$ None | SubAbility$ ControlFlip SVar:ControlFlip:DB$ FlipACoin | Defined$ Remembered | LoseSubAbility$ ChooseOpp | WinSubAbility$ DBCleanup SVar:ChooseOpp:DB$ ChoosePlayer | Defined$ Remembered | Choices$ RememberedOpponents | AILogic$ Curse | SubAbility$ LoseControl SVar:LoseControl:DB$ GainControl | Defined$ Self | NewController$ ChosenPlayer | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_festival.jpg -Oracle:{2}: Goblin Festival deals 1 damage to target creature or player. Flip a coin. If you lose the flip, choose one of your opponents. That player gains control of Goblin Festival. +Oracle:{2}: Goblin Festival deals 1 damage to any target. Flip a coin. If you lose the flip, choose one of your opponents. That player gains control of Goblin Festival. diff --git a/forge-gui/res/cardsfolder/g/goblin_fireslinger.txt b/forge-gui/res/cardsfolder/g/goblin_fireslinger.txt index 198985f6c97..e0f314c16f6 100644 --- a/forge-gui/res/cardsfolder/g/goblin_fireslinger.txt +++ b/forge-gui/res/cardsfolder/g/goblin_fireslinger.txt @@ -2,7 +2,7 @@ Name:Goblin Fireslinger ManaCost:R Types:Creature Goblin Warrior PT:1/1 -A:AB$ DealDamage | Cost$ T | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target player. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target player or planeswalker. SVar:NonCombatPriority:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_fireslinger.jpg -Oracle:{T}: Goblin Fireslinger deals 1 damage to target player. +Oracle:{T}: Goblin Fireslinger deals 1 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/g/goblin_firestarter.txt b/forge-gui/res/cardsfolder/g/goblin_firestarter.txt index 2ac221a3119..a4ac3122893 100644 --- a/forge-gui/res/cardsfolder/g/goblin_firestarter.txt +++ b/forge-gui/res/cardsfolder/g/goblin_firestarter.txt @@ -2,6 +2,6 @@ Name:Goblin Firestarter ManaCost:R Types:Creature Goblin PT:1/1 -A:AB$ DealDamage | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | PlayerTurn$ True | ActivationPhases$ Upkeep,Draw,Main1,BeginCombat | SpellDescription$ CARDNAME deals 1 damage to target creature or player. Activate this ability only during your turn, before attackers are declared. +A:AB$ DealDamage | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | PlayerTurn$ True | ActivationPhases$ Upkeep,Draw,Main1,BeginCombat | SpellDescription$ CARDNAME deals 1 damage to any target. Activate this ability only during your turn, before attackers are declared. SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_firestarter.jpg -Oracle:Sacrifice Goblin Firestarter: Goblin Firestarter deals 1 damage to target creature or player. Activate this ability only during your turn, before attackers are declared. +Oracle:Sacrifice Goblin Firestarter: Goblin Firestarter deals 1 damage to any target. Activate this ability only during your turn, before attackers are declared. diff --git a/forge-gui/res/cardsfolder/g/goblin_grappler.txt b/forge-gui/res/cardsfolder/g/goblin_grappler.txt index 7867710f1a9..d9c555a7c53 100644 --- a/forge-gui/res/cardsfolder/g/goblin_grappler.txt +++ b/forge-gui/res/cardsfolder/g/goblin_grappler.txt @@ -3,6 +3,5 @@ ManaCost:R Types:Creature Goblin PT:1/1 K:Provoke -SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_grappler.jpg Oracle:Provoke (When this attacks, you may have target creature defending player controls untap and block it if able.) diff --git a/forge-gui/res/cardsfolder/g/goblin_grenade.txt b/forge-gui/res/cardsfolder/g/goblin_grenade.txt index 6b349362446..524aaca0e04 100644 --- a/forge-gui/res/cardsfolder/g/goblin_grenade.txt +++ b/forge-gui/res/cardsfolder/g/goblin_grenade.txt @@ -1,9 +1,9 @@ Name:Goblin Grenade ManaCost:R Types:Sorcery -A:SP$ DealDamage | Cost$ R Sac<1/Goblin> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 5 | SpellDescription$ CARDNAME deals 5 damage to target creature or player. +A:SP$ DealDamage | Cost$ R Sac<1/Goblin> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 5 | SpellDescription$ CARDNAME deals 5 damage to any target. SVar:AIPreference:SacCost$Creature.Goblin+cmcLE1 SVar:RemRandomDeck:True DeckNeeds:Type$Goblin SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_grenade.jpg -Oracle:As an additional cost to cast Goblin Grenade, sacrifice a Goblin.\nGoblin Grenade deals 5 damage to target creature or player. +Oracle:As an additional cost to cast Goblin Grenade, sacrifice a Goblin.\nGoblin Grenade deals 5 damage to any target. diff --git a/forge-gui/res/cardsfolder/g/goblin_instigator.txt b/forge-gui/res/cardsfolder/g/goblin_instigator.txt new file mode 100644 index 00000000000..f7eafce0e1a --- /dev/null +++ b/forge-gui/res/cardsfolder/g/goblin_instigator.txt @@ -0,0 +1,8 @@ +Name:Goblin Instigator +ManaCost:1 R +Types:Creature Goblin Rogue +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | TriggerDescription$ When CARDNAME enters the battlefield, create a 1/1 red Goblin creature token. | Execute$ TrigToken +SVar:TrigToken:DB$ Token | TokenOwner$ You | TokenAmount$ 1 | TokenPower$ 1 | TokenToughness$ 1 | TokenColors$ Red | TokenName$ Goblin | TokenTypes$ Goblin,Creature | TokenImage$ r 1 1 goblin m19 +DeckHas:Ability$Token +Oracle:When Goblin Instigator enters the battlefield, create a 1/1 red Goblin creature token. +PT:1/1 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/g/goblin_legionnaire.txt b/forge-gui/res/cardsfolder/g/goblin_legionnaire.txt index c67ee78b1de..52ac42d1c0f 100644 --- a/forge-gui/res/cardsfolder/g/goblin_legionnaire.txt +++ b/forge-gui/res/cardsfolder/g/goblin_legionnaire.txt @@ -2,8 +2,8 @@ Name:Goblin Legionnaire ManaCost:R W Types:Creature Goblin Soldier PT:2/2 -A:AB$ DealDamage | Cost$ R Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. -A:AB$ PreventDamage | Cost$ W Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 2 | SpellDescription$ Prevent the next 2 damage that would be dealt to target creature or player this turn. +A:AB$ DealDamage | Cost$ R Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. +A:AB$ PreventDamage | Cost$ W Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 2 | SpellDescription$ Prevent the next 2 damage that would be dealt to any target this turn. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_legionnaire.jpg -Oracle:{R}, Sacrifice Goblin Legionnaire: Goblin Legionnaire deals 2 damage to target creature or player.\n{W}, Sacrifice Goblin Legionnaire: Prevent the next 2 damage that would be dealt to target creature or player this turn. +Oracle:{R}, Sacrifice Goblin Legionnaire: Goblin Legionnaire deals 2 damage to any target.\n{W}, Sacrifice Goblin Legionnaire: Prevent the next 2 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/g/goblin_medics.txt b/forge-gui/res/cardsfolder/g/goblin_medics.txt index d11ae1e1fa1..0d21aa13db6 100644 --- a/forge-gui/res/cardsfolder/g/goblin_medics.txt +++ b/forge-gui/res/cardsfolder/g/goblin_medics.txt @@ -2,7 +2,7 @@ Name:Goblin Medics ManaCost:2 R Types:Creature Goblin Shaman PT:1/1 -T:Mode$ Taps | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever CARDNAME becomes tapped, it deals 1 damage to target creature or player. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 +T:Mode$ Taps | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever CARDNAME becomes tapped, it deals 1 damage to any target. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_medics.jpg -Oracle:Whenever Goblin Medics becomes tapped, it deals 1 damage to target creature or player. +Oracle:Whenever Goblin Medics becomes tapped, it deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/g/goblin_motivator.txt b/forge-gui/res/cardsfolder/g/goblin_motivator.txt new file mode 100644 index 00000000000..a69918acd83 --- /dev/null +++ b/forge-gui/res/cardsfolder/g/goblin_motivator.txt @@ -0,0 +1,6 @@ +Name:Goblin Motivator +ManaCost:R +Types:Creature Goblin Warrior +A:AB$ Pump | Cost$ T | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ Haste | SpellDescription$ Target creature gains haste until end of turn. +Oracle:{T}: Target creature gains haste until end of turn. (It can attack and {T} this turn.) +PT:1/1 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/g/goblin_razerunners.txt b/forge-gui/res/cardsfolder/g/goblin_razerunners.txt index a7408435b4a..2f5a4e8c458 100644 --- a/forge-gui/res/cardsfolder/g/goblin_razerunners.txt +++ b/forge-gui/res/cardsfolder/g/goblin_razerunners.txt @@ -3,8 +3,8 @@ ManaCost:2 R R Types:Creature Goblin Warrior PT:3/4 A:AB$ PutCounter | Cost$ 1 R Sac<1/Land> | CounterType$ P1P1 | CounterNum$ 1 | SpellDescription$ Put a +1/+1 counter on CARDNAME. -T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDealDamage | OptionalDecider$ You | TriggerDescription$ At the beginning of your end step, you may have CARDNAME deal damage equal to the number of +1/+1 counters on it to target player. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ X | References$ X +T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDealDamage | OptionalDecider$ You | TriggerDescription$ At the beginning of your end step, you may have CARDNAME deal damage equal to the number of +1/+1 counters on it to target player or planeswalker. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Player, Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ X | References$ X SVar:X:Count$CardCounters.P1P1 SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_razerunners.jpg -Oracle:{1}{R}, Sacrifice a land: Put a +1/+1 counter on Goblin Razerunners.\nAt the beginning of your end step, you may have Goblin Razerunners deal damage equal to the number of +1/+1 counters on it to target player. +Oracle:{1}{R}, Sacrifice a land: Put a +1/+1 counter on Goblin Razerunners.\nAt the beginning of your end step, you may have Goblin Razerunners deal damage equal to the number of +1/+1 counters on it to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/g/goblin_sharpshooter.txt b/forge-gui/res/cardsfolder/g/goblin_sharpshooter.txt index 69af6cf8625..72875ba1136 100644 --- a/forge-gui/res/cardsfolder/g/goblin_sharpshooter.txt +++ b/forge-gui/res/cardsfolder/g/goblin_sharpshooter.txt @@ -2,10 +2,10 @@ Name:Goblin Sharpshooter ManaCost:2 R Types:Creature Goblin PT:1/1 -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. K:CARDNAME doesn't untap during your untap step. T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature | TriggerZones$ Battlefield | Execute$ TrigUntap | TriggerDescription$ Whenever a creature dies, untap CARDNAME. SVar:TrigUntap:DB$Untap | Defined$ Self SVar:NonCombatPriority:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_sharpshooter.jpg -Oracle:Goblin Sharpshooter doesn't untap during your untap step.\nWhenever a creature dies, untap Goblin Sharpshooter.\n{T}: Goblin Sharpshooter deals 1 damage to target creature or player. +Oracle:Goblin Sharpshooter doesn't untap during your untap step.\nWhenever a creature dies, untap Goblin Sharpshooter.\n{T}: Goblin Sharpshooter deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/g/goblin_test_pilot.txt b/forge-gui/res/cardsfolder/g/goblin_test_pilot.txt index 60d65843d32..778cdbc2690 100644 --- a/forge-gui/res/cardsfolder/g/goblin_test_pilot.txt +++ b/forge-gui/res/cardsfolder/g/goblin_test_pilot.txt @@ -3,8 +3,8 @@ ManaCost:1 U R Types:Creature Goblin Pilot Wizard PT:0/2 K:Flying -A:AB$ DealDamage | Cost$ T | NumDmg$ 2 | ValidTgts$ Creature,Player | TargetsAtRandom$ True | TgtPrompt$ Select target creature or player | SpellDescription$ CARDNAME deals 2 damage to target creature or player chosen at random. +A:AB$ DealDamage | Cost$ T | NumDmg$ 2 | ValidTgts$ Creature,Player,Planeswalker | TargetsAtRandom$ True | SpellDescription$ CARDNAME deals 2 damage to any target chosen at random. SVar:RemAIDeck:True SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_test_pilot.jpg -Oracle:Flying\n{T}: Goblin Test Pilot deals 2 damage to target creature or player chosen at random. +Oracle:Flying\n{T}: Goblin Test Pilot deals 2 damage to any target chosen at random. diff --git a/forge-gui/res/cardsfolder/g/goblin_trashmaster.txt b/forge-gui/res/cardsfolder/g/goblin_trashmaster.txt new file mode 100644 index 00000000000..b60fb5c7842 --- /dev/null +++ b/forge-gui/res/cardsfolder/g/goblin_trashmaster.txt @@ -0,0 +1,8 @@ +Name:Goblin Trashmaster +ManaCost:2 R R +Types:Creature Goblin Warrior +S:Mode$ Continuous | AffectedZone$ Battlefield | Affected$ Goblin.Other+YouCtrl | AddPower$ 1 | AddToughness$ 1 | Description$ Other Goblins you control get +1/+1. +A:AB$ Destroy | Cost$ Sac<1/Goblin> | ValidTgts$ Artifact | TgtPrompt$ Select target artifact | SpellDescription$ Destroy target artifact. +DeckHints:Type$Goblin +Oracle:Other Goblins you control get +1/+1.\nSacrifice a Goblin: Destroy target artifact. +PT:3/3 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/g/goblin_war_strike.txt b/forge-gui/res/cardsfolder/g/goblin_war_strike.txt index 3941e0615f2..088e6228d0b 100644 --- a/forge-gui/res/cardsfolder/g/goblin_war_strike.txt +++ b/forge-gui/res/cardsfolder/g/goblin_war_strike.txt @@ -1,8 +1,8 @@ Name:Goblin War Strike ManaCost:R Types:Sorcery -A:SP$ DealDamage | Cost$ R | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage to target player equal to the number of Goblins you control. +A:SP$ DealDamage | Cost$ R | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage to target player or planeswalker equal to the number of Goblins you control. SVar:X:Count$TypeYouCtrl.Goblin SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_war_strike.jpg -Oracle:Goblin War Strike deals damage to target player equal to the number of Goblins you control. +Oracle:Goblin War Strike deals damage to target player or planeswalker equal to the number of Goblins you control. diff --git a/forge-gui/res/cardsfolder/g/golgari_brownscale.txt b/forge-gui/res/cardsfolder/g/golgari_brownscale.txt index 546534c6d43..7fb1d86d32c 100644 --- a/forge-gui/res/cardsfolder/g/golgari_brownscale.txt +++ b/forge-gui/res/cardsfolder/g/golgari_brownscale.txt @@ -3,7 +3,7 @@ ManaCost:1 G G Types:Creature Lizard PT:2/3 T:Mode$ ChangesZone | Origin$ Graveyard | Destination$ Hand | ValidCard$ Card.Self | Execute$ TrigGainLife | TriggerDescription$ When CARDNAME is put into your hand from your graveyard, you gain 2 life. -K:Dredge 2 +K:Dredge:2 SVar:TrigGainLife:DB$GainLife | Defined$ You | LifeAmount$ 2 SVar:Picture:http://www.wizards.com/global/images/magic/general/golgari_brownscale.jpg Oracle:When Golgari Brownscale is put into your hand from your graveyard, you gain 2 life.\nDredge 2 (If you would draw a card, instead you may put exactly two cards from the top of your library into your graveyard. If you do, return this card from your graveyard to your hand. Otherwise, draw a card.) diff --git a/forge-gui/res/cardsfolder/g/golgari_grave_troll.txt b/forge-gui/res/cardsfolder/g/golgari_grave_troll.txt index 9a222fc80b9..9b1ed967513 100644 --- a/forge-gui/res/cardsfolder/g/golgari_grave_troll.txt +++ b/forge-gui/res/cardsfolder/g/golgari_grave_troll.txt @@ -4,7 +4,7 @@ Types:Creature Troll Skeleton PT:0/0 K:etbCounter:P1P1:X:no Condition:Golgari Grave-Troll enters the battlefield with a +1/+1 counter on it for each creature card in your graveyard. A:AB$ Regenerate | Cost$ 1 SubCounter<1/P1P1> | SpellDescription$ Regenerate CARDNAME. -K:Dredge 6 +K:Dredge:6 SVar:X:Count$LastStateGraveyard Creature.YouCtrl SVar:NeedsToPlayVar:X GE3 SVar:Picture:http://www.wizards.com/global/images/magic/general/golgari_grave_troll.jpg diff --git a/forge-gui/res/cardsfolder/g/golgari_thug.txt b/forge-gui/res/cardsfolder/g/golgari_thug.txt index 6f4c2f8c4a9..69b1e506d8f 100644 --- a/forge-gui/res/cardsfolder/g/golgari_thug.txt +++ b/forge-gui/res/cardsfolder/g/golgari_thug.txt @@ -2,7 +2,7 @@ Name:Golgari Thug ManaCost:1 B Types:Creature Human Warrior PT:1/1 -K:Dredge 4 +K:Dredge:4 T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigChange | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, put target creature card from your graveyard on top of your library. SVar:TrigChange:DB$ChangeZone | ValidTgts$ Creature | TargetsWithDefinedController$ TriggeredCardController | Origin$ Graveyard | Destination$ Library | LibraryPosition$ 0 | TgtPrompt$ Choose target creature card from your graveyard. SVar:Picture:http://www.wizards.com/global/images/magic/general/golgari_thug.jpg diff --git a/forge-gui/res/cardsfolder/g/goreclaw_terror_of_qal_sisma.txt b/forge-gui/res/cardsfolder/g/goreclaw_terror_of_qal_sisma.txt new file mode 100644 index 00000000000..e3806fb263e --- /dev/null +++ b/forge-gui/res/cardsfolder/g/goreclaw_terror_of_qal_sisma.txt @@ -0,0 +1,8 @@ +Name:Goreclaw, Terror of Qal Sisma +ManaCost:3 G +Types:Legendary Creature Bear +S:Mode$ ReduceCost | ValidCard$ Creature.powerGE4 | Type$ Spell | Activator$ You | Amount$ 2 | Description$ Creature spells you cast with power 4 or greater cost {2} less to cast. +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigPump | TriggerDescription$ Whenever CARDNAME attacks, each creature you control with power 4 or greater gets +1/+1 and gains trample until end of turn. +SVar:TrigPump:DB$ PumpAll | ValidCards$ Creature.YouCtrl+powerGE4 | NumAtt$ +1 | NumDef$ +1 | KW$ Trample +Oracle:Creature spells you cast with power 4 or greater cost {2} less to cast.\nWhenever Goreclaw, Terror of Qal Sisma attacks, each creature you control with power 4 or greater gets +1/+1 and gains trample until end of turn. +PT:4/3 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/g/goretusk_firebeast.txt b/forge-gui/res/cardsfolder/g/goretusk_firebeast.txt index d99658ecb05..5a533f898a0 100644 --- a/forge-gui/res/cardsfolder/g/goretusk_firebeast.txt +++ b/forge-gui/res/cardsfolder/g/goretusk_firebeast.txt @@ -2,7 +2,7 @@ Name:Goretusk Firebeast ManaCost:5 R Types:Creature Elemental Boar Beast PT:2/2 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 4 damage to target player. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 4 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 4 damage to target player or planeswalker. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 4 SVar:Picture:http://resources.wizards.com/magic/cards/jud/en-us/card34917.jpg -Oracle:When Goretusk Firebeast enters the battlefield, it deals 4 damage to target player. +Oracle:When Goretusk Firebeast enters the battlefield, it deals 4 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/g/gorilla_berserkers.txt b/forge-gui/res/cardsfolder/g/gorilla_berserkers.txt index 014eb7e67e8..749201f6a28 100644 --- a/forge-gui/res/cardsfolder/g/gorilla_berserkers.txt +++ b/forge-gui/res/cardsfolder/g/gorilla_berserkers.txt @@ -3,7 +3,7 @@ ManaCost:3 G G Types:Creature Ape Berserker PT:2/3 K:Trample -K:Rampage 2 +K:Rampage:2 K:CantBeBlockedByAmount LT3 SVar:Picture:http://www.wizards.com/global/images/magic/general/gorilla_berserkers.jpg Oracle:Trample, rampage 2 (Whenever this creature becomes blocked, it gets +2/+2 until end of turn for each creature blocking it beyond the first.)\nGorilla Berserkers can't be blocked except by three or more creatures. diff --git a/forge-gui/res/cardsfolder/g/grab_the_reins.txt b/forge-gui/res/cardsfolder/g/grab_the_reins.txt index dc950a6ef8c..39cb3ea64c4 100644 --- a/forge-gui/res/cardsfolder/g/grab_the_reins.txt +++ b/forge-gui/res/cardsfolder/g/grab_the_reins.txt @@ -4,10 +4,10 @@ Types:Instant K:Entwine:2 R A:SP$ Charm | Cost$ 3 R | Choices$ DBGainControl,DBSac | CharmNum$ 1 SVar:DBGainControl:DB$ GainControl | ValidTgts$ Creature | TgtPrompt$ Select target creature to gain control of | LoseControl$ EOT | AddKWs$ Haste | SpellDescription$ Until end of turn, you gain control of target creature and it gains haste. -SVar:DBSac:DB$ Sacrifice | Amount$ 1 | SacValid$ Creature | RememberSacrificed$ True | SubAbility$ GrabDmg | SpellDescription$ Sacrifice a creature, then CARDNAME deals damage equal to that creature's power to target creature or player. -SVar:GrabDmg:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to deal the damage to | NumDmg$ X | SubAbility$ DBCleanup | References$ X +SVar:DBSac:DB$ Sacrifice | Amount$ 1 | SacValid$ Creature | RememberSacrificed$ True | SubAbility$ GrabDmg | SpellDescription$ Sacrifice a creature, then CARDNAME deals damage equal to that creature's power to any target. +SVar:GrabDmg:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to deal the damage to | NumDmg$ X | SubAbility$ DBCleanup | References$ X SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:RememberedLKI$CardPower SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/grab_the_reins.jpg -Oracle:Choose one —\n• Until end of turn, you gain control of target creature and it gains haste.\n• Sacrifice a creature. Grab the Reins deals damage equal to that creature's power to target creature or player.\nEntwine {2}{R} (Choose both if you pay the entwine cost.) +Oracle:Choose one —\n• Until end of turn, you gain control of target creature and it gains haste.\n• Sacrifice a creature. Grab the Reins deals damage equal to that creature's power to any target.\nEntwine {2}{R} (Choose both if you pay the entwine cost.) diff --git a/forge-gui/res/cardsfolder/g/graceful_antelope.txt b/forge-gui/res/cardsfolder/g/graceful_antelope.txt index 0cf22cf4210..4b9a1f08b3e 100644 --- a/forge-gui/res/cardsfolder/g/graceful_antelope.txt +++ b/forge-gui/res/cardsfolder/g/graceful_antelope.txt @@ -4,7 +4,7 @@ Types:Creature Antelope PT:1/4 K:Plainswalk T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigAnimate | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may have target land become a Plains until CARDNAME leaves the battlefield. -SVar:TrigAnimate:DB$ Animate | ValidTgts$ Land | TgtPrompt$ Select target land | UntilHostLeavesPlay$ True | Types$ Plains | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | RemoveAllAbilities$ True +SVar:TrigAnimate:DB$ Animate | ValidTgts$ Land | TgtPrompt$ Select target land | UntilHostLeavesPlay$ True | Types$ Plains | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/graceful_antelope.jpg -Oracle:Plainswalk\nWhenever Graceful Antelope deals combat damage to a player, you may have target land become a Plains until Graceful Antelope leaves the battlefield. +Oracle:Plainswalk (This creature can't be blocked as long as defending player controls a Plains.)\nWhenever Graceful Antelope deals combat damage to a player, you may have target land become a Plains until Graceful Antelope leaves the battlefield. diff --git a/forge-gui/res/cardsfolder/g/granger_guildmage.txt b/forge-gui/res/cardsfolder/g/granger_guildmage.txt index 3978648271b..b0d4ba8db78 100644 --- a/forge-gui/res/cardsfolder/g/granger_guildmage.txt +++ b/forge-gui/res/cardsfolder/g/granger_guildmage.txt @@ -2,8 +2,8 @@ Name:Granger Guildmage ManaCost:G Types:Creature Human Wizard PT:1/1 -A:AB$ DealDamage | Cost$ R T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SubAbility$ DBDealDamage | SpellDescription$ CARDNAME deals 1 damage to target creature or player and 1 damage to you. +A:AB$ DealDamage | Cost$ R T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SubAbility$ DBDealDamage | SpellDescription$ CARDNAME deals 1 damage to any target and 1 damage to you. SVar:DBDealDamage:DB$DealDamage | Defined$ You | NumDmg$ 1 A:AB$ Pump | Cost$ W T | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ First Strike | SpellDescription$ Target creature gains first strike until end of turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/granger_guildmage.jpg -Oracle:{R}, {T}: Granger Guildmage deals 1 damage to target creature or player and 1 damage to you.\n{W}, {T}: Target creature gains first strike until end of turn. +Oracle:{R}, {T}: Granger Guildmage deals 1 damage to any target and 1 damage to you.\n{W}, {T}: Target creature gains first strike until end of turn. diff --git a/forge-gui/res/cardsfolder/g/granite_shard.txt b/forge-gui/res/cardsfolder/g/granite_shard.txt index 3ead654a6ea..c964c4ae8e7 100644 --- a/forge-gui/res/cardsfolder/g/granite_shard.txt +++ b/forge-gui/res/cardsfolder/g/granite_shard.txt @@ -1,7 +1,7 @@ Name:Granite Shard ManaCost:3 Types:Artifact -A:AB$ DealDamage | Cost$ 3 T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. -A:AB$ DealDamage | Cost$ R T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ 3 T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. +A:AB$ DealDamage | Cost$ R T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/granite_shard.jpg -Oracle:{3}, {T} or {R}, {T}: Granite Shard deals 1 damage to target creature or player. +Oracle:{3}, {T} or {R}, {T}: Granite Shard deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/g/grapeshot.txt b/forge-gui/res/cardsfolder/g/grapeshot.txt index 3e74a3a2c35..d3d14150ee3 100644 --- a/forge-gui/res/cardsfolder/g/grapeshot.txt +++ b/forge-gui/res/cardsfolder/g/grapeshot.txt @@ -1,7 +1,7 @@ Name:Grapeshot ManaCost:1 R Types:Sorcery -A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. K:Storm SVar:Picture:http://www.wizards.com/global/images/magic/general/grapeshot.jpg -Oracle:Grapeshot deals 1 damage to target creature or player.\nStorm (When you cast this spell, copy it for each spell cast before it this turn. You may choose new targets for the copies.) +Oracle:Grapeshot deals 1 damage to any target.\nStorm (When you cast this spell, copy it for each spell cast before it this turn. You may choose new targets for the copies.) diff --git a/forge-gui/res/cardsfolder/g/grasp_of_phantoms.txt b/forge-gui/res/cardsfolder/g/grasp_of_phantoms.txt index 93aaa7b3a31..ba07bad04ce 100644 --- a/forge-gui/res/cardsfolder/g/grasp_of_phantoms.txt +++ b/forge-gui/res/cardsfolder/g/grasp_of_phantoms.txt @@ -1,7 +1,7 @@ Name:Grasp of Phantoms ManaCost:3 U Types:Sorcery -K:Flashback 7 U +K:Flashback:7 U A:SP$ ChangeZone | Cost$ 3 U | ValidTgts$ Creature | TgtPrompt$ Select target creature | Origin$ Battlefield | Destination$ Library | LibraryPosition$ 0 | SpellDescription$ Put target creature on top of its owner's library. SVar:Picture:http://www.wizards.com/global/images/magic/general/grasp_of_phantoms.jpg Oracle:Put target creature on top of its owner's library.\nFlashback {7}{U} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/g/gratuitous_violence.txt b/forge-gui/res/cardsfolder/g/gratuitous_violence.txt index 888384fa362..dd52bf8ad2b 100644 --- a/forge-gui/res/cardsfolder/g/gratuitous_violence.txt +++ b/forge-gui/res/cardsfolder/g/gratuitous_violence.txt @@ -1,9 +1,9 @@ Name:Gratuitous Violence ManaCost:2 R R R Types:Enchantment -R:Event$ DamageDone | ActiveZones$ Battlefield | ValidSource$ Creature.YouCtrl | ValidTarget$ Creature,Player | ReplaceWith$ DmgTwice | Description$ If a creature you control would deal damage to a creature or player, it deals double that damage to that creature or player instead. +R:Event$ DamageDone | ActiveZones$ Battlefield | ValidSource$ Creature.YouCtrl | ValidTarget$ Permanent,Player | ReplaceWith$ DmgTwice | Description$ If a creature you control would deal damage to a permanent or player, it deals double that damage to that permanent or player instead. SVar:DmgTwice:DB$ ReplaceEffect | VarName$ DamageAmount | VarValue$ X | References$ X SVar:X:ReplaceCount$DamageAmount/Twice SVar:PlayMain1:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/gratuitous_violence.jpg -Oracle:If a creature you control would deal damage to a creature or player, it deals double that damage to that creature or player instead. +Oracle:If a creature you control would deal damage to a permanent or player, it deals double that damage to that permanent or player instead. diff --git a/forge-gui/res/cardsfolder/g/grave_shell_scarab.txt b/forge-gui/res/cardsfolder/g/grave_shell_scarab.txt index 176452c2ff2..1f99fad1620 100644 --- a/forge-gui/res/cardsfolder/g/grave_shell_scarab.txt +++ b/forge-gui/res/cardsfolder/g/grave_shell_scarab.txt @@ -3,6 +3,6 @@ ManaCost:2 B G G Types:Creature Insect PT:4/4 A:AB$ Draw | Cost$ 1 Sac<1/CARDNAME> | NumCards$ 1 | SpellDescription$ Draw a card. -K:Dredge 1 +K:Dredge:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/grave_shell_scarab.jpg Oracle:{1}, Sacrifice Grave-Shell Scarab: Draw a card.\nDredge 1 (If you would draw a card, instead you may put exactly one card from the top of your library into your graveyard. If you do, return this card from your graveyard to your hand. Otherwise, draw a card.) diff --git a/forge-gui/res/cardsfolder/g/gravewaker.txt b/forge-gui/res/cardsfolder/g/gravewaker.txt new file mode 100644 index 00000000000..73623446015 --- /dev/null +++ b/forge-gui/res/cardsfolder/g/gravewaker.txt @@ -0,0 +1,7 @@ +Name:Gravewaker +ManaCost:4 B B +Types:Creature Bird Spirit +PT:5/5 +K:Flying +A:AB$ ChangeZone | Cost$ 5 B B | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Creature.YouCtrl | Tapped$ True +Oracle:Flying\n{5}{B}{B}: Return target creature card from your graveyard to the battlefield tapped. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/g/graveyard_marshal.txt b/forge-gui/res/cardsfolder/g/graveyard_marshal.txt new file mode 100644 index 00000000000..b32f827d3cb --- /dev/null +++ b/forge-gui/res/cardsfolder/g/graveyard_marshal.txt @@ -0,0 +1,7 @@ +Name:Graveyard Marshal +ManaCost:B B +Types:Creature Zombie Soldier +PT:3/2 +A:AB$ Token | Cost$ 2 B ExileFromGrave<1/Creature> | TokenAmount$ 1 | TokenName$ Zombie | TokenTypes$ Creature,Zombie | TokenOwner$ You | TokenColors$ Black | TokenPower$ 2 | TokenToughness$ 2 | TokenImage$ b 2 2 zombie M10 | TokenTapped$ True | SpellDescription$ Exile target creature card from your graveyard: Create a 2/2 black Zombie creature token. +DeckHas:Ability$Token +Oracle:{2}{B}, Exile target creature card from your graveyard: Create a tapped 2/2 black Zombie creature token. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/g/greater_mossdog.txt b/forge-gui/res/cardsfolder/g/greater_mossdog.txt index 42f1f7736b0..033656da100 100644 --- a/forge-gui/res/cardsfolder/g/greater_mossdog.txt +++ b/forge-gui/res/cardsfolder/g/greater_mossdog.txt @@ -2,6 +2,6 @@ Name:Greater Mossdog ManaCost:3 G Types:Creature Plant Hound PT:3/3 -K:Dredge 3 +K:Dredge:3 SVar:Picture:http://www.wizards.com/global/images/magic/general/greater_mossdog.jpg Oracle:Dredge 3 (If you would draw a card, instead you may put exactly three cards from the top of your library into your graveyard. If you do, return this card from your graveyard to your hand. Otherwise, draw a card.) diff --git a/forge-gui/res/cardsfolder/g/greenwood_sentinel.txt b/forge-gui/res/cardsfolder/g/greenwood_sentinel.txt new file mode 100644 index 00000000000..61320c99a9a --- /dev/null +++ b/forge-gui/res/cardsfolder/g/greenwood_sentinel.txt @@ -0,0 +1,6 @@ +Name:Greenwood Sentinel +ManaCost:1 G +Types:Creature Elf Scout +K:Vigilance +Oracle:Vigilance (Attacking doesn't cause this creature to tap.) +PT:2/2 diff --git a/forge-gui/res/cardsfolder/g/grim_lavamancer.txt b/forge-gui/res/cardsfolder/g/grim_lavamancer.txt index 320f14bc72c..a2d8775f019 100644 --- a/forge-gui/res/cardsfolder/g/grim_lavamancer.txt +++ b/forge-gui/res/cardsfolder/g/grim_lavamancer.txt @@ -2,7 +2,7 @@ Name:Grim Lavamancer ManaCost:R Types:Creature Human Wizard PT:1/1 -A:AB$ DealDamage | Cost$ R T ExileFromGrave<2/Card> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:AB$ DealDamage | Cost$ R T ExileFromGrave<2/Card> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:NonCombatPriority:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/grim_lavamancer.jpg -Oracle:{R}, {T}, Exile two cards from your graveyard: Grim Lavamancer deals 2 damage to target creature or player. +Oracle:{R}, {T}, Exile two cards from your graveyard: Grim Lavamancer deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/g/grixis_illusionist.txt b/forge-gui/res/cardsfolder/g/grixis_illusionist.txt index 0fcf222de67..b6399b25d01 100644 --- a/forge-gui/res/cardsfolder/g/grixis_illusionist.txt +++ b/forge-gui/res/cardsfolder/g/grixis_illusionist.txt @@ -3,7 +3,7 @@ ManaCost:U Types:Creature Human Wizard PT:1/1 A:AB$ ChooseType | Cost$ T | Defined$ You | Type$ Basic Land | SubAbility$ DBAnimate | SpellDescription$ Target land you control becomes the basic land type of your choice until end of turn. -SVar:DBAnimate:DB$ Animate | ValidTgts$ Land.YouCtrl | TgtPrompt$ Select target land you control | Types$ ChosenType | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | RemoveAllAbilities$ True +SVar:DBAnimate:DB$ Animate | ValidTgts$ Land.YouCtrl | TgtPrompt$ Select target land you control | Types$ ChosenType | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/grixis_illusionist.jpg Oracle:{T}: Target land you control becomes the basic land type of your choice until end of turn. diff --git a/forge-gui/res/cardsfolder/g/grizzly_fate.txt b/forge-gui/res/cardsfolder/g/grizzly_fate.txt index f4245ada000..e3aab16b377 100644 --- a/forge-gui/res/cardsfolder/g/grizzly_fate.txt +++ b/forge-gui/res/cardsfolder/g/grizzly_fate.txt @@ -1,7 +1,7 @@ Name:Grizzly Fate ManaCost:3 G G Types:Sorcery -K:Flashback 5 G G +K:Flashback:5 G G A:SP$ Token | Cost$ 3 G G | TokenAmount$ X | TokenName$ Bear | TokenTypes$ Creature,Bear | TokenOwner$ You | TokenColors$ Green | TokenPower$ 2 | TokenToughness$ 2 | References$ X | SpellDescription$ Create two 2/2 green Bear creature tokens. Threshold — Create four 2/2 green Bear creature tokens instead if seven or more cards are in your graveyard. SVar:X:Count$Threshold.4.2 SVar:Picture:http://www.wizards.com/global/images/magic/general/grizzly_fate.jpg diff --git a/forge-gui/res/cardsfolder/g/grothama_all_devouring.txt b/forge-gui/res/cardsfolder/g/grothama_all_devouring.txt new file mode 100644 index 00000000000..749dda26425 --- /dev/null +++ b/forge-gui/res/cardsfolder/g/grothama_all_devouring.txt @@ -0,0 +1,14 @@ +Name:Grothama, All-Devouring +ManaCost:3 G G +Types:Legendary Creature Wurm +PT:10/8 +S:Mode$ Continuous | Affected$ Creature.Other | AddTrigger$ GrothamaAttack | AddSVar$ HasAttackEffect | Description$ Other creatures have "Whenever this creature attacks, you may have it fight CARDNAME." +SVar:GrothamaAttack:Mode$ Attacks | ValidCard$ Card.Self | Execute$ GrothamaFight | OptionalDecider$ You | TriggerDescription$ Whenever this creature attacks, ABILITY. +SVar:GrothamaFight:DB$ Fight | Defined$ TriggeredAttackerLKICopy | ExtraDefined$ OriginalHost | SpellDescription$ You may have it fight ORIGINALHOST +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ TrigRepeat | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME leaves the battlefield, each player draws cards equal to the amount of damage dealt to Grothama this turn by sources they controlled. +SVar:TrigRepeat:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ TrigDraw +SVar:TrigDraw:DB$Draw | Defined$ Remembered | NumCards$ X | References$ X +SVar:X:TriggeredCard$DamageDoneByPlayerThisTurn.Remembered +SVar:HasAttackEffect:TRUE +SVar:Picture:http://www.wizards.com/global/images/magic/general/grothama_all_devouring.jpg +Oracle:Other creatures have "Whenever this creature attacks, you may have it fight Grothama, All-Devouring."\nWhen Grothama leaves the battlefield, each player draws cards equal to the amount of damage dealt to Grothama this turn by sources they controlled. diff --git a/forge-gui/res/cardsfolder/g/gruul_guildmage.txt b/forge-gui/res/cardsfolder/g/gruul_guildmage.txt index 384e2941d9e..8e9cd0ee12f 100644 --- a/forge-gui/res/cardsfolder/g/gruul_guildmage.txt +++ b/forge-gui/res/cardsfolder/g/gruul_guildmage.txt @@ -3,6 +3,6 @@ ManaCost:RG RG Types:Creature Human Shaman PT:2/2 A:AB$ Pump | Cost$ 3 G | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +2 | NumDef$ +2 | SpellDescription$ Target creature gets +2/+2 until end of turn. -A:AB$ DealDamage | Cost$ 3 R Sac<1/Land> | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target player. +A:AB$ DealDamage | Cost$ 3 R Sac<1/Land> | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target player or planeswalker. SVar:Picture:http://www.wizards.com/global/images/magic/general/gruul_guildmage.jpg -Oracle:({R/G} can be paid with either {R} or {G}.)\n{3}{R}, Sacrifice a land: Gruul Guildmage deals 2 damage to target player.\n{3}{G}: Target creature gets +2/+2 until end of turn. +Oracle:({R/G} can be paid with either {R} or {G}.)\n{3}{R}, Sacrifice a land: Gruul Guildmage deals 2 damage to target player or planeswalker.\n{3}{G}: Target creature gets +2/+2 until end of turn. diff --git a/forge-gui/res/cardsfolder/g/gruul_ragebeast.txt b/forge-gui/res/cardsfolder/g/gruul_ragebeast.txt index d35e4de74e6..c03a4b9741b 100644 --- a/forge-gui/res/cardsfolder/g/gruul_ragebeast.txt +++ b/forge-gui/res/cardsfolder/g/gruul_ragebeast.txt @@ -4,6 +4,6 @@ Types:Creature Beast PT:6/6 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigFight | TriggerDescription$ Whenever CARDNAME or another creature enters the battlefield under your control, that creature fights target creature an opponent controls. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Other+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigFight | Secondary$ True | TriggerDescription$ Whenever CARDNAME or another creature enters the battlefield under your control, that creature fights target creature an opponent controls. -SVar:TrigFight:DB$ Fight | Defined$ TriggeredCard | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature an opponent controls. +SVar:TrigFight:DB$ Fight | Defined$ TriggeredCardLKICopy | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature an opponent controls. SVar:Picture:http://www.wizards.com/global/images/magic/general/gruul_ragebeast.jpg Oracle:Whenever Gruul Ragebeast or another creature enters the battlefield under your control, that creature fights target creature an opponent controls. diff --git a/forge-gui/res/cardsfolder/g/guardian_angel.txt b/forge-gui/res/cardsfolder/g/guardian_angel.txt index 12956d26d00..8cf4e961ee7 100644 --- a/forge-gui/res/cardsfolder/g/guardian_angel.txt +++ b/forge-gui/res/cardsfolder/g/guardian_angel.txt @@ -1,12 +1,12 @@ Name:Guardian Angel ManaCost:X W Types:Instant -A:SP$ PreventDamage | Cost$ X W | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ X | References$ X | SubAbility$ GuardianEffect | SpellDescription$ Prevent the next X damage that would be dealt to target creature or player this turn. Until end of turn, you may pay {1} any time you could cast an instant. If you do, prevent the next 1 damage that would be dealt to that creature or player this turn. +A:SP$ PreventDamage | Cost$ X W | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ X | References$ X | SubAbility$ GuardianEffect | SpellDescription$ Prevent the next X damage that would be dealt to any target this turn. Until end of turn, you may pay {1} any time you could cast an instant. If you do, prevent the next 1 damage that would be dealt to that permanent or player this turn. SVar:GuardianEffect:DB$ Effect | Name$ Guardian Angel Effect | Abilities$ ABProtect | RememberObjects$ Targeted | Triggers$ OutOfSight | SVars$ ExileEffect -SVar:ABProtect:AB$ PreventDamage | ActivationZone$ Command | Cost$ 1 | InstantSpeed$ True | Defined$ Remembered | Amount$ 1 | SpellDescription$ You may pay 1 any time you could cast an instant. If you do, prevent the next 1 damage that would be dealt to that creature or player this turn. +SVar:ABProtect:AB$ PreventDamage | ActivationZone$ Command | Cost$ 1 | InstantSpeed$ True | Defined$ Remembered | Amount$ 1 | SpellDescription$ You may pay 1 any time you could cast an instant. If you do, prevent the next 1 damage that would be dealt to that permanent or player this turn. SVar:OutOfSight:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | Defined$ Remembered | Execute$ ExileEffect | Static$ True SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile | Static$ True SVar:RemAIDeck:True SVar:X:Count$xPaid SVar:Picture:http://www.wizards.com/global/images/magic/general/guardian_angel.jpg -Oracle:Prevent the next X damage that would be dealt to target creature or player this turn. Until end of turn, you may pay {1} any time you could cast an instant. If you do, prevent the next 1 damage that would be dealt to that creature or player this turn. +Oracle:Prevent the next X damage that would be dealt to any target this turn. Until end of turn, you may pay {1} any time you could cast an instant. If you do, prevent the next 1 damage that would be dealt to that permanent or player this turn. diff --git a/forge-gui/res/cardsfolder/g/guerrilla_tactics.txt b/forge-gui/res/cardsfolder/g/guerrilla_tactics.txt index b9c9cedc68e..528739fb280 100644 --- a/forge-gui/res/cardsfolder/g/guerrilla_tactics.txt +++ b/forge-gui/res/cardsfolder/g/guerrilla_tactics.txt @@ -1,9 +1,9 @@ Name:Guerrilla Tactics ManaCost:1 R Types:Instant -A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. -T:Mode$ Discarded | ValidCard$ Card.Self | ValidCause$ Card.OppCtrl | Execute$ TrigDoubleDmg | TriggerDescription$ When a spell or ability an opponent controls causes you to discard CARDNAME, CARDNAME deals 4 damage to target creature or player. -SVar:TrigDoubleDmg:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 4 +A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. +T:Mode$ Discarded | ValidCard$ Card.Self | ValidCause$ Card.OppCtrl | Execute$ TrigDoubleDmg | TriggerDescription$ When a spell or ability an opponent controls causes you to discard CARDNAME, CARDNAME deals 4 damage to any target. +SVar:TrigDoubleDmg:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 4 SVar:DiscardMeByOpp:3 SVar:Picture:http://www.wizards.com/global/images/magic/general/guerrilla_tactics.jpg -Oracle:Guerrilla Tactics deals 2 damage to target creature or player.\nWhen a spell or ability an opponent controls causes you to discard Guerrilla Tactics, Guerrilla Tactics deals 4 damage to target creature or player. +Oracle:Guerrilla Tactics deals 2 damage to any target.\nWhen a spell or ability an opponent controls causes you to discard Guerrilla Tactics, Guerrilla Tactics deals 4 damage to any target. diff --git a/forge-gui/res/cardsfolder/g/guilty_conscience.txt b/forge-gui/res/cardsfolder/g/guilty_conscience.txt index 7bc70d7597f..5578ac5d5f1 100644 --- a/forge-gui/res/cardsfolder/g/guilty_conscience.txt +++ b/forge-gui/res/cardsfolder/g/guilty_conscience.txt @@ -4,7 +4,7 @@ Types:Enchantment Aura K:Enchant creature A:SP$ Attach | Cost$ W | ValidTgts$ Creature | AILogic$ SpecificCard T:Mode$ DamageDealtOnce | ValidSource$ Card.AttachedBy | Execute$ TrigDamage | TriggerZones$ Battlefield | TriggerDescription$ Whenever enchanted creature deals damage, CARDNAME deals that much damage to that creature. -SVar:TrigDamage:DB$ DealDamage | Defined$ TriggeredSource | NumDmg$ X | References$ X +SVar:TrigDamage:DB$ DealDamage | Defined$ TriggeredSourceLKICopy | NumDmg$ X | References$ X SVar:X:TriggerCount$DamageAmount SVar:Picture:http://www.wizards.com/global/images/magic/general/guilty_conscience.jpg Oracle:Enchant creature\nWhenever enchanted creature deals damage, Guilty Conscience deals that much damage to that creature. diff --git a/forge-gui/res/cardsfolder/g/gut_shot.txt b/forge-gui/res/cardsfolder/g/gut_shot.txt index 353cd329315..53dfa85f192 100644 --- a/forge-gui/res/cardsfolder/g/gut_shot.txt +++ b/forge-gui/res/cardsfolder/g/gut_shot.txt @@ -1,6 +1,6 @@ Name:Gut Shot ManaCost:PR Types:Instant -A:SP$ DealDamage | Cost$ PR | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | AIPhyrexianPayment$ OnFatalDamage.1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:SP$ DealDamage | Cost$ PR | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | AIPhyrexianPayment$ OnFatalDamage.1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/gut_shot.jpg -Oracle:({P/R} can be paid with either {R} or 2 life.)\nGut Shot deals 1 damage to target creature or player. +Oracle:({P/R} can be paid with either {R} or 2 life.)\nGut Shot deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/g/gyrus_waker_of_corpses.txt b/forge-gui/res/cardsfolder/g/gyrus_waker_of_corpses.txt new file mode 100644 index 00000000000..d89eeaca118 --- /dev/null +++ b/forge-gui/res/cardsfolder/g/gyrus_waker_of_corpses.txt @@ -0,0 +1,14 @@ +Name:Gyrus, Waker of Corpses +ManaCost:X B R G +Types:Legendary Creature Hydra +PT:0/0 +K:etbCounter:P1P1:Y:no Condition:CARDNAME enters the battlefield with a number of +1/+1 counters on it equal to the amount of mana spent to cast it. +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigExile | TriggerZones$ Battlefield | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME attacks, you may exile target creature card with lesser power from your graveyard. If you do, create a token that's a copy of that card and that's tapped and attacking. Exile the token at the end of combat. +SVar:TrigExile:DB$ ChangeZone | ValidTgts$ Creature.YouCtrl+powerLTZ | Origin$ Graveyard | Destination$ Exile | TgtPrompt$ Select target creature card with lesser power in your graveyard | RememberChanged$ True | Optional$ True | SubAbility$ DBCopy | References$ Z +SVar:DBCopy:DB$ CopyPermanent | Defined$ Remembered | Tapped$ True | CopyAttacking$ True | AtEOT$ ExileCombat | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:Count$xPaid +SVar:Y:Count$FirstSpellTotalManaSpent +SVar:Z:Count$CardPower +SVar:HasAttackEffect:TRUE +Oracle:Gyrus, Walker of Corpses enters the battlefield with a number of +1/+1 counters on it equal to the amount of mana spent to cast it.\nWhenever Gyrus attacks, you may exile target creature card with lesser power from your graveyard. If you do, create a token that's a copy of that card and that's tapped and attacking. Exile the token at the end of combat. diff --git a/forge-gui/res/cardsfolder/h/haakon_stromgald_scourge_avatar.txt b/forge-gui/res/cardsfolder/h/haakon_stromgald_scourge_avatar.txt index 6a4d9503168..4cbbda95afa 100644 --- a/forge-gui/res/cardsfolder/h/haakon_stromgald_scourge_avatar.txt +++ b/forge-gui/res/cardsfolder/h/haakon_stromgald_scourge_avatar.txt @@ -5,7 +5,7 @@ HandLifeModifier:+0/-3 A:AB$ Effect | ActivationZone$ Command | Cost$ PayLife<1> | TgtZone$ Graveyard | ValidTgts$ Creature.YouOwn | PumpZone$ Graveyard | TgtPrompt$ Select target creature in your graveyard, you may play it this turn | RememberObjects$ Targeted | StaticAbilities$ Play | ExileOnMoved$ Graveyard | SpellDescription$ You may play target creature card in your graveyard this turn. SVar:Play:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Graveyard | Description$ You may play remembered card. T:Mode$ SpellCast | ValidCard$ Card.wasCastFromGraveyard | ValidControllingPlayer$ You | TriggerZones$ Command | Execute$ TrigAnimate | TriggerDescription$ Whenever you play a creature card from your graveyard, it becomes a black Zombie Knight. -SVar:TrigAnimate:DB$ Animate | Defined$ TriggeredCard | Types$ Zombie,Knight | Colors$ Black | OverwriteColors$ True | Permanent$ True | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True +SVar:TrigAnimate:DB$ Animate | Defined$ TriggeredCard | Types$ Zombie,Knight | Colors$ Black | OverwriteColors$ True | Permanent$ True | RemoveCreatureTypes$ True R:Event$ Moved | ValidCard$ Card.Zombie+Knight | Destination$ Graveyard | ReplaceWith$ DBExile | Description$ If a Zombie Knight would be put into your graveyard from the battlefield, exile it instead. SVar:DBExile:DB$ ChangeZone | Defined$ ReplacedCard | Origin$ Battlefield | Destination$ Exile SVar:Picture:https://downloads.cardforge.org/images/cards/VAN/Haakon, Stromgald Scourge Avatar.full.jpg diff --git a/forge-gui/res/cardsfolder/h/hallowed_healer.txt b/forge-gui/res/cardsfolder/h/hallowed_healer.txt index f23128f8ade..494320e5ebf 100644 --- a/forge-gui/res/cardsfolder/h/hallowed_healer.txt +++ b/forge-gui/res/cardsfolder/h/hallowed_healer.txt @@ -2,8 +2,8 @@ Name:Hallowed Healer ManaCost:2 W Types:Creature Human Cleric PT:1/1 -A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 2 | SpellDescription$ Prevent the next 2 damage that would be dealt to target creature or player this turn. -A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 4 | Activation$ Threshold | PrecostDesc$ Threshold — | SpellDescription$ Prevent the next 4 damage that would be dealt to target creature or player this turn. Activate this ability only if seven or more cards are in your graveyard. +A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 2 | SpellDescription$ Prevent the next 2 damage that would be dealt to any target this turn. +A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 4 | Activation$ Threshold | PrecostDesc$ Threshold — | SpellDescription$ Prevent the next 4 damage that would be dealt to any target this turn. Activate this ability only if seven or more cards are in your graveyard. SVar:NonCombatPriority:3 SVar:Picture:http://www.wizards.com/global/images/magic/general/hallowed_healer.jpg -Oracle:{T}: Prevent the next 2 damage that would be dealt to target creature or player this turn.\nThreshold — {T}: Prevent the next 4 damage that would be dealt to target creature or player this turn. Activate this ability only if seven or more cards are in your graveyard. +Oracle:{T}: Prevent the next 2 damage that would be dealt to any target this turn.\nThreshold — {T}: Prevent the next 4 damage that would be dealt to any target this turn. Activate this ability only if seven or more cards are in your graveyard. diff --git a/forge-gui/res/cardsfolder/h/hammer_of_bogardan.txt b/forge-gui/res/cardsfolder/h/hammer_of_bogardan.txt index e3849cfe1c5..25e4fc977e2 100644 --- a/forge-gui/res/cardsfolder/h/hammer_of_bogardan.txt +++ b/forge-gui/res/cardsfolder/h/hammer_of_bogardan.txt @@ -1,7 +1,7 @@ Name:Hammer of Bogardan ManaCost:1 R R Types:Sorcery -A:SP$ DealDamage | Cost$ 1 R R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. +A:SP$ DealDamage | Cost$ 1 R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. A:AB$ ChangeZone | Cost$ 2 R R R | Origin$ Graveyard | Destination$ Hand | ActivationZone$ Graveyard | ActivationPhases$ Upkeep | PlayerTurn$ True | SpellDescription$ Return CARDNAME from your graveyard to your hand. Activate this ability only during your upkeep. SVar:Picture:http://www.wizards.com/global/images/magic/general/hammer_of_bogardan.jpg -Oracle:Hammer of Bogardan deals 3 damage to target creature or player.\n{2}{R}{R}{R}: Return Hammer of Bogardan from your graveyard to your hand. Activate this ability only during your upkeep. +Oracle:Hammer of Bogardan deals 3 damage to any target.\n{2}{R}{R}{R}: Return Hammer of Bogardan from your graveyard to your hand. Activate this ability only during your upkeep. diff --git a/forge-gui/res/cardsfolder/h/hanabi_blast.txt b/forge-gui/res/cardsfolder/h/hanabi_blast.txt index 321ba2708f9..b441d22e1dc 100644 --- a/forge-gui/res/cardsfolder/h/hanabi_blast.txt +++ b/forge-gui/res/cardsfolder/h/hanabi_blast.txt @@ -1,8 +1,8 @@ Name:Hanabi Blast ManaCost:1 R R Types:Instant -A:SP$ DealDamage | Cost$ 1 R R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SubAbility$ DBBounce | SpellDescription$ CARDNAME deals 2 damage to target creature or player. Return CARDNAME to its owner's hand, then discard a card at random. +A:SP$ DealDamage | Cost$ 1 R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SubAbility$ DBBounce | SpellDescription$ CARDNAME deals 2 damage to any target. Return CARDNAME to its owner's hand, then discard a card at random. SVar:DBBounce:DB$ ChangeZone | Origin$ Stack | Destination$ Hand | SubAbility$ DBDiscard SVar:DBDiscard:DB$ Discard | Defined$ You | Mode$ Random | NumCards$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/hanabi_blast.jpg -Oracle:Hanabi Blast deals 2 damage to target creature or player. Return Hanabi Blast to its owner's hand, then discard a card at random. +Oracle:Hanabi Blast deals 2 damage to any target. Return Hanabi Blast to its owner's hand, then discard a card at random. diff --git a/forge-gui/res/cardsfolder/h/hand_of_cruelty.txt b/forge-gui/res/cardsfolder/h/hand_of_cruelty.txt index d1ff01a0442..407ba0015d0 100644 --- a/forge-gui/res/cardsfolder/h/hand_of_cruelty.txt +++ b/forge-gui/res/cardsfolder/h/hand_of_cruelty.txt @@ -3,6 +3,6 @@ ManaCost:B B Types:Creature Human Samurai PT:2/2 K:Protection from white -K:Bushido 1 +K:Bushido:1 SVar:Picture:http://resources.wizards.com/magic/cards/sok/en-us/card74063.jpg Oracle:Protection from white\nBushido 1 (When this blocks or becomes blocked, it gets +1/+1 until end of turn.) diff --git a/forge-gui/res/cardsfolder/h/hand_of_honor.txt b/forge-gui/res/cardsfolder/h/hand_of_honor.txt index 23a3b112d4a..2b7e48da7a0 100644 --- a/forge-gui/res/cardsfolder/h/hand_of_honor.txt +++ b/forge-gui/res/cardsfolder/h/hand_of_honor.txt @@ -3,6 +3,6 @@ ManaCost:W W Types:Creature Human Samurai PT:2/2 K:Protection from black -K:Bushido 1 +K:Bushido:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/hand_of_honor.jpg Oracle:Protection from black\nBushido 1 (When this blocks or becomes blocked, it gets +1/+1 until end of turn.) diff --git a/forge-gui/res/cardsfolder/h/hankyu.txt b/forge-gui/res/cardsfolder/h/hankyu.txt index 27ec4d0241d..031ef4be64a 100644 --- a/forge-gui/res/cardsfolder/h/hankyu.txt +++ b/forge-gui/res/cardsfolder/h/hankyu.txt @@ -2,7 +2,7 @@ Name:Hankyu ManaCost:1 Types:Artifact Equipment K:Equip:4 -S:Mode$ Continuous | Affected$ Card.EquippedBy | AddAbility$ HankyuPutCounter & HankyuDmg | AddSVar$ HankyuX | Description$ Equipped creature has "{T}: Put an aim counter on CARDNAME" and "{T}, Remove all aim counters from CARDNAME: This creature deals damage to target creature or player equal to the number of aim counters removed this way." +S:Mode$ Continuous | Affected$ Card.EquippedBy | AddAbility$ HankyuPutCounter & HankyuDmg | AddSVar$ HankyuX | Description$ Equipped creature has "{T}: Put an aim counter on CARDNAME" and "{T}, Remove all aim counters from CARDNAME: This creature deals damage to any target equal to the number of aim counters removed this way." SVar:HankyuPutCounter:AB$ PutCounter | Cost$ T | CounterType$ AIM | CounterNum$ 1 | Defined$ OriginalHost | SpellDescription$ Put an aim counter on Hankyu. SVar:HankyuDmg:AB$ DealDamage | Cost$ T SubCounter | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ HankyuX | References$ HankyuX | SpellDescription$ CARDNAME deals damage to any target equal to the number of aim counters removed this way. SVar:HankyuX:SVar$CostCountersRemoved diff --git a/forge-gui/res/cardsfolder/h/hapatra_vizier_of_poisons.txt b/forge-gui/res/cardsfolder/h/hapatra_vizier_of_poisons.txt index 74a0f9befe4..bf8ef1713bd 100644 --- a/forge-gui/res/cardsfolder/h/hapatra_vizier_of_poisons.txt +++ b/forge-gui/res/cardsfolder/h/hapatra_vizier_of_poisons.txt @@ -4,7 +4,7 @@ Types:Legendary Creature Human Cleric PT:2/2 T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Opponent | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigPutCounter | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may put a -1/-1 counter on target creature. SVar:TrigPutCounter:DB$ PutCounter | ValidTgts$ Creature | TgtPrompt$ Select target creature | CounterType$ M1M1 | CounterNum$ 1 | IsCurse$ True -T:Mode$ CounterAddedOnce | ValidCard$ Creature | ValidSource$ Card.YouCtrl | CounterType$ M1M1 | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Whenever you put one or more -1/-1 counters on a creature, create a 1/1 green Snake creature token with deathtouch. +T:Mode$ CounterAddedOnce | ValidCard$ Creature | ValidSource$ You | CounterType$ M1M1 | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Whenever you put one or more -1/-1 counters on a creature, create a 1/1 green Snake creature token with deathtouch. SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenName$ Snake | TokenTypes$ Creature,Snake | TokenOwner$ You | TokenColors$ Green | TokenPower$ 1 | TokenToughness$ 1 | TokenKeywords$ Deathtouch | TokenImage$ g 1 1 snake AKH DeckHas:Ability$Counters & Ability$Token Oracle:Whenever Hapatra, Vizier of Poisons deals combat damage to a player, you may put a -1/-1 counter on target creature.\nWhenever you put one or more -1/-1 counters on a creature, create a 1/1 green Snake creature token with deathtouch. diff --git a/forge-gui/res/cardsfolder/h/hardened_scale_armor.txt b/forge-gui/res/cardsfolder/h/hardened_scale_armor.txt new file mode 100644 index 00000000000..71997070001 --- /dev/null +++ b/forge-gui/res/cardsfolder/h/hardened_scale_armor.txt @@ -0,0 +1,7 @@ +Name:Hardened-Scale Armor +ManaCost:2 G +Types:Enchantment Aura +K:Enchant creature +S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 3 | AddToughness$ 3 | Description$ Enchanted creature gets +3/+3. +A:SP$ Attach | Cost$ 2 G | ValidTgts$ Creature | AILogic$ Pump +Oracle:Enchant creature\nEnchanted creature gets +3/+3. diff --git a/forge-gui/res/cardsfolder/h/harsh_sustenance.txt b/forge-gui/res/cardsfolder/h/harsh_sustenance.txt index 3267c623ad7..295f77778b1 100644 --- a/forge-gui/res/cardsfolder/h/harsh_sustenance.txt +++ b/forge-gui/res/cardsfolder/h/harsh_sustenance.txt @@ -1,8 +1,8 @@ Name:Harsh Sustenance ManaCost:1 W B Types:Instant -A:SP$ DealDamage | Cost$ 1 W B | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals X damage to target creature or player and you gain X life, where X is the number of creatures you control. +A:SP$ DealDamage | Cost$ 1 W B | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals X damage to any target and you gain X life, where X is the number of creatures you control. SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ X | References$ X SVar:X:Count$Valid Creature.YouCtrl SVar:Picture:http://www.wizards.com/global/images/magic/general/harsh_sustenance.jpg -Oracle:Harsh Sustenance deals X damage to target creature or player and you gain X life, where X is the number of creatures you control. +Oracle:Harsh Sustenance deals X damage to any target and you gain X life, where X is the number of creatures you control. diff --git a/forge-gui/res/cardsfolder/h/hatchet_bully.txt b/forge-gui/res/cardsfolder/h/hatchet_bully.txt index afb92c24692..495283b54b2 100644 --- a/forge-gui/res/cardsfolder/h/hatchet_bully.txt +++ b/forge-gui/res/cardsfolder/h/hatchet_bully.txt @@ -2,7 +2,7 @@ Name:Hatchet Bully ManaCost:3 R Types:Creature Goblin Warrior PT:3/3 -A:AB$ PutCounter | Cost$ 2 R T | CounterType$ M1M1 | CounterNum$ 1 | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | SubAbility$ DBDamage | SpellDescription$ Put a -1/-1 counter on a creature you control: CARDNAME deals 2 damage to target creature or player. -SVar:DBDamage:DB$DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 +A:AB$ PutCounter | Cost$ 2 R T | CounterType$ M1M1 | CounterNum$ 1 | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | SubAbility$ DBDamage | SpellDescription$ Put a -1/-1 counter on a creature you control: CARDNAME deals 2 damage to any target. +SVar:DBDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 SVar:Picture:http://www.wizards.com/global/images/magic/general/hatchet_bully.jpg -Oracle:{2}{R}, {T}, Put a -1/-1 counter on a creature you control: Hatchet Bully deals 2 damage to target creature or player. +Oracle:{2}{R}, {T}, Put a -1/-1 counter on a creature you control: Hatchet Bully deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/h/hateflayer.txt b/forge-gui/res/cardsfolder/h/hateflayer.txt index d7ddb8d91f3..f8b1b807236 100644 --- a/forge-gui/res/cardsfolder/h/hateflayer.txt +++ b/forge-gui/res/cardsfolder/h/hateflayer.txt @@ -3,7 +3,7 @@ ManaCost:5 R R Types:Creature Elemental PT:5/5 K:Wither -A:AB$ DealDamage | Cost$ 2 R Untap | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to its power to target creature or player. +A:AB$ DealDamage | Cost$ 2 R Untap | ValidTgts$ Creature,Player | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to its power to any target. SVar:X:Count$CardPower SVar:Picture:http://www.wizards.com/global/images/magic/general/hateflayer.jpg -Oracle:Wither (This deals damage to creatures in the form of -1/-1 counters.)\n{2}{R}, {Q}: Hateflayer deals damage equal to its power to target creature or player. ({Q} is the untap symbol.) +Oracle:Wither (This deals damage to creatures in the form of -1/-1 counters.)\n{2}{R}, {Q}: Hateflayer deals damage equal to its power to any target. ({Q} is the untap symbol.) diff --git a/forge-gui/res/cardsfolder/h/haunting_misery.txt b/forge-gui/res/cardsfolder/h/haunting_misery.txt index efa5ca1633c..6a25278974d 100644 --- a/forge-gui/res/cardsfolder/h/haunting_misery.txt +++ b/forge-gui/res/cardsfolder/h/haunting_misery.txt @@ -1,9 +1,9 @@ Name:Haunting Misery ManaCost:1 B B Types:Sorcery -A:SP$ DealDamage | Cost$ 1 B B ExileFromGrave | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ ChosenX | References$ X | SpellDescription$ CARDNAME deals X damage to target player. +A:SP$ DealDamage | Cost$ 1 B B ExileFromGrave | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ ChosenX | References$ X | SpellDescription$ CARDNAME deals X damage to target player or planeswalker. SVar:X:XChoice #ChosenX SVar created by Cost payment SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/haunting_misery.jpg -Oracle:As an additional cost to cast Haunting Misery, exile X creature cards from your graveyard.\nHaunting Misery deals X damage to target player. +Oracle:As an additional cost to cast Haunting Misery, exile X creature cards from your graveyard.\nHaunting Misery deals X damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/h/havoc_devils.txt b/forge-gui/res/cardsfolder/h/havoc_devils.txt new file mode 100644 index 00000000000..d062c93f276 --- /dev/null +++ b/forge-gui/res/cardsfolder/h/havoc_devils.txt @@ -0,0 +1,6 @@ +Name:Havoc Devils +ManaCost:2 R R +Types:Creature Devil +PT:4/3 +K:Trample +Oracle:Trample diff --git a/forge-gui/res/cardsfolder/h/heal.txt b/forge-gui/res/cardsfolder/h/heal.txt index e15a9a70adb..eda631802db 100644 --- a/forge-gui/res/cardsfolder/h/heal.txt +++ b/forge-gui/res/cardsfolder/h/heal.txt @@ -1,8 +1,8 @@ Name:Heal ManaCost:W Types:Instant -A:SP$ PreventDamage | Cost$ W | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 1 | SubAbility$ DelTrigSlowtrip | SpellDescription$ Prevent the next 1 damage that would be dealt to target creature or player this turn. Draw a card at the beginning of the next turn's upkeep. +A:SP$ PreventDamage | Cost$ W | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 1 | SubAbility$ DelTrigSlowtrip | SpellDescription$ Prevent the next 1 damage that would be dealt to any target this turn. Draw a card at the beginning of the next turn's upkeep. SVar:DelTrigSlowtrip:DB$ DelayedTrigger | Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Player | Execute$ DrawSlowtrip | TriggerDescription$ Draw a card. SVar:DrawSlowtrip:DB$Draw | NumCards$ 1 | Defined$ You SVar:Picture:http://www.wizards.com/global/images/magic/general/heal.jpg -Oracle:Prevent the next 1 damage that would be dealt to target creature or player this turn.\nDraw a card at the beginning of the next turn's upkeep. +Oracle:Prevent the next 1 damage that would be dealt to any target this turn.\nDraw a card at the beginning of the next turn's upkeep. diff --git a/forge-gui/res/cardsfolder/h/healing_grace.txt b/forge-gui/res/cardsfolder/h/healing_grace.txt index 0e641d6024a..c5b33bd80e2 100644 --- a/forge-gui/res/cardsfolder/h/healing_grace.txt +++ b/forge-gui/res/cardsfolder/h/healing_grace.txt @@ -2,7 +2,7 @@ Name:Healing Grace ManaCost:W Types:Instant A:SP$ ChooseSource | Cost$ W | Choices$ Card,Emblem | SubAbility$ DBEffect | StackDescription$ SpellDescription | SpellDescription$ Prevent the next 3 damage that would be dealt to any target this turn by a source of your choice. You gain 3 life. -SVar:DBEffect:DB$ Effect | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select target to prevent damage to | ReplacementEffects$ GraceDamage | SVars$ GraceDmg,X | References$ GraceDamage,GraceDmg,X | ForgetOnMoved$ Battlefield | RememberObjects$ Targeted | SubAbility$ DBGainLife +SVar:DBEffect:DB$ Effect | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to prevent damage to | ReplacementEffects$ GraceDamage | SVars$ GraceDmg,X | References$ GraceDamage,GraceDmg,X | ForgetOnMoved$ Battlefield | RememberObjects$ Targeted | SubAbility$ DBGainLife SVar:GraceDamage:Event$ DamageDone | ValidTarget$ Creature.IsRemembered,Player.IsRemembered | ValidSource$ Card.ChosenCard,Emblem.ChosenCard | ReplaceWith$ GraceDmg | PreventionEffect$ True | Description$ Prevent the next 3 damage that would be dealt to any target this turn by a source of your choice. SVar:GraceDmg:DB$ ReplaceDamage | VarName$ X | References$ X SVar:DBGainLife:DB$ GainLife | LifeAmount$ 3 | SubAbility$ DBCleanup diff --git a/forge-gui/res/cardsfolder/h/healing_leaves.txt b/forge-gui/res/cardsfolder/h/healing_leaves.txt index 667f259e5d2..f04eb8c316a 100644 --- a/forge-gui/res/cardsfolder/h/healing_leaves.txt +++ b/forge-gui/res/cardsfolder/h/healing_leaves.txt @@ -3,6 +3,6 @@ ManaCost:G Types:Instant A:SP$ Charm | Cost$ G | Choices$ DBGainLife,DBPreventDmg | CharmNum$ 1 SVar:DBGainLife:DB$ GainLife | ValidTgts$ Player | TgtPrompt$ Select target player | LifeAmount$ 3 | SpellDescription$ Target player gains 3 life. -SVar:DBPreventDmg:DB$ PreventDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 3 | SpellDescription$ Prevent the next 3 damage that would be dealt to target creature or player this turn. +SVar:DBPreventDmg:DB$ PreventDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 3 | SpellDescription$ Prevent the next 3 damage that would be dealt to any target this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/healing_leaves.jpg -Oracle:Choose one —\n• Target player gains 3 life.\n• Prevent the next 3 damage that would be dealt to target creature or player this turn. +Oracle:Choose one —\n• Target player gains 3 life.\n• Prevent the next 3 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/h/healing_salve.txt b/forge-gui/res/cardsfolder/h/healing_salve.txt index ecae5f6a132..60ff080c32b 100644 --- a/forge-gui/res/cardsfolder/h/healing_salve.txt +++ b/forge-gui/res/cardsfolder/h/healing_salve.txt @@ -3,6 +3,6 @@ ManaCost:W Types:Instant A:SP$ Charm | Cost$ W | Choices$ DBGainLife,DBPreventDmg | CharmNum$ 1 SVar:DBGainLife:DB$ GainLife | ValidTgts$ Player | TgtPrompt$ Select target player | LifeAmount$ 3 | SpellDescription$ Target player gains 3 life. -SVar:DBPreventDmg:DB$ PreventDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 3 | SpellDescription$ Prevent the next 3 damage that would be dealt to target creature or player this turn. +SVar:DBPreventDmg:DB$ PreventDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 3 | SpellDescription$ Prevent the next 3 damage that would be dealt to any target this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/healing_salve.jpg -Oracle:Choose one —\n• Target player gains 3 life.\n• Prevent the next 3 damage that would be dealt to target creature or player this turn. +Oracle:Choose one —\n• Target player gains 3 life.\n• Prevent the next 3 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/h/heart_of_bogardan.txt b/forge-gui/res/cardsfolder/h/heart_of_bogardan.txt index 46a5c90b2c8..f8d7a2962e2 100644 --- a/forge-gui/res/cardsfolder/h/heart_of_bogardan.txt +++ b/forge-gui/res/cardsfolder/h/heart_of_bogardan.txt @@ -2,9 +2,11 @@ Name:Heart of Bogardan ManaCost:2 R R Types:Enchantment K:Cumulative upkeep:2 -T:Mode$ PayCumulativeUpkeep | ValidCard$ Card.Self | Paid$ False | Execute$ TrigDmg | TriggerDescription$ When a player doesn't pay CARDNAME's cumulative upkeep, CARDNAME deals X damage to target player and each creature they control, where X is twice the number of age counters on CARDNAME minus 2. -SVar:TrigDmg:DB$ DamageAll | NumDmg$ Y | ValidTgts$ Player | TgtPrompt$ Select a player | ValidCards$ Creature | ValidPlayers$ Targeted | ValidDescription$ target player and each creature they control. | References$ X,Y | SpellDescription$ CARDNAME deals X damage to target player and each creature they control. +T:Mode$ PayCumulativeUpkeep | ValidCard$ Card.Self | Paid$ False | Execute$ TrigDmg | TriggerDescription$ When a player doesn't pay CARDNAME's cumulative upkeep, CARDNAME deals X damage to target player or planeswalker and each creature that player or planeswalker's controller controls, where X is twice the number of age counters on CARDNAME minus 2. +SVar:TrigDmg:DB$ DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select a player or planeswalker | NumDmg$ Y | References$ X,Y | SubAbility$ DmgAll | DamageMap$ True | SpellDescription$ CARDNAME deals X damage to target player or planeswalker and each creature that player or planeswalker's controller controls. +SVar:DmgAll:DB$ DamageAll | NumDmg$ Y | References$ X,Y | ValidCards$ Creature.ControlledBy TargetedOrController | SubAbility$ DBDamageResolve +SVar:DBDamageResolve:DB$ DamageResolve SVar:X:TriggeredCard$CardCounters.AGE/Twice SVar:Y:SVar$X/Minus.2 SVar:Picture:http://www.wizards.com/global/images/magic/general/heart_of_bogardan.jpg -Oracle:Cumulative upkeep {2} (At the beginning of your upkeep, put an age counter on this permanent, then sacrifice it unless you pay its upkeep cost for each age counter on it.)\nWhen a player doesn't pay Heart of Bogardan's cumulative upkeep, Heart of Bogardan deals X damage to target player and each creature they control, where X is twice the number of age counters on Heart of Bogardan minus 2. +Oracle:Cumulative upkeep {2} (At the beginning of your upkeep, put an age counter on this permanent, then sacrifice it unless you pay its upkeep cost for each age counter on it.)\nWhen a player doesn't pay Heart of Bogardan's cumulative upkeep, Heart of Bogardan deals X damage to target player or planeswalker and each creature that player or planeswalker's controller controls, where X is twice the number of age counters on Heart of Bogardan minus 2. diff --git a/forge-gui/res/cardsfolder/h/heart_of_kiran.txt b/forge-gui/res/cardsfolder/h/heart_of_kiran.txt index f08ab5c52d1..c07727abead 100644 --- a/forge-gui/res/cardsfolder/h/heart_of_kiran.txt +++ b/forge-gui/res/cardsfolder/h/heart_of_kiran.txt @@ -6,6 +6,6 @@ K:Flying K:Vigilance K:Crew:3 S:Mode$ Continuous | Affected$ Card.Self | AddAbility$ KiranAnimate | Description$ You may remove a loyalty counter from a planeswalker you control rather than pay CARDNAME's crew cost. -SVar:KiranAnimate:AB$ Animate | Cost$ SubCounter<1/LOYALTY/Planeswalker.YouCtrl/Planeswalker you Control> | Crew$ True | Secondary$ True | CostDesc$ | Defined$ Self | Types$ Creature,Artifact | OverwriteTypes$ True | KeepSubtypes$ True | KeepSupertypes$ True | SpellDescription$ You may remove a loyalty counter from a planeswalker you control rather than pay Heart of Kiran's crew cost. +SVar:KiranAnimate:AB$ Animate | Cost$ SubCounter<1/LOYALTY/Planeswalker.YouCtrl/Planeswalker you Control> | Crew$ True | Secondary$ True | CostDesc$ | Defined$ Self | Types$ Creature,Artifact | RemoveCardTypes$ True | SpellDescription$ You may remove a loyalty counter from a planeswalker you control rather than pay Heart of Kiran's crew cost. SVar:Picture:http://www.wizards.com/global/images/magic/general/heart_of_kiran.jpg Oracle:Flying, vigilance\nCrew 3 (Tap any number of creatures you control with total power 3 or more: This Vehicle becomes an artifact creature until end of turn.)\nYou may remove a loyalty counter from a planeswalker you control rather than pay Heart of Kiran's crew cost. diff --git a/forge-gui/res/cardsfolder/h/heart_piercer_manticore.txt b/forge-gui/res/cardsfolder/h/heart_piercer_manticore.txt index 4d7d7004524..8ff3e76d209 100644 --- a/forge-gui/res/cardsfolder/h/heart_piercer_manticore.txt +++ b/forge-gui/res/cardsfolder/h/heart_piercer_manticore.txt @@ -4,11 +4,11 @@ Types:Creature Manticore PT:4/3 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigSacrifice | TriggerDescription$ When CARDNAME enters the battlefield, you may sacrifice another creature. When you do, CARDNAME deals damage equal to that creature's power to target creature or player. SVar:TrigSacrifice:DB$ Sacrifice | Optional$ True | SacrificeParam$ HeartPiercer | SacValid$ Creature.Other | SacMessage$ another Creature | Amount$ 1 | AILogic$ ConsiderSac -T:Mode$ Sacrificed | ValidPlayer$ You | ValidCard$ Creature.Other | CauseParam$ HeartPiercer | Execute$ TrigDamage | Secondary$ True | TriggerDescription$ CARDNAME deals damage equal to that creature's power to target creature or player. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ XPower | References$ XPower +T:Mode$ Sacrificed | ValidPlayer$ You | ValidCard$ Creature.Other | CauseParam$ HeartPiercer | Execute$ TrigDamage | Secondary$ True | TriggerDescription$ CARDNAME deals damage equal to that creature's power to any target. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ XPower | References$ XPower K:Embalm:5 R SVar:XPower:TriggeredCard$CardPower SVar:AIPreferenceParams:CreatureEvalThreshold$ 200 SVar:DeckHas:Ability$Token SVar:Picture:http://www.wizards.com/global/images/magic/general/heart_piercer_manticore.jpg -Oracle:When Heart-Piercer Manticore enters the battlefield, you may sacrifice another creature. When you do, Heart-Piercer Manticore deals damage equal to that creature's power to target creature or player.\nEmbalm {5} {R} ({5} {R}, Exile this card from your graveyard: Create a token that's a copy of it, except it's a white Zombie Manticore with no mana cost. Embalm only as a sorcery.) +Oracle:When Heart-Piercer Manticore enters the battlefield, you may sacrifice another creature. When you do, Heart-Piercer Manticore deals damage equal to that creature's power to any target.\nEmbalm {5} {R} ({5} {R}, Exile this card from your graveyard: Create a token that's a copy of it, except it's a white Zombie Manticore with no mana cost. Embalm only as a sorcery.) diff --git a/forge-gui/res/cardsfolder/h/heartwood_giant.txt b/forge-gui/res/cardsfolder/h/heartwood_giant.txt index f01307d3506..c011572582f 100644 --- a/forge-gui/res/cardsfolder/h/heartwood_giant.txt +++ b/forge-gui/res/cardsfolder/h/heartwood_giant.txt @@ -2,6 +2,6 @@ Name:Heartwood Giant ManaCost:3 G G Types:Creature Giant PT:4/4 -A:AB$ DealDamage | Cost$ T Sac<1/Forest> | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target player. +A:AB$ DealDamage | Cost$ T Sac<1/Forest> | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target player or planeswalker. SVar:Picture:http://www.wizards.com/global/images/magic/general/heartwood_giant.jpg -Oracle:{T}, Sacrifice a Forest: Heartwood Giant deals 2 damage to target player. +Oracle:{T}, Sacrifice a Forest: Heartwood Giant deals 2 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/h/heavenly_blademaster.txt b/forge-gui/res/cardsfolder/h/heavenly_blademaster.txt new file mode 100644 index 00000000000..2db796ffe20 --- /dev/null +++ b/forge-gui/res/cardsfolder/h/heavenly_blademaster.txt @@ -0,0 +1,15 @@ +Name:Heavenly Blademaster +ManaCost:5 W +Types:Creature Angel +PT:3/6 +K:Flying +K:Double Strike +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ DBAttach | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters the battlefield, you may attach any number of Auras and Equipment you control to it. +SVar:DBAttach:DB$ RepeatEach | RepeatSubAbility$ DBRepeatAttach | RepeatCards$ Aura.YouCtrl,Equipment.YouCtrl +SVar:DBRepeatAttach:DB$ Attach | Object$ Remembered | Optional$ True | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:RemRandomDeck:True +S:Mode$ Continuous | Affected$ Creature.Other+YouCtrl | AddPower$ X | AddToughness$ X | References$ X | Description$ Other creatures you control get +1/+1 for each Aura and Equipment attached to CARDNAME. +SVar:X:Count$Valid Equipment.Attached,Aura.Attached +SVar:EnchantMe:Multiple +Oracle:Flying, double strike\nWhen Heavenly Blademaster enters the battlefield, you may attach any number of Auras and Equipment you control to it.\nOther creatures you control get +1/+1 for each Aura and Equipment attached to Heavenly Blademaster. diff --git a/forge-gui/res/cardsfolder/h/heavenly_qilin.txt b/forge-gui/res/cardsfolder/h/heavenly_qilin.txt new file mode 100644 index 00000000000..884aa60981e --- /dev/null +++ b/forge-gui/res/cardsfolder/h/heavenly_qilin.txt @@ -0,0 +1,8 @@ +Name:Heavenly Qilin +ManaCost:2 W +Types:Creature Kirin +K:Flying +T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever CARDNAME attacks, another target creature you control gains flying until end of turn. +SVar:TrigPump:DB$ Pump | ValidTgts$ Creature.YouCtrl+Other | TgtPrompt$ Select another target creature you control | KW$ Flying +Oracle:Flying (This creature can't be blocked except by creatures with flying or reach.)\nWhenever Heavenly Qilin attacks, another target creature you control gains flying until end of turn. +PT:2/2 diff --git a/forge-gui/res/cardsfolder/h/hecatomb.txt b/forge-gui/res/cardsfolder/h/hecatomb.txt index 028a61ac35e..cf4995c7e40 100644 --- a/forge-gui/res/cardsfolder/h/hecatomb.txt +++ b/forge-gui/res/cardsfolder/h/hecatomb.txt @@ -6,10 +6,10 @@ SVar:TrigSac:DB$ Sacrifice | Amount$ 4 | SacValid$ Creature | RememberSacrificed SVar:DBSacSelf:DB$ Sacrifice | Defined$ Self | SubAbility$ DBCleanup | ConditionCheckSVar$ X | ConditionSVarCompare$ LT4 SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Remembered$Amount -A:AB$ DealDamage | Cost$ tapXType<1/Swamp> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ tapXType<1/Swamp> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:RemAIDeck:True SVar:NonStackingEffect:True SVar:NeedsToPlayVar:Creats GE4 SVar:Creats:Count$Valid Creature.YouCtrl SVar:Picture:http://www.wizards.com/global/images/magic/general/hecatomb.jpg -Oracle:When Hecatomb enters the battlefield, sacrifice Hecatomb unless you sacrifice four creatures.\nTap an untapped Swamp you control: Hecatomb deals 1 damage to target creature or player. +Oracle:When Hecatomb enters the battlefield, sacrifice Hecatomb unless you sacrifice four creatures.\nTap an untapped Swamp you control: Hecatomb deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/h/heliophial.txt b/forge-gui/res/cardsfolder/h/heliophial.txt index 0fdedd78265..03453997b42 100644 --- a/forge-gui/res/cardsfolder/h/heliophial.txt +++ b/forge-gui/res/cardsfolder/h/heliophial.txt @@ -1,11 +1,11 @@ Name:Heliophial ManaCost:5 Types:Artifact -A:AB$ DealDamage | Cost$ 2 Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to the number of charge counters on it to target creature or player. +A:AB$ DealDamage | Cost$ 2 Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to the number of charge counters on it to any target. K:Sunburst SVar:X:Count$CardCounters.CHARGE SVar:NeedsToPlayVar:Z GE1 SVar:Z:Count$UniqueManaColorsProduced.ByUntappedSources DeckHints:Ability$Proliferate SVar:Picture:http://www.wizards.com/global/images/magic/general/heliophial.jpg -Oracle:Sunburst (This enters the battlefield with a charge counter on it for each color of mana spent to cast it.)\n{2}, Sacrifice Heliophial: Heliophial deals damage equal to the number of charge counters on it to target creature or player. +Oracle:Sunburst (This enters the battlefield with a charge counter on it for each color of mana spent to cast it.)\n{2}, Sacrifice Heliophial: Heliophial deals damage equal to the number of charge counters on it to any target. diff --git a/forge-gui/res/cardsfolder/h/hellhole_flailer.txt b/forge-gui/res/cardsfolder/h/hellhole_flailer.txt index 8fe641940e4..8f20bed406c 100644 --- a/forge-gui/res/cardsfolder/h/hellhole_flailer.txt +++ b/forge-gui/res/cardsfolder/h/hellhole_flailer.txt @@ -3,7 +3,7 @@ ManaCost:1 B R Types:Creature Ogre Warrior PT:3/2 K:Unleash -A:AB$ DealDamage | Cost$ 2 B R Sac<1/CARDNAME> | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to its power to target player. +A:AB$ DealDamage | Cost$ 2 B R Sac<1/CARDNAME> | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to its power to target player or planeswalker. SVar:X:Sacrificed$CardPower SVar:Picture:http://www.wizards.com/global/images/magic/general/hellhole_flailer.jpg -Oracle:Unleash (You may have this creature enter the battlefield with a +1/+1 counter on it. It can't block as long as it has a +1/+1 counter on it.)\n{2}{B}{R}, Sacrifice Hellhole Flailer: Hellhole Flailer deals damage equal to its power to target player. +Oracle:Unleash (You may have this creature enter the battlefield with a +1/+1 counter on it. It can't block as long as it has a +1/+1 counter on it.)\n{2}{B}{R}, Sacrifice Hellhole Flailer: Hellhole Flailer deals damage equal to its power to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/h/helm_of_the_host.txt b/forge-gui/res/cardsfolder/h/helm_of_the_host.txt index b4bfcde0f91..79a4f5f1b1e 100644 --- a/forge-gui/res/cardsfolder/h/helm_of_the_host.txt +++ b/forge-gui/res/cardsfolder/h/helm_of_the_host.txt @@ -3,7 +3,7 @@ ManaCost:4 Types:Legendary Artifact Equipment K:Equip:5 T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | Execute$ TrigCopy | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of combat on your turn, create a token that's a copy of equipped creature, except the token isn't legendary if equipped creature is legendary. That token gains haste. -SVar:TrigCopy:DB$ CopyPermanent | Defined$ Equipped | Keywords$ Haste | NonLegendary$ True +SVar:TrigCopy:DB$ CopyPermanent | Defined$ Equipped | Keywords$ Haste | NonLegendary$ True | ResetAbilityActivations$ True DeckHas:Ability$Token SVar:Picture:http://www.wizards.com/global/images/magic/general/helm_of_the_host.jpg Oracle:At the beginning of combat on your turn, create a token that's a copy of equipped creature, except the token isn't legendary if equipped creature is legendary. That token gains haste.\nEquip {5} diff --git a/forge-gui/res/cardsfolder/h/herald_of_faith.txt b/forge-gui/res/cardsfolder/h/herald_of_faith.txt new file mode 100644 index 00000000000..b2abe4d2d96 --- /dev/null +++ b/forge-gui/res/cardsfolder/h/herald_of_faith.txt @@ -0,0 +1,9 @@ +Name:Herald of Faith +ManaCost:3 W W +Types:Creature Angel +K:Flying +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigGainLife | TriggerDescription$ Whenever CARDNAME attacks, you gain 2 life. +SVar:TrigGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 2 +DeckHas:Ability$LifeGain +Oracle:Flying\nWhenever Herald of Faith attacks, you gain 2 life. +PT:4/3 diff --git a/forge-gui/res/cardsfolder/h/heretics_punishment.txt b/forge-gui/res/cardsfolder/h/heretics_punishment.txt index 188b7d46ea1..8a84e504622 100644 --- a/forge-gui/res/cardsfolder/h/heretics_punishment.txt +++ b/forge-gui/res/cardsfolder/h/heretics_punishment.txt @@ -1,11 +1,11 @@ Name:Heretic's Punishment ManaCost:4 R Types:Enchantment -A:AB$ Mill | Cost$ 3 R | NumCards$ 3 | RememberMilled$ True | SubAbility$ DBHereticDamage | SpellDescription$ Choose target creature or player, then put the top three cards of your library into your graveyard. CARDNAME deals damage to that creature or player equal to the highest converted mana cost among those cards. -SVar:DBHereticDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ HereticX | SubAbility$ DBHereticCleanup | References$ HereticX +A:AB$ Mill | Cost$ 3 R | NumCards$ 3 | RememberMilled$ True | SubAbility$ DBHereticDamage | SpellDescription$ Choose any target, then put the top three cards of your library into your graveyard. CARDNAME deals damage to that permanent or player equal to the highest converted mana cost among those cards. +SVar:DBHereticDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ HereticX | SubAbility$ DBHereticCleanup | References$ HereticX SVar:DBHereticCleanup:DB$ Cleanup | ClearRemembered$ True SVar:HereticX:Count$HighestCMC_Card.IsRemembered SVar:RemAIDeck:True SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/heretics_punishment.jpg -Oracle:{3}{R}: Choose target creature or player, then put the top three cards of your library into your graveyard. Heretic's Punishment deals damage to that creature or player equal to the highest converted mana cost among those cards. +Oracle:{3}{R}: Choose any target, then put the top three cards of your library into your graveyard. Heretic's Punishment deals damage to that permanent or player equal to the highest converted mana cost among those cards. diff --git a/forge-gui/res/cardsfolder/h/hermetic_study.txt b/forge-gui/res/cardsfolder/h/hermetic_study.txt index 7b64d9475f7..a1dbaf8b3af 100644 --- a/forge-gui/res/cardsfolder/h/hermetic_study.txt +++ b/forge-gui/res/cardsfolder/h/hermetic_study.txt @@ -3,8 +3,8 @@ ManaCost:1 U Types:Enchantment Aura K:Enchant creature A:SP$ Attach | Cost$ 1 U | ValidTgts$ Creature | AILogic$ Pump -S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddAbility$ Damage | Description$ Enchanted creature has "{T}: This creature deals 1 damage to target creature or player." -SVar:Damage:AB$DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddAbility$ Damage | Description$ Enchanted creature has "{T}: This creature deals 1 damage to any target." +SVar:Damage:AB$DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:NonStackingAttachEffect:True SVar:Picture:http://www.wizards.com/global/images/magic/general/hermetic_study.jpg -Oracle:Enchant creature\nEnchanted creature has "{T}: This creature deals 1 damage to target creature or player." +Oracle:Enchant creature\nEnchanted creature has "{T}: This creature deals 1 damage to any target." diff --git a/forge-gui/res/cardsfolder/h/heroic_reinforcements.txt b/forge-gui/res/cardsfolder/h/heroic_reinforcements.txt new file mode 100644 index 00000000000..41f4c62f520 --- /dev/null +++ b/forge-gui/res/cardsfolder/h/heroic_reinforcements.txt @@ -0,0 +1,8 @@ +Name:Heroic Reinforcements +ManaCost:2 R W +Types:Sorcery +A:SP$ Token | Cost$ 2 R W | TokenAmount$ 2 | TokenName$ Soldier | TokenTypes$ Creature,Soldier | TokenOwner$ You | TokenColors$ White | TokenPower$ 1 | TokenToughness$ 1 | TokenImage$ w 1 1 soldier M19 | SubAbility$ TrigPump | SpellDescription$ Create two 1/1 white Soldier creature tokens. Until end of turn, creatures you control get +1/+1 and gain haste. +SVar:TrigPump:DB$ PumpAll | ValidCards$ Creature.YouCtrl | KW$ Haste | NumAtt$ +1 | NumDef$ +1 +DeckHas:Ability$Token +SVar:Picture:http://resources.wizards.com/magic/cards/mrd/en-us/heroic_reinforcements.jpg +Oracle:Create two 1/1 white Soldier creature tokens. Until end of turn, creatures you control get +1/+1 and gain haste. (They can attack and {T} this turn.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/h/hidden_ancients.txt b/forge-gui/res/cardsfolder/h/hidden_ancients.txt index 3f3e528ca83..5ab3dcaeba0 100644 --- a/forge-gui/res/cardsfolder/h/hidden_ancients.txt +++ b/forge-gui/res/cardsfolder/h/hidden_ancients.txt @@ -2,6 +2,6 @@ Name:Hidden Ancients ManaCost:1 G Types:Enchantment T:Mode$ SpellCast | ValidCard$ Enchantment | ValidActivatingPlayer$ Opponent | TriggerZones$ Battlefield | IsPresent$ Card.Self+Enchantment | Execute$ TrigAnimate | TriggerDescription$ When an opponent casts an enchantment spell, if CARDNAME is an enchantment, CARDNAME becomes a 5/5 Treefolk creature. -SVar:TrigAnimate:DB$Animate | Defined$ Self | Power$ 5 | Toughness$ 5 | Types$ Creature,Treefolk | OverwriteTypes$ True | Permanent$ True +SVar:TrigAnimate:DB$Animate | Defined$ Self | Power$ 5 | Toughness$ 5 | Types$ Creature,Treefolk | RemoveCardTypes$ True | Permanent$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/hidden_ancients.jpg Oracle:When an opponent casts an enchantment spell, if Hidden Ancients is an enchantment, Hidden Ancients becomes a 5/5 Treefolk creature. diff --git a/forge-gui/res/cardsfolder/h/hidden_gibbons.txt b/forge-gui/res/cardsfolder/h/hidden_gibbons.txt index 5f7e19dc345..d2ef3de4e2f 100644 --- a/forge-gui/res/cardsfolder/h/hidden_gibbons.txt +++ b/forge-gui/res/cardsfolder/h/hidden_gibbons.txt @@ -2,6 +2,6 @@ Name:Hidden Gibbons ManaCost:G Types:Enchantment T:Mode$ SpellCast | ValidCard$ Instant | ValidActivatingPlayer$ Opponent | TriggerZones$ Battlefield | IsPresent$ Card.Self+Enchantment | Execute$ TrigAnimate | TriggerDescription$ When an opponent casts an instant spell, if CARDNAME is an enchantment, CARDNAME becomes a 4/4 Ape creature. -SVar:TrigAnimate:DB$Animate | Defined$ Self | Power$ 4 | Toughness$ 4 | Types$ Creature,Ape | OverwriteTypes$ True | Permanent$ True +SVar:TrigAnimate:DB$Animate | Defined$ Self | Power$ 4 | Toughness$ 4 | Types$ Creature,Ape | RemoveCardTypes$ True | Permanent$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/hidden_gibbons.jpg Oracle:When an opponent casts an instant spell, if Hidden Gibbons is an enchantment, Hidden Gibbons becomes a 4/4 Ape creature. diff --git a/forge-gui/res/cardsfolder/h/hidden_guerrillas.txt b/forge-gui/res/cardsfolder/h/hidden_guerrillas.txt index 6205a4814ff..370e0b74f2c 100644 --- a/forge-gui/res/cardsfolder/h/hidden_guerrillas.txt +++ b/forge-gui/res/cardsfolder/h/hidden_guerrillas.txt @@ -2,6 +2,6 @@ Name:Hidden Guerrillas ManaCost:G Types:Enchantment T:Mode$ SpellCast | ValidCard$ Artifact | ValidActivatingPlayer$ Opponent | TriggerZones$ Battlefield | IsPresent$ Card.Self+Enchantment | Execute$ TrigAnimate | TriggerDescription$ When an opponent casts an artifact spell, if CARDNAME is an enchantment, CARDNAME becomes a 5/3 Soldier creature with trample. -SVar:TrigAnimate:DB$Animate | Defined$ Self | Power$ 5 | Toughness$ 3 | Keywords$ Trample | Types$ Creature,Soldier | OverwriteTypes$ True | Permanent$ True +SVar:TrigAnimate:DB$Animate | Defined$ Self | Power$ 5 | Toughness$ 3 | Keywords$ Trample | Types$ Creature,Soldier | RemoveCardTypes$ True | Permanent$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/hidden_guerrillas.jpg Oracle:When an opponent casts an artifact spell, if Hidden Guerrillas is an enchantment, Hidden Guerrillas becomes a 5/3 Soldier creature with trample. diff --git a/forge-gui/res/cardsfolder/h/hidden_herd.txt b/forge-gui/res/cardsfolder/h/hidden_herd.txt index 6dd77e50d17..b1a8a262dda 100644 --- a/forge-gui/res/cardsfolder/h/hidden_herd.txt +++ b/forge-gui/res/cardsfolder/h/hidden_herd.txt @@ -2,6 +2,6 @@ Name:Hidden Herd ManaCost:G Types:Enchantment T:Mode$ LandPlayed | ValidCard$ Land.nonBasic+OppCtrl | TriggerZones$ Battlefield | IsPresent$ Card.Self+Enchantment | Execute$ TrigAnimate | TriggerDescription$ When an opponent plays a nonbasic land, if CARDNAME is an enchantment, CARDNAME becomes a 3/3 Beast creature. -SVar:TrigAnimate:DB$Animate | Defined$ Self | Power$ 3 | Toughness$ 3 | Types$ Creature,Beast | OverwriteTypes$ True | Permanent$ True +SVar:TrigAnimate:DB$Animate | Defined$ Self | Power$ 3 | Toughness$ 3 | Types$ Creature,Beast | RemoveCardTypes$ True | Permanent$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/hidden_herd.jpg Oracle:When an opponent plays a nonbasic land, if Hidden Herd is an enchantment, Hidden Herd becomes a 3/3 Beast creature. diff --git a/forge-gui/res/cardsfolder/h/hidden_predators.txt b/forge-gui/res/cardsfolder/h/hidden_predators.txt index a04222fb7d3..7ef38b1cf89 100644 --- a/forge-gui/res/cardsfolder/h/hidden_predators.txt +++ b/forge-gui/res/cardsfolder/h/hidden_predators.txt @@ -2,6 +2,6 @@ Name:Hidden Predators ManaCost:G Types:Enchantment T:Mode$ Always | IsPresent$ Creature.powerGE4+OppCtrl | TriggerZones$ Battlefield | Execute$ TrigLurkingJackalsAnimate | IsPresent2$ Card.Self+Enchantment | ResolvingCheck$ IsPresent2 | TriggerDescription$ When an opponent controls a creature with power 4 or greater, if CARDNAME is an enchantment, CARDNAME becomes a 4/4 Beast creature. -SVar:TrigLurkingJackalsAnimate:DB$ Animate | Types$ Creature,Beast | Power$ 4 | Toughness$ 4 | OverwriteTypes$ True | Permanent$ True +SVar:TrigLurkingJackalsAnimate:DB$ Animate | Types$ Creature,Beast | Power$ 4 | Toughness$ 4 | RemoveCardTypes$ True | Permanent$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/hidden_predators.jpg Oracle:When an opponent controls a creature with power 4 or greater, if Hidden Predators is an enchantment, Hidden Predators becomes a 4/4 Beast creature. diff --git a/forge-gui/res/cardsfolder/h/hidden_spider.txt b/forge-gui/res/cardsfolder/h/hidden_spider.txt index 29d2e1fe4a9..989be698e2a 100644 --- a/forge-gui/res/cardsfolder/h/hidden_spider.txt +++ b/forge-gui/res/cardsfolder/h/hidden_spider.txt @@ -2,6 +2,6 @@ Name:Hidden Spider ManaCost:G Types:Enchantment T:Mode$ SpellCast | ValidCard$ Creature.withFlying | ValidActivatingPlayer$ Opponent | TriggerZones$ Battlefield | IsPresent$ Card.Self+Enchantment | Execute$ TrigAnimate | TriggerDescription$ When an opponent casts a creature spell with flying, if CARDNAME is an enchantment, CARDNAME becomes a 3/5 Spider creature with reach. (It can block creatures with flying.) -SVar:TrigAnimate:DB$Animate | Defined$ Self | Power$ 3 | Toughness$ 5 | Keywords$ Reach | Types$ Creature,Spider | OverwriteTypes$ True | Permanent$ True +SVar:TrigAnimate:DB$Animate | Defined$ Self | Power$ 3 | Toughness$ 5 | Keywords$ Reach | Types$ Creature,Spider | RemoveCardTypes$ True | Permanent$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/hidden_spider.jpg Oracle:When an opponent casts a creature spell with flying, if Hidden Spider is an enchantment, Hidden Spider becomes a 3/5 Spider creature with reach. (It can block creatures with flying.) diff --git a/forge-gui/res/cardsfolder/h/hidden_stag.txt b/forge-gui/res/cardsfolder/h/hidden_stag.txt index 9b61eb0a3ff..0c47ae9fe68 100644 --- a/forge-gui/res/cardsfolder/h/hidden_stag.txt +++ b/forge-gui/res/cardsfolder/h/hidden_stag.txt @@ -2,9 +2,9 @@ Name:Hidden Stag ManaCost:1 G Types:Enchantment T:Mode$ LandPlayed | ValidCard$ Land.OppCtrl | IsPresent$ Card.Self+Enchantment | Execute$ TrigHiddenStagAnimateOppLand | TriggerZones$ Battlefield | TriggerDescription$ Whenever an opponent plays a land, if CARDNAME is an enchantment, CARDNAME becomes a 3/2 Elk Beast creature. -SVar:TrigHiddenStagAnimateOppLand:DB$ Animate | Defined$ Self | Types$ Creature,Elk,Beast | Power$ 3 | Toughness$ 2 | OverwriteTypes$ True | Permanent$ True +SVar:TrigHiddenStagAnimateOppLand:DB$ Animate | Defined$ Self | Types$ Creature,Elk,Beast | Power$ 3 | Toughness$ 2 | RemoveCardTypes$ True | Permanent$ True T:Mode$ LandPlayed | ValidCard$ Land.YouCtrl | IsPresent$ Card.Self+Creature | Execute$ TrigHiddenStagAnimateYourLand | TriggerZones$ Battlefield | TriggerDescription$ Whenever you play a land, if CARDNAME is a creature, CARDNAME becomes an enchantment. -SVar:TrigHiddenStagAnimateYourLand:DB$ Animate | Defined$ Self | Types$ Enchantment | OverwriteTypes$ True | Permanent$ True +SVar:TrigHiddenStagAnimateYourLand:DB$ Animate | Defined$ Self | Types$ Enchantment | RemoveCardTypes$ True | Permanent$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/hidden_stag.jpg Oracle:Whenever an opponent plays a land, if Hidden Stag is an enchantment, Hidden Stag becomes a 3/2 Elk Beast creature.\nWhenever you play a land, if Hidden Stag is a creature, Hidden Stag becomes an enchantment. diff --git a/forge-gui/res/cardsfolder/h/hieromancers_cage.txt b/forge-gui/res/cardsfolder/h/hieromancers_cage.txt new file mode 100644 index 00000000000..007a8f735b3 --- /dev/null +++ b/forge-gui/res/cardsfolder/h/hieromancers_cage.txt @@ -0,0 +1,12 @@ +Name:Hieromancer's Cage +ManaCost:3 W +Types:Enchantment +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigExile | TriggerDescription$ When CARDNAME enters the battlefield, exile target nonland permanent an opponent controls until Hieromancer's Cage leaves the battlefield. +SVar:TrigExile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | ValidTgts$ Permanent.nonLand+OppCtrl | TgtPrompt$ Select target nonland permanent an opponent controls | SubAbility$ DBEffect | ConditionPresent$ Card.Self +SVar:DBEffect:DB$ Effect | Triggers$ ComeBack | RememberObjects$ Targeted | ImprintCards$ Self | SVars$ TrigReturn,ExileSelf | ConditionPresent$ Card.Self | Duration$ Permanent | ForgetOnMoved$ Exile +SVar:ComeBack:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.IsImprinted | Execute$ TrigReturn | TriggerZones$ Command | TriggerController$ TriggeredCardController | Static$ True | TriggerDescription$ That permanent is exiled until EFFECTSOURCE leaves the battlefield +SVar:TrigReturn:DB$ ChangeZoneAll | Origin$ Exile | Destination$ Battlefield | ChangeType$ Card.IsRemembered | SubAbility$ ExileSelf +SVar:ExileSelf:DB$ ChangeZone | Origin$ Command | Destination$ Exile | Defined$ Self +SVar:PlayMain1:TRUE +SVar:OblivionRing:TRUE +Oracle:When Hieromancer's Cage enters the battlefield, exile target nonland permanent an opponent controls until Hieromancer's Cage leaves the battlefield. diff --git a/forge-gui/res/cardsfolder/h/hired_blade.txt b/forge-gui/res/cardsfolder/h/hired_blade.txt new file mode 100644 index 00000000000..e26b21183de --- /dev/null +++ b/forge-gui/res/cardsfolder/h/hired_blade.txt @@ -0,0 +1,6 @@ +Name:Hired Blade +ManaCost:2 B +Types:Creature Human Assassin +K:Flash +PT:3/2 +Oracle:Flash \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/h/hissing_iguanar.txt b/forge-gui/res/cardsfolder/h/hissing_iguanar.txt index 445e0f1ab9e..0b2d5ab13d6 100644 --- a/forge-gui/res/cardsfolder/h/hissing_iguanar.txt +++ b/forge-gui/res/cardsfolder/h/hissing_iguanar.txt @@ -2,7 +2,7 @@ Name:Hissing Iguanar ManaCost:2 R Types:Creature Lizard PT:3/1 -T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.Other | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigDealDamage | TriggerDescription$ Whenever another creature dies, you may have CARDNAME deal 1 damage to target player. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 1 +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.Other | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigDealDamage | TriggerDescription$ Whenever another creature dies, you may have CARDNAME deal 1 damage to target player or planeswalker. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/hissing_iguanar.jpg -Oracle:Whenever another creature dies, you may have Hissing Iguanar deal 1 damage to target player. +Oracle:Whenever another creature dies, you may have Hissing Iguanar deal 1 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/h/hold_at_bay.txt b/forge-gui/res/cardsfolder/h/hold_at_bay.txt index 561b006d5c5..91a11b9f4a0 100644 --- a/forge-gui/res/cardsfolder/h/hold_at_bay.txt +++ b/forge-gui/res/cardsfolder/h/hold_at_bay.txt @@ -1,6 +1,6 @@ Name:Hold at Bay ManaCost:1 W Types:Instant -A:SP$ PreventDamage | Cost$ 1 W | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 7 | SpellDescription$ Prevent the next 7 damage that would be dealt to target creature or player this turn. +A:SP$ PreventDamage | Cost$ 1 W | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 7 | SpellDescription$ Prevent the next 7 damage that would be dealt to any target this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/hold_at_bay.jpg -Oracle:Prevent the next 7 damage that would be dealt to target creature or player this turn. +Oracle:Prevent the next 7 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/h/honden_of_infinite_rage.txt b/forge-gui/res/cardsfolder/h/honden_of_infinite_rage.txt index 7a68405c726..87c19a52188 100644 --- a/forge-gui/res/cardsfolder/h/honden_of_infinite_rage.txt +++ b/forge-gui/res/cardsfolder/h/honden_of_infinite_rage.txt @@ -1,9 +1,9 @@ Name:Honden of Infinite Rage ManaCost:2 R Types:Legendary Enchantment Shrine -T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ At the beginning of your upkeep, CARDNAME deals damage to target creature or player equal to the number of Shrines you control. -SVar:TrigDamage:DB$DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ At the beginning of your upkeep, CARDNAME deals damage to any target equal to the number of Shrines you control. +SVar:TrigDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X SVar:X:Count$TypeYouCtrl.Shrine DeckHints:Type$Shrine SVar:Picture:http://www.wizards.com/global/images/magic/general/honden_of_infinite_rage.jpg -Oracle:At the beginning of your upkeep, Honden of Infinite Rage deals damage to target creature or player equal to the number of Shrines you control. +Oracle:At the beginning of your upkeep, Honden of Infinite Rage deals damage to any target equal to the number of Shrines you control. diff --git a/forge-gui/res/cardsfolder/h/honorable_passage.txt b/forge-gui/res/cardsfolder/h/honorable_passage.txt index e0520fcbfd0..0c4c4b41f9f 100644 --- a/forge-gui/res/cardsfolder/h/honorable_passage.txt +++ b/forge-gui/res/cardsfolder/h/honorable_passage.txt @@ -1,12 +1,12 @@ Name:Honorable Passage ManaCost:1 W Types:Instant -A:SP$ ChooseSource | Cost$ 1 W | Choices$ Card,Emblem | AILogic$ NeedsPrevention | SubAbility$ DBEffect | StackDescription$ SpellDescription | SpellDescription$ The next time a source of your choice would deal damage to target creature or player this turn, prevent that damage. If damage from a red source is prevented this way, Honorable Passage deals that much damage to the source's controller. -SVar:DBEffect:DB$ Effect | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to prevent damage to | ReplacementEffects$ RepDmg | SVars$ RepDmg,DealDamage,ExileEffect,X,Y | RememberObjects$ Targeted | ExileOnMoved$ Battlefield | SubAbility$ DBCleanup | ConditionDefined$ ChosenCard | ConditionPresent$ Card,Emblem | ConditionCompare$ GE1 -SVar:RepDmg:Event$ DamageDone | ValidTarget$ Card.IsRemembered,Player.IsRemembered | ValidSource$ Card.ChosenCard,Emblem.ChosenCard | ReplaceWith$ DealDamage | PreventionEffect$ True | Description$ The next time a source of your choice would deal damage to target creature or player this turn, prevent that damage. If damage from a red source is prevented this way, Honorable Passage deals that much damage to the source's controller. +A:SP$ ChooseSource | Cost$ 1 W | Choices$ Card,Emblem | AILogic$ NeedsPrevention | SubAbility$ DBEffect | StackDescription$ SpellDescription | SpellDescription$ The next time a source of your choice would deal damage to any target this turn, prevent that damage. If damage from a red source is prevented this way, Honorable Passage deals that much damage to the source's controller. +SVar:DBEffect:DB$ Effect | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to prevent damage to | ReplacementEffects$ RepDmg | SVars$ RepDmg,DealDamage,ExileEffect,X,Y | RememberObjects$ Targeted | ExileOnMoved$ Battlefield | SubAbility$ DBCleanup | ConditionDefined$ ChosenCard | ConditionPresent$ Card,Emblem | ConditionCompare$ GE1 +SVar:RepDmg:Event$ DamageDone | ValidTarget$ Card.IsRemembered,Player.IsRemembered | ValidSource$ Card.ChosenCard,Emblem.ChosenCard | ReplaceWith$ DealDamage | PreventionEffect$ True | Description$ The next time a source of your choice would deal damage to any target this turn, prevent that damage. If damage from a red source is prevented this way, Honorable Passage deals that much damage to the source's controller. SVar:DealDamage:DB$ DealDamage | Defined$ ReplacedSourceController | DamageSource$ EffectSource | NumDmg$ X | References$ X | ConditionDefined$ ReplacedSource | ConditionPresent$ Card.RedSource | SubAbility$ ExileEffect SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True SVar:X:ReplaceCount$DamageAmount SVar:Picture:http://www.wizards.com/global/images/magic/general/honorable_passage.jpg -Oracle:The next time a source of your choice would deal damage to target creature or player this turn, prevent that damage. If damage from a red source is prevented this way, Honorable Passage deals that much damage to the source's controller. +Oracle:The next time a source of your choice would deal damage to any target this turn, prevent that damage. If damage from a red source is prevented this way, Honorable Passage deals that much damage to the source's controller. diff --git a/forge-gui/res/cardsfolder/h/hornet_sting.txt b/forge-gui/res/cardsfolder/h/hornet_sting.txt index b342f965c95..8bc8513d3b2 100644 --- a/forge-gui/res/cardsfolder/h/hornet_sting.txt +++ b/forge-gui/res/cardsfolder/h/hornet_sting.txt @@ -1,6 +1,6 @@ Name:Hornet Sting ManaCost:G Types:Instant -A:SP$ DealDamage | Cost$ G | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ Hornet Sting deals 1 damage to target creature or player. +A:SP$ DealDamage | Cost$ G | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ Hornet Sting deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/hornet_sting.jpg -Oracle:Hornet Sting deals 1 damage to target creature or player. +Oracle:Hornet Sting deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/h/horrible_hordes.txt b/forge-gui/res/cardsfolder/h/horrible_hordes.txt index 0ce76dc2840..209ba1094de 100644 --- a/forge-gui/res/cardsfolder/h/horrible_hordes.txt +++ b/forge-gui/res/cardsfolder/h/horrible_hordes.txt @@ -2,6 +2,6 @@ Name:Horrible Hordes ManaCost:3 Types:Artifact Creature Spirit PT:2/2 -K:Rampage 1 +K:Rampage:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/horrible_hordes.jpg Oracle:Rampage 1 (Whenever this creature becomes blocked, it gets +1/+1 until end of turn for each creature blocking it beyond the first.) diff --git a/forge-gui/res/cardsfolder/h/hostile_minotaur.txt b/forge-gui/res/cardsfolder/h/hostile_minotaur.txt new file mode 100644 index 00000000000..ab8b1740087 --- /dev/null +++ b/forge-gui/res/cardsfolder/h/hostile_minotaur.txt @@ -0,0 +1,6 @@ +Name:Hostile Minotaur +ManaCost:3 R +Types:Creature Minotaur +PT:3/3 +K:Haste +Oracle:Haste diff --git a/forge-gui/res/cardsfolder/h/hot_springs.txt b/forge-gui/res/cardsfolder/h/hot_springs.txt index 22781dc9501..ddbe56fa028 100644 --- a/forge-gui/res/cardsfolder/h/hot_springs.txt +++ b/forge-gui/res/cardsfolder/h/hot_springs.txt @@ -3,7 +3,7 @@ ManaCost:1 G Types:Enchantment Aura K:Enchant land you control A:SP$ Attach | Cost$ 1 G | ValidTgts$ Land.YouCtrl | TgtPrompt$ Select target land you control | AILogic$ Pump -S:Mode$ Continuous | Affected$ Land.EnchantedBy | AddAbility$ Pump | Description$ Enchanted land has "{T}: Prevent the next 1 damage that would be dealt to target creature or player this turn." -SVar:Pump:AB$PreventDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to target creature or player this turn. +S:Mode$ Continuous | Affected$ Land.EnchantedBy | AddAbility$ Pump | Description$ Enchanted land has "{T}: Prevent the next 1 damage that would be dealt to any target this turn." +SVar:Pump:AB$PreventDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to any target this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/hot_springs.jpg -Oracle:Enchant land you control\nEnchanted land has "{T}: Prevent the next 1 damage that would be dealt to target creature or player this turn." +Oracle:Enchant land you control\nEnchanted land has "{T}: Prevent the next 1 damage that would be dealt to any target this turn." diff --git a/forge-gui/res/cardsfolder/h/howling_gale.txt b/forge-gui/res/cardsfolder/h/howling_gale.txt index 422ba3e08bf..236df036b1e 100644 --- a/forge-gui/res/cardsfolder/h/howling_gale.txt +++ b/forge-gui/res/cardsfolder/h/howling_gale.txt @@ -1,7 +1,7 @@ Name:Howling Gale ManaCost:1 G Types:Instant -K:Flashback 1 G +K:Flashback:1 G A:SP$ DamageAll | Cost$ 1 G | NumDmg$ 1 | ValidCards$ Creature.withFlying | ValidPlayers$ Player | ValidDescription$ each creature with flying and each player. | SpellDescription$ CARDNAME deals 1 damage to each creature with flying and each player. SVar:Picture:http://www.wizards.com/global/images/magic/general/howling_gale.jpg Oracle:Howling Gale deals 1 damage to each creature with flying and each player.\nFlashback {1}{G} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/h/hunding_gjornersen.txt b/forge-gui/res/cardsfolder/h/hunding_gjornersen.txt index 8470143e1bc..4045281a9a4 100644 --- a/forge-gui/res/cardsfolder/h/hunding_gjornersen.txt +++ b/forge-gui/res/cardsfolder/h/hunding_gjornersen.txt @@ -2,6 +2,6 @@ Name:Hunding Gjornersen ManaCost:3 W U U Types:Legendary Creature Human Warrior PT:5/4 -K:Rampage 1 +K:Rampage:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/hunding_gjornersen.jpg Oracle:Rampage 1 (Whenever this creature becomes blocked, it gets +1/+1 until end of turn for each creature blocking it beyond the first.) diff --git a/forge-gui/res/cardsfolder/h/hungering_hydra.txt b/forge-gui/res/cardsfolder/h/hungering_hydra.txt new file mode 100644 index 00000000000..5c4f7ba4135 --- /dev/null +++ b/forge-gui/res/cardsfolder/h/hungering_hydra.txt @@ -0,0 +1,12 @@ +Name:Hungering Hydra +ManaCost:X G +Types:Creature Hydra +K:CantBeBlockedByAmount GT1 +K:etbCounter:P1P1:X +SVar:X:Count$xPaid +T:Mode$ DamageDoneOnce | ValidTarget$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever CARDNAME is dealt damage, put that many +1/+1 counters on CARDNAME. +SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ Y | References$ Y +SVar:Y:TriggerCount$DamageAmount +DeckHas:Ability$Token +Oracle:Hungering Hydra enters the battlefield with X +1/+1 counters on it.\nHungering Hydra can't be blocked by more than one creature.\nWhenever Hungering Hydra is dealt damage, put that many +1/+1 counters on it. (It must survive the damage to get the counters.) +PT:0/0 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/h/hungry_flames.txt b/forge-gui/res/cardsfolder/h/hungry_flames.txt index 373bcea770b..a3aeef62e35 100644 --- a/forge-gui/res/cardsfolder/h/hungry_flames.txt +++ b/forge-gui/res/cardsfolder/h/hungry_flames.txt @@ -1,7 +1,7 @@ Name:Hungry Flames ManaCost:2 R Types:Instant -A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 3 | SubAbility$ DBDealDamage | SpellDescription$ CARDNAME deals 3 damage to target creature and 2 damage to target player. -SVar:DBDealDamage:DB$ DealDamage | NumDmg$ 2 | ValidTgts$ Player | TgtPrompt$ Select target player +A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 3 | SubAbility$ DBDealDamage | SpellDescription$ CARDNAME deals 3 damage to target creature and 2 damage to target player or planeswalker. +SVar:DBDealDamage:DB$ DealDamage | NumDmg$ 2 | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker SVar:Picture:http://www.wizards.com/global/images/magic/general/hungry_flames.jpg -Oracle:Hungry Flames deals 3 damage to target creature and 2 damage to target player. +Oracle:Hungry Flames deals 3 damage to target creature and 2 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/h/huntmaster_of_the_fells_ravager_of_the_fells.txt b/forge-gui/res/cardsfolder/h/huntmaster_of_the_fells_ravager_of_the_fells.txt index 7f98b108212..0597763c2e6 100644 --- a/forge-gui/res/cardsfolder/h/huntmaster_of_the_fells_ravager_of_the_fells.txt +++ b/forge-gui/res/cardsfolder/h/huntmaster_of_the_fells_ravager_of_the_fells.txt @@ -20,10 +20,11 @@ Colors:green,red Types:Creature Werewolf PT:4/4 K:Trample -T:Mode$ Transformed | ValidCard$ Card.Self | Execute$ DamageAndMoreDamage | TriggerDescription$ Whenever this creature transforms into CARDNAME, it deals 2 damage to target opponent and 2 damage to up to one target creature that player controls. -SVar:DamageAndMoreDamage:DB$ DealDamage | ValidTgts$ Opponent | NumDmg$ 2 | SubAbility$ MoreDamage -SVar:MoreDamage:DB$ DealDamage | ValidTgts$ Creature | TargetsWithDefinedController$ ParentTarget | NumDmg$ 2 | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Select target creature opponent controls +T:Mode$ Transformed | ValidCard$ Card.Self | Execute$ DamageAndMoreDamage | TriggerDescription$ Whenever this creature transforms into CARDNAME, it deals 2 damage to target opponent or planeswalker and 2 damage to to up one target creature that player or that planeswalker's controller controls. +SVar:DamageAndMoreDamage:DB$ DealDamage | ValidTgts$ Opponent,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 2 | DamageMap$ True | SubAbility$ MoreDamage +SVar:MoreDamage:DB$ DealDamage | ValidTgts$ Creature.ControlledBy TargetedOrController | TgtPrompt$ Select target creature that player or that planeswalker's controller controls | TargetMin$ 0 | TargetMax$ 1 | NumDmg$ 2 | SubAbility$ DBDamageResolve +SVar:DBDamageResolve:DB$ DamageResolve T:Mode$ Phase | Phase$ Upkeep | WerewolfUntransformCondition$ True | TriggerZones$ Battlefield | Execute$ TrigTransform | TriggerDescription$ At the beginning of each upkeep, if a player cast two or more spells last turn, transform CARDNAME. SVar:TrigTransform:DB$ SetState | Defined$ Self | Mode$ Transform SVar:Picture:http://www.wizards.com/global/images/magic/general/ravager_of_the_fells.jpg -Oracle:Trample\nWhenever this creature transforms into Ravager of the Fells, it deals 2 damage to target opponent and 2 damage to up to one target creature that player controls.\nAt the beginning of each upkeep, if a player cast two or more spells last turn, transform Ravager of the Fells. +Oracle:Trample\nWhenever this creature transforms into Ravager of the Fells, it deals 2 damage to target opponent or planeswalker and 2 damage to to up one target creature that player or that planeswalker's controller controls.\nAt the beginning of each upkeep, if a player cast two or more spells last turn, transform Ravager of the Fells. diff --git a/forge-gui/res/cardsfolder/h/hypervolt_grasp.txt b/forge-gui/res/cardsfolder/h/hypervolt_grasp.txt index 8be116601e7..b0c7f8d407e 100644 --- a/forge-gui/res/cardsfolder/h/hypervolt_grasp.txt +++ b/forge-gui/res/cardsfolder/h/hypervolt_grasp.txt @@ -3,9 +3,9 @@ ManaCost:2 R Types:Enchantment Aura K:Enchant creature A:SP$ Attach | Cost$ 2 R | ValidTgts$ Creature | AILogic$ Pump -S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddAbility$ Damage | Description$ Enchanted creature has "{T}: This creature deals 1 damage to target creature or player." +S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddAbility$ Damage | Description$ Enchanted creature has "{T}: This creature deals 1 damage to any target." A:AB$ ChangeZone | Cost$ 1 U | Defined$ Self | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return CARDNAME to its owner's hand. -SVar:Damage:AB$DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +SVar:Damage:AB$DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:NonStackingAttachEffect:True SVar:Picture:http://www.wizards.com/global/images/magic/general/hypervolt_grasp.jpg -Oracle:Enchant creature\nEnchanted creature has "{T}: This creature deals 1 damage to target creature or player."\n{1}{U}: Return Hypervolt Grasp to its owner's hand. +Oracle:Enchant creature\nEnchanted creature has "{T}: This creature deals 1 damage to any target."\n{1}{U}: Return Hypervolt Grasp to its owner's hand. diff --git a/forge-gui/res/cardsfolder/h/hypochondria.txt b/forge-gui/res/cardsfolder/h/hypochondria.txt index 4a9763744db..0831264bf43 100644 --- a/forge-gui/res/cardsfolder/h/hypochondria.txt +++ b/forge-gui/res/cardsfolder/h/hypochondria.txt @@ -1,8 +1,8 @@ Name:Hypochondria ManaCost:1 W Types:Enchantment -A:AB$ PreventDamage | Cost$ W Discard<1/Card> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 3 | SpellDescription$ Prevent the next 3 damage that would be dealt to target creature or player this turn. -A:AB$ PreventDamage | Cost$ W Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 3 | SpellDescription$ Prevent the next 3 damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ W Discard<1/Card> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 3 | SpellDescription$ Prevent the next 3 damage that would be dealt to any target this turn. +A:AB$ PreventDamage | Cost$ W Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 3 | SpellDescription$ Prevent the next 3 damage that would be dealt to any target this turn. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/hypochondria.jpg -Oracle:{W}, Discard a card: Prevent the next 3 damage that would be dealt to target creature or player this turn.\n{W}, Sacrifice Hypochondria: Prevent the next 3 damage that would be dealt to target creature or player this turn. +Oracle:{W}, Discard a card: Prevent the next 3 damage that would be dealt to target permanent or player this turn.\n{W}, Sacrifice Hypochondria: Prevent the next 3 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/i/icatian_javelineers.txt b/forge-gui/res/cardsfolder/i/icatian_javelineers.txt index e1ac3e13d0e..20aaaaceb8c 100644 --- a/forge-gui/res/cardsfolder/i/icatian_javelineers.txt +++ b/forge-gui/res/cardsfolder/i/icatian_javelineers.txt @@ -3,6 +3,6 @@ ManaCost:W Types:Creature Human Soldier PT:1/1 K:etbCounter:JAVELIN:1 -A:AB$ DealDamage | Cost$ T SubCounter<1/JAVELIN> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ T SubCounter<1/JAVELIN> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/icatian_javelineers.jpg -Oracle:Icatian Javelineers enters the battlefield with a javelin counter on it.\n{T}, Remove a javelin counter from Icatian Javelineers: Icatian Javelineers deals 1 damage to target creature or player. +Oracle:Icatian Javelineers enters the battlefield with a javelin counter on it.\n{T}, Remove a javelin counter from Icatian Javelineers: Icatian Javelineers deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/i/iizuka_the_ruthless.txt b/forge-gui/res/cardsfolder/i/iizuka_the_ruthless.txt index 90e112f9933..e39b9fc9c41 100644 --- a/forge-gui/res/cardsfolder/i/iizuka_the_ruthless.txt +++ b/forge-gui/res/cardsfolder/i/iizuka_the_ruthless.txt @@ -2,7 +2,7 @@ Name:Iizuka the Ruthless ManaCost:3 R R Types:Legendary Creature Human Samurai PT:3/3 -K:Bushido 2 +K:Bushido:2 A:AB$ PumpAll | Cost$ 2 R Sac<1/Samurai> | ValidCards$ Creature.Samurai+YouCtrl | KW$ Double Strike | SpellDescription$ Samurai creatures you control gain double strike until end of turn. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/iizuka_the_ruthless.jpg diff --git a/forge-gui/res/cardsfolder/i/imagecrafter.txt b/forge-gui/res/cardsfolder/i/imagecrafter.txt index b69127ba95d..8e09b3fad80 100644 --- a/forge-gui/res/cardsfolder/i/imagecrafter.txt +++ b/forge-gui/res/cardsfolder/i/imagecrafter.txt @@ -3,7 +3,7 @@ ManaCost:U Types:Creature Human Wizard PT:1/1 A:AB$ ChooseType | Cost$ T | Defined$ You | Type$ Creature | InvalidTypes$ Wall | SubAbility$ DBAnimate | SpellDescription$ Choose a creature type other than Wall. Target creature becomes that type until end of turn. -SVar:DBAnimate:DB$ Animate | ValidTgts$ Creature | TgtPrompt$ Select target creature | Types$ ChosenType | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True +SVar:DBAnimate:DB$ Animate | ValidTgts$ Creature | TgtPrompt$ Select target creature | Types$ ChosenType | RemoveCreatureTypes$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/imagecrafter.jpg Oracle:{T}: Choose a creature type other than Wall. Target creature becomes that type until end of turn. diff --git a/forge-gui/res/cardsfolder/i/immersturm.txt b/forge-gui/res/cardsfolder/i/immersturm.txt index c7446997e98..565f47463a1 100644 --- a/forge-gui/res/cardsfolder/i/immersturm.txt +++ b/forge-gui/res/cardsfolder/i/immersturm.txt @@ -1,8 +1,8 @@ Name:Immersturm ManaCost:no cost Types:Plane Valla -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature | TriggerZones$ Command | Execute$ TrigDamage | OptionalDecider$ TriggeredCardController | TriggerDescription$ Whenever a creature enters the battlefield, that creature's controller may have it deal damage equal to its power to target creature or player of their choice. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ Y | References$ Y | DamageSource$ TriggeredCard | TargetingPlayer$ TriggeredCardController +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature | TriggerZones$ Command | Execute$ TrigDamage | OptionalDecider$ TriggeredCardController | TriggerDescription$ Whenever a creature enters the battlefield, that creature's controller may have it deal damage equal to its power to any target of their choice. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ Y | References$ Y | DamageSource$ TriggeredCard | TargetingPlayer$ TriggeredCardController SVar:Y:TriggeredCard$CardPower T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, exile target creature, then return it to the battlefield under its owner's control. SVar:RolledChaos:DB$ ChangeZone | ValidTgts$ Creature | Origin$ Battlefield | Destination$ Exile | RememberTargets$ True | SubAbility$ RestorationReturn @@ -10,4 +10,4 @@ SVar:RestorationReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | De SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:AIRollPlanarDieParams:Mode$ Always | HasCreatureInPlay$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/immersturm.jpg -Oracle:Whenever a creature enters the battlefield, that creature's controller may have it deal damage equal to its power to target creature or player of their choice.\nWhenever you roll {CHAOS}, exile target creature, then return it to the battlefield under its owner's control. +Oracle:Whenever a creature enters the battlefield, that creature's controller may have it deal damage equal to its power to any target of their choice.\nWhenever you roll {CHAOS}, exile target creature, then return it to the battlefield under its owner's control. diff --git a/forge-gui/res/cardsfolder/i/imminent_doom.txt b/forge-gui/res/cardsfolder/i/imminent_doom.txt index 1a2a8b013ed..3ba393f9d95 100644 --- a/forge-gui/res/cardsfolder/i/imminent_doom.txt +++ b/forge-gui/res/cardsfolder/i/imminent_doom.txt @@ -2,10 +2,10 @@ Name:Imminent Doom ManaCost:2 R Types:Enchantment K:etbCounter:DOOM:1 -T:Mode$ SpellCast | ValidCard$ Card.cmcEQX | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever you cast a spell with converted mana cost equal to the number of doom counters on CARDNAME, CARDNAME deals that much damage to target creature or player. Then put a doom counter on CARDNAME. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ Y | References$ Y | SubAbility$ DBPutCounter +T:Mode$ SpellCast | ValidCard$ Card.cmcEQX | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever you cast a spell with converted mana cost equal to the number of doom counters on CARDNAME, CARDNAME deals that much damage to any target. Then put a doom counter on CARDNAME. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ Y | References$ Y | SubAbility$ DBPutCounter SVar:DBPutCounter:DB$PutCounter | Defined$ Self | CounterType$ DOOM | CounterNum$ 1 SVar:X:Count$CardCounters.DOOM SVar:Y:TriggerCount$CastSACMC SVar:Picture:http://www.wizards.com/global/images/magic/general/imminent_doom.jpg -Oracle:Imminent Doom enters the battlefield with a doom counter on it.\nWhenever you cast a spell with converted mana cost equal to the number of doom counters on Imminent Doom, Imminent Doom deals that much damage to target creature or player. Then put a doom counter on Imminent Doom. \ No newline at end of file +Oracle:Imminent Doom enters the battlefield with a doom counter on it.\nWhenever you cast a spell with converted mana cost equal to the number of doom counters on Imminent Doom, Imminent Doom deals that much damage to any target. Then put a doom counter on Imminent Doom. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/i/impetuous_protege.txt b/forge-gui/res/cardsfolder/i/impetuous_protege.txt new file mode 100644 index 00000000000..1d953e979ad --- /dev/null +++ b/forge-gui/res/cardsfolder/i/impetuous_protege.txt @@ -0,0 +1,11 @@ +Name:Impetuous Protege +ManaCost:2 R +Types:Creature Human Warrior +PT:0/4 +K:Partner:Proud Mentor +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigPump | TriggerDescription$ Whenever CARDNAME attacks, it gets +X/+0 until end of turn, where X is the greatest power among tapped creatures your opponents control. +SVar:TrigPump:DB$ Pump | Defined$ Self | NumAtt$ X | References$ X +SVar:X:Count$GreatestPower_Creature.tapped+OppCtrl +DeckHints:Name$Proud Mentor +SVar:Picture:http://www.wizards.com/global/images/magic/general/impetuous_protege.jpg +Oracle:Partner with Proud Mentor (When this creature enters the battlefield, target player may put Proud Mentor into their hand from their library, then shuffle.)\nWhenever Impetuous Protege attacks, it gets +X/+0 until end of turn, where X is the greatest power among tapped creatures your opponents control. diff --git a/forge-gui/res/cardsfolder/i/implement_of_combustion.txt b/forge-gui/res/cardsfolder/i/implement_of_combustion.txt index 4a339ce75b6..a38c44a55ba 100644 --- a/forge-gui/res/cardsfolder/i/implement_of_combustion.txt +++ b/forge-gui/res/cardsfolder/i/implement_of_combustion.txt @@ -1,10 +1,10 @@ Name:Implement of Combustion ManaCost:1 Types:Artifact -A:AB$ DealDamage | Cost$ R Sac<1/CARDNAME> | NumDmg$ 1 | ValidTgts$ Player | TgtPrompt$ Select target player | SpellDescription$ CARDNAME deals 1 damage to target player. +A:AB$ DealDamage | Cost$ R Sac<1/CARDNAME> | NumDmg$ 1 | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | SpellDescription$ CARDNAME deals 1 damage to target player or planeswalker. T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME is put into a graveyard from the battlefield, draw a card. SVar:TrigDraw:DB$Draw | NumCards$ 1 | Defined$ TriggeredCardController SVar:RemRandomDeck:True DeckNeeds:Color$Red SVar:Picture:http://www.wizards.com/global/images/magic/general/implement_of_combustion.jpg -Oracle:{R}, Sacrifice Implement of Combustion: It deals 1 damage to target player.\nWhen Implement of Combustion is put into a graveyard from the battlefield, draw a card. +Oracle:{R}, Sacrifice Implement of Combustion: It deals 1 damage to target player or planeswalker.\nWhen Implement of Combustion is put into a graveyard from the battlefield, draw a card. diff --git a/forge-gui/res/cardsfolder/i/imprisoned_in_the_moon.txt b/forge-gui/res/cardsfolder/i/imprisoned_in_the_moon.txt index a5b2395fc0a..ff17aa4a073 100644 --- a/forge-gui/res/cardsfolder/i/imprisoned_in_the_moon.txt +++ b/forge-gui/res/cardsfolder/i/imprisoned_in_the_moon.txt @@ -3,7 +3,7 @@ ManaCost:2 U Types:Enchantment Aura K:Enchant creature, land, or planeswalker A:SP$ Attach | Cost$ 2 U | ValidTgts$ Creature,Land,Planeswalker | AILogic$ Curse | AITgts$ Card.cmcGE3 -S:Mode$ Continuous | Affected$ Card.EnchantedBy | SetColor$ Colorless | AddType$ Land | RemoveCardTypes$ True | RemoveSubTypes$ True | RemoveAllAbilities$ True | AddAbility$ ABMana | Description$ Enchanted permanent is a colorless land with "{T}: Add {C}" and loses all other card types and abilities. +S:Mode$ Continuous | Affected$ Card.EnchantedBy | SetColor$ Colorless | AddType$ Land | RemoveCardTypes$ True | RemoveAllAbilities$ True | AddAbility$ ABMana | Description$ Enchanted permanent is a colorless land with "{T}: Add {C}" and loses all other card types and abilities. SVar:ABMana:AB$Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}. SVar:NonStackingAttachEffect:True SVar:Picture:http://www.wizards.com/global/images/magic/general/imprisoned_in_the_moon.jpg diff --git a/forge-gui/res/cardsfolder/i/inalla_archmage_ritualist.txt b/forge-gui/res/cardsfolder/i/inalla_archmage_ritualist.txt index 985b08c2f2f..f20d04cf25a 100644 --- a/forge-gui/res/cardsfolder/i/inalla_archmage_ritualist.txt +++ b/forge-gui/res/cardsfolder/i/inalla_archmage_ritualist.txt @@ -4,7 +4,7 @@ Types:Legendary Creature Human Wizard PT:4/5 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Wizard.YouCtrl+nonToken+Other | TriggerZones$ Command | PresentZone$ Command | Execute$ TrigCopyPermanent | TriggerDescription$ Eminence — Whenever another nontoken Wizard enters the battlefield under your control, if CARDNAME is in the command zone or on the battlefield, you may pay {1}. If you do, create a token that's a copy of that Wizard. The token gains haste. Exile it at the beginning of the next end step. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Wizard.YouCtrl+nonToken+Other | TriggerZones$ Battlefield | PresentZone$ Battlefield | Execute$ TrigCopyPermanent | Secondary$ True | TriggerDescription$ Eminence — Whenever another nontoken Wizard enters the battlefield under your control, if CARDNAME is in the command zone or on the battlefield, you may pay {1}. If you do, create a token that's a copy of that Wizard. The token gains haste. Exile it at the beginning of the next end step. -SVar:TrigCopyPermanent:AB$ CopyPermanent | Cost$ 1 | Defined$ TriggeredCard | NumCopies$ 1 | AddTypes$ Artifact | AddSVars$ SneakAttackEOT | PumpKeywords$ Haste | AtEOT$ Exile +SVar:TrigCopyPermanent:AB$ CopyPermanent | Cost$ 1 | Defined$ TriggeredCard | NumCopies$ 1 | AddSVars$ SneakAttackEOT | PumpKeywords$ Haste | AtEOT$ Exile A:AB$ LoseLife | Cost$ tapXType<5/Wizard> | ValidTgts$ Player | TgtPrompt$ Select a player to lose 7 life | LifeAmount$ 7 | SpellDescription$ Target player loses 7 life. SVar:SneakAttackEOT:SVar:EndOfTurnLeavePlay:True SVar:BuffedBy:Wizard diff --git a/forge-gui/res/cardsfolder/i/incendiary.txt b/forge-gui/res/cardsfolder/i/incendiary.txt index 8dcf25e6b88..842c1728cfa 100644 --- a/forge-gui/res/cardsfolder/i/incendiary.txt +++ b/forge-gui/res/cardsfolder/i/incendiary.txt @@ -5,8 +5,8 @@ K:Enchant creature A:SP$ Attach | Cost$ R | ValidTgts$ Creature | AILogic$ Pump T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of your upkeep, you may put a fuse counter on CARDNAME. SVar:TrigPutCounter:DB$PutCounter | Defined$ Self | CounterType$ FUSE | CounterNum$ 1 -T:Mode$ ChangesZone | ValidCard$ Card.AttachedBy | Origin$ Any | Destination$ Graveyard | Execute$ TrigDamage | TriggerDescription$ When enchanted creature dies, CARDNAME deals X damage to target creature or player, where X is the number of fuse counters on CARDNAME. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X +T:Mode$ ChangesZone | ValidCard$ Card.AttachedBy | Origin$ Any | Destination$ Graveyard | Execute$ TrigDamage | TriggerDescription$ When enchanted creature dies, CARDNAME deals X damage to any target, where X is the number of fuse counters on CARDNAME. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X SVar:X:Count$CardCounters.FUSE SVar:Picture:http://www.wizards.com/global/images/magic/general/incendiary.jpg -Oracle:Enchant creature\nAt the beginning of your upkeep, you may put a fuse counter on Incendiary.\nWhen enchanted creature dies, Incendiary deals X damage to target creature or player, where X is the number of fuse counters on Incendiary. +Oracle:Enchant creature\nAt the beginning of your upkeep, you may put a fuse counter on Incendiary.\nWhen enchanted creature dies, Incendiary deals X damage to any target, where X is the number of fuse counters on Incendiary. diff --git a/forge-gui/res/cardsfolder/i/incendiary_command.txt b/forge-gui/res/cardsfolder/i/incendiary_command.txt index c7806ffe007..aa7c4f180d2 100644 --- a/forge-gui/res/cardsfolder/i/incendiary_command.txt +++ b/forge-gui/res/cardsfolder/i/incendiary_command.txt @@ -2,7 +2,7 @@ Name:Incendiary Command ManaCost:3 R R Types:Sorcery A:SP$ Charm | Cost$ 3 R R | Choices$ DBDamageP,DBDamageC,DBDestroy,DBDiscard | CharmNum$ 2 -SVar:DBDamageP:DB$ DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target player. +SVar:DBDamageP:DB$ DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target player or planeswalker. SVar:DBDamageC:DB$ DamageAll | ValidCards$ Creature | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to each creature. SVar:DBDestroy:DB$ Destroy | ValidTgts$ Land.nonBasic | TgtPrompt$ Select target nonbasic land | SpellDescription$ Destroy target nonbasic land. SVar:DBDiscard:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBIncendiaryDiscard | SubAbility$ DBIncendiaryDraw | SpellDescription$ Each player discards all the cards in their hand, then draws that many cards. @@ -11,4 +11,4 @@ SVar:DBIncendiaryDraw:DB$ Draw | NumCards$ X | Defined$ Player.IsRemembered | Re SVar:CleanIncendiary:DB$ Cleanup | ClearRemembered$ True SVar:X:Remembered$Amount/Minus.1 SVar:Picture:http://resources.wizards.com/magic/cards/lrw/en/card141830.jpg -Oracle:Choose two —\n• Incendiary Command deals 4 damage to target player.\n• Incendiary Command deals 2 damage to each creature.\n• Destroy target nonbasic land.\n• Each player discards all the cards in their hand, then draws that many cards. +Oracle:Choose two —\n• Incendiary Command deals 4 damage to target player or planeswalker.\n• Incendiary Command deals 2 damage to each creature.\n• Destroy target nonbasic land.\n• Each player discards all the cards in their hand, then draws that many cards. diff --git a/forge-gui/res/cardsfolder/i/incendiary_flow.txt b/forge-gui/res/cardsfolder/i/incendiary_flow.txt index 0efbd0b34da..4bf978d15d7 100644 --- a/forge-gui/res/cardsfolder/i/incendiary_flow.txt +++ b/forge-gui/res/cardsfolder/i/incendiary_flow.txt @@ -1,7 +1,7 @@ Name:Incendiary Flow ManaCost:1 R Types:Sorcery -A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | RememberDamaged$ True | ReplaceDyingDefined$ Remembered | SubAbility$ DBCleanup | SpellDescription$ CARDNAME deals 3 damage to target creature or player. If a creature dealt damage this way would die this turn, exile it instead. +A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | RememberDamaged$ True | ReplaceDyingDefined$ Remembered | SubAbility$ DBCleanup | SpellDescription$ CARDNAME deals 3 damage to any target. If a creature dealt damage this way would die this turn, exile it instead. SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/incendiary_flow.jpg -Oracle:Incendiary Flow deals 3 damage to target creature or player. If a creature dealt damage this way would die this turn, exile it instead. +Oracle:Incendiary Flow deals 3 damage to any target. If a creature dealt damage this way would die this turn, exile it instead. diff --git a/forge-gui/res/cardsfolder/i/incinerate.txt b/forge-gui/res/cardsfolder/i/incinerate.txt index d7edb46d258..5e68077e706 100644 --- a/forge-gui/res/cardsfolder/i/incinerate.txt +++ b/forge-gui/res/cardsfolder/i/incinerate.txt @@ -1,7 +1,7 @@ Name:Incinerate ManaCost:1 R Types:Instant -A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SubAbility$ DB | SpellDescription$ CARDNAME deals 3 damage to target creature or player. A creature dealt damage this way can't be regenerated this turn. +A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SubAbility$ DB | SpellDescription$ CARDNAME deals 3 damage to any target. A creature dealt damage this way can't be regenerated this turn. SVar:DB:DB$Pump | KW$ HIDDEN CARDNAME can't be regenerated. | Defined$ Targeted SVar:Picture:http://www.wizards.com/global/images/magic/general/incinerate.jpg -Oracle:Incinerate deals 3 damage to target creature or player. A creature dealt damage this way can't be regenerated this turn. +Oracle:Incinerate deals 3 damage to any target. A creature dealt damage this way can't be regenerated this turn. diff --git a/forge-gui/res/cardsfolder/i/increasing_ambition.txt b/forge-gui/res/cardsfolder/i/increasing_ambition.txt index 8a1863f559e..3d195b06464 100644 --- a/forge-gui/res/cardsfolder/i/increasing_ambition.txt +++ b/forge-gui/res/cardsfolder/i/increasing_ambition.txt @@ -1,7 +1,7 @@ Name:Increasing Ambition ManaCost:4 B Types:Sorcery -K:Flashback 7 B +K:Flashback:7 B A:SP$ ChangeZone | Cost$ 4 B | Origin$ Library | Destination$ Hand | ChangeType$ Card | ChangeNum$ X | Mandatory$ True | References$ X | SpellDescription$ Search your library for a card and put that card into your hand. If CARDNAME was cast from a graveyard, instead search your library for two cards and put them into your hand. Then shuffle your library. SVar:X:Count$wasCastFromGraveyard.2.1 SVar:Picture:http://www.wizards.com/global/images/magic/general/increasing_ambition.jpg diff --git a/forge-gui/res/cardsfolder/i/increasing_confusion.txt b/forge-gui/res/cardsfolder/i/increasing_confusion.txt index 6396913ab4a..1dc02f5bbfc 100644 --- a/forge-gui/res/cardsfolder/i/increasing_confusion.txt +++ b/forge-gui/res/cardsfolder/i/increasing_confusion.txt @@ -1,7 +1,7 @@ Name:Increasing Confusion ManaCost:X U Types:Sorcery -K:Flashback X U +K:Flashback:X U A:SP$ Mill | Cost$ X U | NumCards$ Z | ValidTgts$ Player | TgtPrompt$ Choose a player | References$ X,Y,Z | SpellDescription$ Target player puts the top X cards of their library into their graveyard. If CARDNAME was cast from a graveyard, that player puts twice as many cards into their graveyard instead. SVar:Z:SVar$X/Times.Y SVar:X:Count$xPaid diff --git a/forge-gui/res/cardsfolder/i/increasing_devotion.txt b/forge-gui/res/cardsfolder/i/increasing_devotion.txt index 4e9ea2ea750..52432cafc0b 100644 --- a/forge-gui/res/cardsfolder/i/increasing_devotion.txt +++ b/forge-gui/res/cardsfolder/i/increasing_devotion.txt @@ -1,7 +1,7 @@ Name:Increasing Devotion ManaCost:3 W W Types:Sorcery -K:Flashback 7 W W +K:Flashback:7 W W A:SP$ Token | Cost$ 3 W W | TokenAmount$ X | TokenName$ Human | TokenTypes$ Creature,Human | TokenColors$ White | TokenPower$ 1 | TokenToughness$ 1 | TokenOwner$ You | References$ X | SpellDescription$ Create five 1/1 white Human creature tokens. If CARDNAME was cast from a graveyard, create ten of those tokens instead. SVar:X:Count$wasCastFromGraveyard.10.5 SVar:Picture:http://www.wizards.com/global/images/magic/general/increasing_devotion.jpg diff --git a/forge-gui/res/cardsfolder/i/increasing_savagery.txt b/forge-gui/res/cardsfolder/i/increasing_savagery.txt index 0ec96e7227e..335714eb288 100644 --- a/forge-gui/res/cardsfolder/i/increasing_savagery.txt +++ b/forge-gui/res/cardsfolder/i/increasing_savagery.txt @@ -1,7 +1,7 @@ Name:Increasing Savagery ManaCost:2 G G Types:Sorcery -K:Flashback 5 G G +K:Flashback:5 G G A:SP$ PutCounter | Cost$ 2 G G | CounterNum$ X | CounterType$ P1P1 | ValidTgts$ Creature | TgtPrompt$ Select target creature | References$ X | SpellDescription$ Put five +1/+1 counters on target creature. If CARDNAME was cast from a graveyard, put ten +1/+1 counters on that creature instead. SVar:X:Count$wasCastFromGraveyard.10.5 SVar:Picture:http://www.wizards.com/global/images/magic/general/increasing_savagery.jpg diff --git a/forge-gui/res/cardsfolder/i/increasing_vengeance.txt b/forge-gui/res/cardsfolder/i/increasing_vengeance.txt index 1cbee5c934e..6964cc30425 100644 --- a/forge-gui/res/cardsfolder/i/increasing_vengeance.txt +++ b/forge-gui/res/cardsfolder/i/increasing_vengeance.txt @@ -1,7 +1,7 @@ Name:Increasing Vengeance ManaCost:R R Types:Instant -K:Flashback 3 R R +K:Flashback:3 R R A:SP$ CopySpellAbility | Cost$ R R | ValidTgts$ Instant.YouCtrl,Sorcery.YouCtrl | TargetType$ Spell | SubAbility$ DBCopy2 | SpellDescription$ Copy target instant or sorcery spell you control. If CARDNAME was cast from a graveyard, copy that spell twice instead. You may choose new targets for the copies. SVar:DBCopy2:DB$ CopySpellAbility | Defined$ Targeted | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 | References$ X SVar:X:Count$wasCastFromGraveyard.1.0 diff --git a/forge-gui/res/cardsfolder/i/indebted_samurai.txt b/forge-gui/res/cardsfolder/i/indebted_samurai.txt index 2d91e71c3e0..252d72858ef 100644 --- a/forge-gui/res/cardsfolder/i/indebted_samurai.txt +++ b/forge-gui/res/cardsfolder/i/indebted_samurai.txt @@ -2,7 +2,7 @@ Name:Indebted Samurai ManaCost:3 W Types:Creature Human Samurai PT:2/3 -K:Bushido 1 +K:Bushido:1 T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Samurai.YouCtrl | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigPutCounter | TriggerDescription$ Whenever a Samurai you control dies, you may put a +1/+1 counter on CARDNAME. SVar:TrigPutCounter:DB$PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 | ConditionPresent$ Card.StrictlySelf DeckHints:Type$Samurai diff --git a/forge-gui/res/cardsfolder/i/infernal_reckoning.txt b/forge-gui/res/cardsfolder/i/infernal_reckoning.txt new file mode 100644 index 00000000000..85cf8f36db7 --- /dev/null +++ b/forge-gui/res/cardsfolder/i/infernal_reckoning.txt @@ -0,0 +1,8 @@ +Name:Infernal Reckoning +ManaCost:B +Types:Instant +A:SP$ ChangeZone | Cost$ W | ValidTgts$ Creature.Colorless | TgtPrompt$ Select target creature | Origin$ Battlefield | Destination$ Exile | RememberLKI$ True | SpellDescription$ Exile target colorless creature. You gain life equal to its power. | StackDescription$ SpellDescription | SubAbility$ DBGainLife +SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ X | References$ X | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:RememberedLKI$CardPower +Oracle:Exile target colorless creature. You gain life equal to its power. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/i/inferno_elemental.txt b/forge-gui/res/cardsfolder/i/inferno_elemental.txt index cef3e9e687d..0da06759b89 100644 --- a/forge-gui/res/cardsfolder/i/inferno_elemental.txt +++ b/forge-gui/res/cardsfolder/i/inferno_elemental.txt @@ -4,7 +4,7 @@ Types:Creature Elemental PT:4/4 T:Mode$ AttackerBlockedByCreature | ValidCard$ Creature | ValidBlocker$ Card.Self | Execute$ TrigDealDamageAttack | TriggerDescription$ Whenever CARDNAME blocks or becomes blocked by a creature, CARDNAME deals 3 damage to that creature. T:Mode$ AttackerBlockedByCreature | ValidCard$ Card.Self | ValidBlocker$ Creature | Execute$ TrigDealDamageBlock | Secondary$ True | TriggerDescription$ Whenever CARDNAME blocks or becomes blocked by a creature, CARDNAME deals 3 damage to that creature. -SVar:TrigDealDamageAttack:DB$DealDamage | Defined$ TriggeredAttacker | NumDmg$ 3 -SVar:TrigDealDamageBlock:DB$DealDamage | Defined$ TriggeredBlocker | NumDmg$ 3 +SVar:TrigDealDamageAttack:DB$DealDamage | Defined$ TriggeredAttackerLKICopy | NumDmg$ 3 +SVar:TrigDealDamageBlock:DB$DealDamage | Defined$ TriggeredBlockerLKICopy | NumDmg$ 3 SVar:Picture:http://www.wizards.com/global/images/magic/general/inferno_elemental.jpg Oracle:Whenever Inferno Elemental blocks or becomes blocked by a creature, Inferno Elemental deals 3 damage to that creature. diff --git a/forge-gui/res/cardsfolder/i/inferno_fist.txt b/forge-gui/res/cardsfolder/i/inferno_fist.txt index dd493a7beb6..d850504294c 100644 --- a/forge-gui/res/cardsfolder/i/inferno_fist.txt +++ b/forge-gui/res/cardsfolder/i/inferno_fist.txt @@ -4,6 +4,6 @@ Types:Enchantment Aura K:Enchant creature you control A:SP$ Attach | Cost$ 1 R | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | AILogic$ Pump S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 2 | Description$ Enchanted creature gets +2/+0. -A:AB$ DealDamage | Cost$ R Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:AB$ DealDamage | Cost$ R Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/inferno_fist.jpg -Oracle:Enchant creature you control\nEnchanted creature gets +2/+0.\n{R}, Sacrifice Inferno Fist: Inferno Fist deals 2 damage to target creature or player. +Oracle:Enchant creature you control\nEnchanted creature gets +2/+0.\n{R}, Sacrifice Inferno Fist: Inferno Fist deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/i/inferno_hellion.txt b/forge-gui/res/cardsfolder/i/inferno_hellion.txt new file mode 100644 index 00000000000..4fe88d505aa --- /dev/null +++ b/forge-gui/res/cardsfolder/i/inferno_hellion.txt @@ -0,0 +1,8 @@ +Name:Inferno Hellion +ManaCost:3 R +Types:Creature Hellion +K:Trample +T:Mode$ Phase | TriggerZones$ Battlefield | Phase$ End of Turn | Execute$ TrigChangeZone | TriggerDescription$ At the beginning of each end step, if CARDNAME attacked or blocked this turn, its owner shuffles it into their library. +SVar:TrigChangeZone:DB$ ChangeZone | ConditionPresent$ Card.Self+attackedThisTurn,Card.Self+blockedThisTurn | ConditionCompare$ GE1 | ValidCard$ Card.Self | Origin$ Battlefield | Destination$ Library | Shuffle$ True +Oracle:Trample (This creature can deal excess combat damage to the player or planeswalker it's attacking.)\nAt the beginning of each end step, if Inferno Hellion attacked or blocked this turn, its owner shuffles it into their library. +PT:7/3 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/i/inferno_jet.txt b/forge-gui/res/cardsfolder/i/inferno_jet.txt index ee3f8f6668d..846ff1ec1d2 100644 --- a/forge-gui/res/cardsfolder/i/inferno_jet.txt +++ b/forge-gui/res/cardsfolder/i/inferno_jet.txt @@ -1,7 +1,7 @@ Name:Inferno Jet ManaCost:5 R Types:Sorcery -A:SP$ DealDamage | Cost$ 5 R | ValidTgts$ Opponent | NumDmg$ 6 | SpellDescription$ CARDNAME deals 6 damage to target opponent. +A:SP$ DealDamage | Cost$ 5 R | ValidTgts$ Opponent,Planeswalker | NumDmg$ 6 | SpellDescription$ CARDNAME deals 6 damage to target opponent or planeswalker. K:Cycling:2 SVar:Picture:http://www.wizards.com/global/images/magic/general/inferno_jet.jpg -Oracle:Inferno Jet deals 6 damage to target opponent.\nCycling {2} ({2}, Discard this card: Draw a card.) \ No newline at end of file +Oracle:Inferno Jet deals 6 damage to target opponent or planeswalker.\nCycling {2} ({2}, Discard this card: Draw a card.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/i/inferno_titan.txt b/forge-gui/res/cardsfolder/i/inferno_titan.txt index 85b509c7ce5..9f736c39cd6 100644 --- a/forge-gui/res/cardsfolder/i/inferno_titan.txt +++ b/forge-gui/res/cardsfolder/i/inferno_titan.txt @@ -3,9 +3,9 @@ ManaCost:4 R R Types:Creature Giant PT:6/6 A:AB$ Pump | Cost$ R | NumAtt$ +1 | SpellDescription$ CARDNAME gets +1/+0 until end of turn. -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ DmgDistro | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, it deals 3 damage divided as you choose among one, two, or three target creatures and/or players. -T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ DmgDistro | Secondary$ True | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, it deals 3 damage divided as you choose among one, two, or three target creatures and/or players. -SVar:DmgDistro:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to distribute damage to | NumDmg$ 3 | TargetMin$ 1 | TargetMax$ 3 | DividedAsYouChoose$ 3 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ DmgDistro | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, it deals 3 damage divided as you choose among one, two, or three targets. +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ DmgDistro | Secondary$ True | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, it deals 3 damage divided as you choose among one, two, or three targets. +SVar:DmgDistro:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to distribute damage to | NumDmg$ 3 | TargetMin$ 1 | TargetMax$ 3 | DividedAsYouChoose$ 3 SVar:HasAttackEffect:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/inferno_titan.jpg -Oracle:{R}: Inferno Titan gets +1/+0 until end of turn.\nWhenever Inferno Titan enters the battlefield or attacks, it deals 3 damage divided as you choose among one, two, or three target creatures and/or players. +Oracle:{R}: Inferno Titan gets +1/+0 until end of turn.\nWhenever Inferno Titan enters the battlefield or attacks, it deals 3 damage divided as you choose among one, two, or three targets. diff --git a/forge-gui/res/cardsfolder/i/inner_chamber_guard.txt b/forge-gui/res/cardsfolder/i/inner_chamber_guard.txt index 99d6a410da8..fe93f729a18 100644 --- a/forge-gui/res/cardsfolder/i/inner_chamber_guard.txt +++ b/forge-gui/res/cardsfolder/i/inner_chamber_guard.txt @@ -2,6 +2,6 @@ Name:Inner-Chamber Guard ManaCost:1 W Types:Creature Human Samurai PT:0/2 -K:Bushido 2 +K:Bushido:2 SVar:Picture:http://www.wizards.com/global/images/magic/general/inner_chamber_guard.jpg Oracle:Bushido 2 (When this blocks or becomes blocked, it gets +2/+2 until end of turn.) diff --git a/forge-gui/res/cardsfolder/i/inner_demon.txt b/forge-gui/res/cardsfolder/i/inner_demon.txt new file mode 100644 index 00000000000..89e4236cf93 --- /dev/null +++ b/forge-gui/res/cardsfolder/i/inner_demon.txt @@ -0,0 +1,9 @@ +Name:Inner Demon +ManaCost:2 B B +Types:Enchantment Aura +K:Enchant creature +A:SP$ Attach | Cost$ 2 B B | ValidTgts$ Creature | AILogic$ Pump +S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 2 | AddToughness$ 2 | AddKeyword$ Flying | AddType$ Demon | Description$ Enchanted creature gets +2/+2, has flying, and is a Demon in addition to its other types. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPumpAll | TriggerDescription$ When CARDNAME enters the battlefield, all other creatures get -2/-2 until end of turn. +SVar:TrigPumpAll:DB$ PumpAll | NumAtt$ -2 | NumDef$ -2 | ValidCards$ Creature.nonDemon | IsCurse$ True +Oracle:Enchant creature\nEnchanted creature gets +2/+2, has flying, and is a Demon in addition to its other types.\nWhen Inner Demon enters the battlefield, all non-Demon creatures get -2/-2 until end of turn. diff --git a/forge-gui/res/cardsfolder/i/insult_injury.txt b/forge-gui/res/cardsfolder/i/insult_injury.txt index 99f2a66c884..d6af7d08b16 100644 --- a/forge-gui/res/cardsfolder/i/insult_injury.txt +++ b/forge-gui/res/cardsfolder/i/insult_injury.txt @@ -17,6 +17,6 @@ Name:Injury ManaCost:2 R Types:Sorcery K:Aftermath -A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 2 | SubAbility$ DBDealDamage | SpellDescription$ CARDNAME deals 2 damage to target creature and 2 damage to target player. -SVar:DBDealDamage:DB$ DealDamage | NumDmg$ 2 | ValidTgts$ Player | TgtPrompt$ Select target player -Oracle:Aftermath (Cast this spell only from your graveyard. Then exile it.)\nInjury deals 2 damage to target creature and 2 damage to target player. +A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 2 | SubAbility$ DBDealDamage | SpellDescription$ CARDNAME deals 2 damage to target creature and 2 damage to target player or planeswalker. +SVar:DBDealDamage:DB$ DealDamage | NumDmg$ 2 | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker +Oracle:Aftermath (Cast this spell only from your graveyard. Then exile it.)\nInjury deals 2 damage to target creature and 2 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/i/invoke_the_divine.txt b/forge-gui/res/cardsfolder/i/invoke_the_divine.txt index 31428fdc4f4..1ccd65831c6 100644 --- a/forge-gui/res/cardsfolder/i/invoke_the_divine.txt +++ b/forge-gui/res/cardsfolder/i/invoke_the_divine.txt @@ -3,5 +3,6 @@ ManaCost:2 W Types:Instant A:SP$ Destroy | Cost$ 2 W | ValidTgts$ Artifact,Enchantment | TgtPrompt$ Select target artifact or enchantment | SubAbility$ NaturalLife | SpellDescription$ Destroy target artifact or enchantment. You gain 4 life. SVar:NaturalLife:DB$GainLife | Defined$ You | LifeAmount$ 4 +DeckHas:Ability$LifeGain SVar:Picture:http://www.wizards.com/global/images/magic/general/invoke_the_divine.jpg Oracle:Destroy target artifact or enchantment. You gain 4 life. diff --git a/forge-gui/res/cardsfolder/i/invoke_the_firemind.txt b/forge-gui/res/cardsfolder/i/invoke_the_firemind.txt index 2355a288cc7..92fb75ade0a 100644 --- a/forge-gui/res/cardsfolder/i/invoke_the_firemind.txt +++ b/forge-gui/res/cardsfolder/i/invoke_the_firemind.txt @@ -3,7 +3,7 @@ ManaCost:X U U R Types:Sorcery A:SP$ Charm | Cost$ X U U R | Choices$ DBDraw,DBDmg | CharmNum$ 1 SVar:DBDraw:DB$ Draw | NumCards$ X | References$ X | SpellDescription$ Draw X cards. -SVar:DBDmg:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to target creature or player. +SVar:DBDmg:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to any target. SVar:X:Count$xPaid SVar:Picture:http://www.wizards.com/global/images/magic/general/invoke_the_firemind.jpg -Oracle:Choose one —\n• Draw X cards.\n• Invoke the Firemind deals X damage to target creature or player. +Oracle:Choose one —\n• Draw X cards.\n• Invoke the Firemind deals X damage to any target. diff --git a/forge-gui/res/cardsfolder/i/ion_storm.txt b/forge-gui/res/cardsfolder/i/ion_storm.txt index d8e117fa978..9bc7237cbf8 100644 --- a/forge-gui/res/cardsfolder/i/ion_storm.txt +++ b/forge-gui/res/cardsfolder/i/ion_storm.txt @@ -1,9 +1,9 @@ Name:Ion Storm ManaCost:2 R Types:Enchantment -A:AB$ DealDamage | Cost$ 1 R SubCounter<1/P1P1/Permanent/permanent you control> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. -A:AB$ DealDamage | Cost$ 1 R SubCounter<1/CHARGE/Permanent/permanent you control> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:AB$ DealDamage | Cost$ 1 R SubCounter<1/P1P1/Permanent/permanent you control> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. +A:AB$ DealDamage | Cost$ 1 R SubCounter<1/CHARGE/Permanent/permanent you control> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:RemRandomDeck:True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/ion_storm.jpg -Oracle:{1}{R}, Remove a +1/+1 counter or a charge counter from a permanent you control: Ion Storm deals 2 damage to target creature or player. +Oracle:{1}{R}, Remove a +1/+1 counter or a charge counter from a permanent you control: Ion Storm deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/i/ire_of_kaminari.txt b/forge-gui/res/cardsfolder/i/ire_of_kaminari.txt index 6466ca138f6..345d9dc0e9b 100644 --- a/forge-gui/res/cardsfolder/i/ire_of_kaminari.txt +++ b/forge-gui/res/cardsfolder/i/ire_of_kaminari.txt @@ -1,9 +1,9 @@ Name:Ire of Kaminari ManaCost:3 R Types:Instant Arcane -A:SP$ DealDamage | Cost$ 3 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ Ire of Kaminari deals damage to target creature or player equal to the number of Arcane cards in your graveyard. +A:SP$ DealDamage | Cost$ 3 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ Ire of Kaminari deals damage to any target equal to the number of Arcane cards in your graveyard. SVar:X:Count$TypeInYourYard.Arcane SVar:RemRandomDeck:True DeckHints:Type$Arcane SVar:Picture:http://www.wizards.com/global/images/magic/general/ire_of_kaminari.jpg -Oracle:Ire of Kaminari deals damage to target creature or player equal to the number of Arcane cards in your graveyard. +Oracle:Ire of Kaminari deals damage to any target equal to the number of Arcane cards in your graveyard. diff --git a/forge-gui/res/cardsfolder/i/isao_enlightened_bushi.txt b/forge-gui/res/cardsfolder/i/isao_enlightened_bushi.txt index 319f5460aeb..7e1e14265d7 100644 --- a/forge-gui/res/cardsfolder/i/isao_enlightened_bushi.txt +++ b/forge-gui/res/cardsfolder/i/isao_enlightened_bushi.txt @@ -3,7 +3,7 @@ ManaCost:2 G Types:Legendary Creature Human Samurai PT:2/1 K:CARDNAME can't be countered. -K:Bushido 2 +K:Bushido:2 A:AB$ Regenerate | Cost$ 2 | ValidTgts$ Samurai | TgtPrompt$ Select target Samurai. | SpellDescription$ Regenerate target Samurai. DeckHints:Type$Samurai SVar:Picture:http://www.wizards.com/global/images/magic/general/isao_enlightened_bushi.jpg diff --git a/forge-gui/res/cardsfolder/i/isareth_the_awakener.txt b/forge-gui/res/cardsfolder/i/isareth_the_awakener.txt new file mode 100644 index 00000000000..33cee6ea334 --- /dev/null +++ b/forge-gui/res/cardsfolder/i/isareth_the_awakener.txt @@ -0,0 +1,11 @@ +Name:Isareth the Awakener +ManaCost:1 B B +Types:Legendary Creature Human Wizard +K:Deathtouch +PT:3/3 +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigChange | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME attacks, you may pay {X}. If you do, return target creature card with converted mana cost X from your graveyard to the battlefield with a corpse counter on it. If that creature would leave the battlefield, exile it instead of putting it anywhere else. +SVar:TrigChange:AB$ ChangeZone | Cost$ X | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Creature.YouOwn | TgtPromp$ Choose target creature with CMC equal to X. | References$ X | RememberTargets$ True | AILogic$ BeforeCombat | SubAbility$ DBPump |SpellDescription$ Return target creature card with converted mana cost X from your graveyard to the battlefield. +SVar:DBPump:DB$ Pump | Defined$ Remembered | LeaveBattlefield$ Exile +SVar:X:Targeted$CardManaCost +SVar:HasAttackEffect:TRUE +Oracle:Deathtouch\nWhenever Isareth the Awakener attacks, you may pay {X}. If you do, return target creature card with converted mana cost X from your graveyard to the battlefield with a corpse counter on it. If that creature would leave the battlefield, exile it instead of putting it anywhere else. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/i/isolate.txt b/forge-gui/res/cardsfolder/i/isolate.txt new file mode 100644 index 00000000000..cee289095ad --- /dev/null +++ b/forge-gui/res/cardsfolder/i/isolate.txt @@ -0,0 +1,5 @@ +Name:Isolate +ManaCost:W +Types:Instant +A:SP$ ChangeZone | Cost$ W | ValidTgts$ Permanent.cmcEQ1 | TgtPrompt$ Select target permanent with converted mana cost 1 | Origin$ Battlefield | Destination$ Exile | SpellDescription$ Exile target permanent with converted mana cost 1. +Oracle:Exile target permanent with converted mana cost 1. diff --git a/forge-gui/res/cardsfolder/i/ivory_charm.txt b/forge-gui/res/cardsfolder/i/ivory_charm.txt index bfa5ff9ebd0..c703086b595 100644 --- a/forge-gui/res/cardsfolder/i/ivory_charm.txt +++ b/forge-gui/res/cardsfolder/i/ivory_charm.txt @@ -4,7 +4,7 @@ Types:Instant A:SP$ Charm | Cost$ W | Choices$ PumpAll,Tap,Prevent | CharmNum$ 1 SVar:PumpAll:DB$ PumpAll | ValidCards$ Creature | NumAtt$ -2 | IsCurse$ True | SpellDescription$ All creatures get -2/-0 until end of turn. SVar:Tap:DB$ Tap | ValidTgts$ Creature | TgtPrompt$ Select target creature | SpellDescription$ Tap target creature. -SVar:Prevent:DB$ PreventDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to target creature or player this turn. +SVar:Prevent:DB$ PreventDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to any target this turn. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/ivory_charm.jpg -Oracle:Choose one —\n• All creatures get -2/-0 until end of turn.\n• Tap target creature.\n• Prevent the next 1 damage that would be dealt to target creature or player this turn. +Oracle:Choose one —\n• All creatures get -2/-0 until end of turn.\n• Tap target creature.\n• Prevent the next 1 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/j/jace_vryns_prodigy.txt b/forge-gui/res/cardsfolder/j/jace_vryns_prodigy.txt index 8f7bb9cbf40..d72fb8aa11d 100644 --- a/forge-gui/res/cardsfolder/j/jace_vryns_prodigy.txt +++ b/forge-gui/res/cardsfolder/j/jace_vryns_prodigy.txt @@ -5,7 +5,7 @@ PT:0/2 A:AB$ Draw | Cost$ T | NumCards$ 1 | SubAbility$ DBDiscard | StackDescription$ SpellDescription | SpellDescription$ Draw a card, then discard a card. If there are five or more cards in your graveyard, exile CARDNAME, then return him to the battefield transformed under his owner's control. SVar:DBDiscard:DB$ Discard | Defined$ You | NumCards$ 1 | Mode$ TgtChoose | SubAbility$ DBExile | StackDescription$ None SVar:DBExile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | ConditionCheckSVar$ X | References$ X | ConditionSVarCompare$ GE5 | SubAbility$ DBReturn | StackDescription$ None -SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | Transformed$ True | WithCounters$ LOYALTY_5 | ForgetOtherRemembered$ True | SubAbility$ DBCleanup | StackDescription$ None +SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | Transformed$ True | ForgetOtherRemembered$ True | SubAbility$ DBCleanup | StackDescription$ None SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Count$ValidGraveyard Card.YouOwn SVar:Picture:http://www.wizards.com/global/images/magic/general/jace_vryns_prodigy.jpg diff --git a/forge-gui/res/cardsfolder/j/jaws_of_stone.txt b/forge-gui/res/cardsfolder/j/jaws_of_stone.txt index 8eb2a70b3e7..7b5968a28ef 100644 --- a/forge-gui/res/cardsfolder/j/jaws_of_stone.txt +++ b/forge-gui/res/cardsfolder/j/jaws_of_stone.txt @@ -1,10 +1,10 @@ Name:Jaws of Stone ManaCost:5 R Types:Sorcery -A:SP$ DealDamage | Cost$ 5 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to distribute damage to | NumDmg$ OrigMountains | TargetMin$ Min | TargetMax$ OrigMountains | References$ Min,OrigMountains | DividedAsYouChoose$ OrigMountains | SpellDescription$ CARDNAME deals X damage divided as you choose among any number of target creatures and/or players, where X is the number of Mountains you control as you cast CARDNAME. +A:SP$ DealDamage | Cost$ 5 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to distribute damage to | NumDmg$ OrigMountains | TargetMin$ Min | TargetMax$ OrigMountains | References$ Min,OrigMountains | DividedAsYouChoose$ OrigMountains | SpellDescription$ CARDNAME deals X damage divided as you choose among any number of targets, where X is the number of Mountains you control as you cast CARDNAME. T:Mode$ SpellCast | ValidCard$ Card.Self | Static$ True | Execute$ CountMountainsAtCast SVar:CountMountainsAtCast:DB$ StoreSVar | SVar$ OrigMountains | Type$ Count | Expression$ Valid Mountain.YouCtrl SVar:OrigMountains:Count$Valid Mountain.YouCtrl SVar:Min:SVar$OrigMountains/LimitMax.1 SVar:Picture:http://www.wizards.com/global/images/magic/general/jaws_of_stone.jpg -Oracle:Jaws of Stone deals X damage divided as you choose among any number of target creatures and/or players, where X is the number of Mountains you control as you cast Jaws of Stone. +Oracle:Jaws of Stone deals X damage divided as you choose among any number of targets, where X is the number of Mountains you control as you cast Jaws of Stone. diff --git a/forge-gui/res/cardsfolder/j/jaya_ballard_avatar.txt b/forge-gui/res/cardsfolder/j/jaya_ballard_avatar.txt index 898eb975a95..55c9913031c 100644 --- a/forge-gui/res/cardsfolder/j/jaya_ballard_avatar.txt +++ b/forge-gui/res/cardsfolder/j/jaya_ballard_avatar.txt @@ -2,8 +2,8 @@ Name:Jaya Ballard Avatar ManaCost:no cost Types:Vanguard HandLifeModifier:+0/+1 -A:AB$ DealDamage | ActivationZone$ Command | Cost$ X | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ Y | References$ X,Y | ActivationLimit$ 1 | StackDescription$ SpellDescription | SpellDescription$ CARDNAME deals an amount of damage chosen at random from 0 to X to target creature or player. Activate this ability only once each turn. +A:AB$ DealDamage | ActivationZone$ Command | Cost$ X | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ Y | References$ X,Y | ActivationLimit$ 1 | StackDescription$ SpellDescription | SpellDescription$ CARDNAME deals an amount of damage chosen at random from 0 to X to any target. Activate this ability only once each turn. SVar:X:Count$xPaid SVar:Y:Count$Random.0.X SVar:Picture:https://downloads.cardforge.org/images/cards/VAN/Jaya Ballard Avatar.full.jpg -Oracle:Hand +0, life +1\n{X}: Jaya Ballard Avatar deals an amount of damage chosen at random from 0 to X to target creature or player. Activate this ability only once each turn. +Oracle:Hand +0, life +1\n{X}: Jaya Ballard Avatar deals an amount of damage chosen at random from 0 to X to any target. Activate this ability only once each turn. diff --git a/forge-gui/res/cardsfolder/j/jaya_ballard_task_mage.txt b/forge-gui/res/cardsfolder/j/jaya_ballard_task_mage.txt index f54307b90b0..01d6e2d622f 100644 --- a/forge-gui/res/cardsfolder/j/jaya_ballard_task_mage.txt +++ b/forge-gui/res/cardsfolder/j/jaya_ballard_task_mage.txt @@ -3,8 +3,8 @@ ManaCost:1 R R Types:Legendary Creature Human Spellshaper PT:2/2 A:AB$ Destroy | Cost$ R T Discard<1/Card> | ValidTgts$ Permanent.Blue | TgtPrompt$ Select target blue permanent | SpellDescription$ Destroy target blue permanent. -A:AB$ DealDamage | Cost$ 1 R T Discard<1/Card> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SubAbility$ DBNoRegen | SpellDescription$ CARDNAME deals 3 damage to target creature or player. A creature dealt damage this way can't be regenerated this turn. +A:AB$ DealDamage | Cost$ 1 R T Discard<1/Card> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SubAbility$ DBNoRegen | SpellDescription$ CARDNAME deals 3 damage to target creature or player. A creature dealt damage this way can't be regenerated this turn. A:AB$ DamageAll | Cost$ 5 R R T Discard<1/Card> | NumDmg$ 6 | ValidPlayers$ Player | ValidCards$ Creature | ValidDescription$ each creature and each player. | SpellDescription$ CARDNAME deals 6 damage to each creature and each player. SVar:DBNoRegen:DB$Pump | KW$ HIDDEN CARDNAME can't be regenerated. | Defined$ Targeted SVar:Picture:http://www.wizards.com/global/images/magic/general/jaya_ballard_task_mage.jpg -Oracle:{R}, {T}, Discard a card: Destroy target blue permanent.\n{1}{R}, {T}, Discard a card: Jaya Ballard, Task Mage deals 3 damage to target creature or player. A creature dealt damage this way can't be regenerated this turn.\n{5}{R}{R}, {T}, Discard a card: Jaya Ballard deals 6 damage to each creature and each player. +Oracle:{R}, {T}, Discard a card: Destroy target blue permanent.\n{1}{R}, {T}, Discard a card: Jaya Ballard, Task Mage deals 3 damage to any target. A creature dealt damage this way can't be regenerated this turn.\n{5}{R}{R}, {T}, Discard a card: Jaya Ballard deals 6 damage to each creature and each player. diff --git a/forge-gui/res/cardsfolder/j/jayas_immolating_inferno.txt b/forge-gui/res/cardsfolder/j/jayas_immolating_inferno.txt index dfca1a515ed..f835b8d2eb3 100644 --- a/forge-gui/res/cardsfolder/j/jayas_immolating_inferno.txt +++ b/forge-gui/res/cardsfolder/j/jayas_immolating_inferno.txt @@ -1,6 +1,6 @@ Name:Jaya's Immolating Inferno ManaCost:X R R Types:Legendary Sorcery -A:SP$ DealDamage | Cost$ X R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select target creature, player or planeswalker | TargetMin$ 0 | TargetMax$ 3 | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to each of up to three targets. +A:SP$ DealDamage | Cost$ X R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | TargetMin$ 0 | TargetMax$ 3 | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to each of up to three targets. SVar:X:Count$xPaid Oracle:(You may cast a legendary sorcery only if you control a legendary creature or planeswalker.) Jaya's Immolating Inferno deals X damage to each of up to three targets. diff --git a/forge-gui/res/cardsfolder/j/jeska_warrior_adept.txt b/forge-gui/res/cardsfolder/j/jeska_warrior_adept.txt index 232b526b54f..66dcfc99e2e 100644 --- a/forge-gui/res/cardsfolder/j/jeska_warrior_adept.txt +++ b/forge-gui/res/cardsfolder/j/jeska_warrior_adept.txt @@ -4,6 +4,6 @@ Types:Legendary Creature Human Barbarian Warrior PT:3/1 K:First Strike K:Haste -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/jeska_warrior_adept.jpg -Oracle:First strike, haste\n{T}: Jeska, Warrior Adept deals 1 damage to target creature or player. +Oracle:First strike, haste\n{T}: Jeska, Warrior Adept deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/j/jeskai_charm.txt b/forge-gui/res/cardsfolder/j/jeskai_charm.txt index c7649c06aaf..4ed076122ae 100644 --- a/forge-gui/res/cardsfolder/j/jeskai_charm.txt +++ b/forge-gui/res/cardsfolder/j/jeskai_charm.txt @@ -3,7 +3,7 @@ ManaCost:U R W Types:Instant A:SP$ Charm | Cost$ U R W | Choices$ ChangeZone,DealDmg,PumpAll | CharmNum$ 1 SVar:ChangeZone:DB$ ChangeZone | ValidTgts$ Creature | TgtPrompt$ Select target creature | Origin$ Battlefield | Destination$ Library | LibraryPosition$ 0 | SpellDescription$ Put target creature on top of its owner's library. -SVar:DealDmg:DB$ DealDamage | ValidTgts$ Opponent | AILogic$ ChoiceBurn | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target opponent. +SVar:DealDmg:DB$ DealDamage | ValidTgts$ Opponent,Planeswalker | AILogic$ ChoiceBurn | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target opponent or planeswalker. SVar:PumpAll:DB$ PumpAll | ValidCards$ Creature.YouCtrl | NumAtt$ +1 | NumDef$ +1 | KW$ Lifelink | SpellDescription$ Creatures you control get +1/+1 and gain lifelink until end of turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/jeskai_charm.jpg -Oracle:Choose one —\n• Put target creature on top of its owner's library.\n• Jeskai Charm deals 4 damage to target opponent.\n• Creatures you control get +1/+1 and gain lifelink until end of turn. +Oracle:Choose one —\n• Put target creature on top of its owner's library.\n• Jeskai Charm deals 4 damage to target opponent or planeswalker.\n• Creatures you control get +1/+1 and gain lifelink until end of turn. diff --git a/forge-gui/res/cardsfolder/j/jhessian_balmgiver.txt b/forge-gui/res/cardsfolder/j/jhessian_balmgiver.txt index 3ecf64017ed..d27bb49a6bf 100644 --- a/forge-gui/res/cardsfolder/j/jhessian_balmgiver.txt +++ b/forge-gui/res/cardsfolder/j/jhessian_balmgiver.txt @@ -2,7 +2,7 @@ Name:Jhessian Balmgiver ManaCost:1 W U Types:Creature Human Cleric PT:1/1 -A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to any target this turn. A:AB$ Pump | Cost$ T | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ HIDDEN Unblockable | SpellDescription$ Target creature can't be blocked this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/jhessian_balmgiver.jpg -Oracle:{T}: Prevent the next 1 damage that would be dealt to target creature or player this turn.\n{T}: Target creature can't be blocked this turn. +Oracle:{T}: Prevent the next 1 damage that would be dealt to any target this turn.\n{T}: Target creature can't be blocked this turn. diff --git a/forge-gui/res/cardsfolder/j/jiang_yanggu.txt b/forge-gui/res/cardsfolder/j/jiang_yanggu.txt new file mode 100644 index 00000000000..118f61dcf47 --- /dev/null +++ b/forge-gui/res/cardsfolder/j/jiang_yanggu.txt @@ -0,0 +1,9 @@ +Name:Jiang Yanggu +ManaCost:4 G +Loyalty:4 +Types:Legendary Planeswalker Yanggu +A:AB$ Pump | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +2 | NumDef$ +2 | SpellDescription$ Target creature gets +2/+2 until end of turn. +A:AB$ Token | Cost$ SubCounter<1/LOYALTY> | Planeswalker$ True | TokenAmount$ 1 | TokenName$ Mowu | TokenTypes$ Legendary,Creature,Hound | TokenOwner$ You | TokenColors$ Green | TokenPower$ 3 | TokenToughness$ 3 | TokenImage$ mowu gs1 | TokenAltImages$ mowu2_gs1 | SpellDescription$ If you don't control a creature named Mowu, create a legendary 3/3 green Hound creature token named Mowu. | IsPresent$ Creature.YouCtrl+namedMowu | PresentCompare$ EQ0 +A:AB$ Pump | Cost$ SubCounter<5/LOYALTY> | Planeswalker$ True | Ultimate$ True | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +X | NumDef$ +X | References$ X | KW$ Trample | SpellDescription$ Until end of turn, target creature gains trample and gets +X/+X, where X is the number of lands you control. +SVar:X:Count$TypeYouCtrl.Land +Oracle:[+1]: Target creature gets +2/+2 until end of turn.\n[-1]: If you don't control a creature named Mowu, create a legendary 3/3 green Hound creature token named Mowu.\n[-5]: Until end of turn, target creature gains trample and gets +X/+X, where X is the number of lands you control. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/j/jinx.txt b/forge-gui/res/cardsfolder/j/jinx.txt index f8f8790b812..3d467dd07f1 100644 --- a/forge-gui/res/cardsfolder/j/jinx.txt +++ b/forge-gui/res/cardsfolder/j/jinx.txt @@ -2,7 +2,7 @@ Name:Jinx ManaCost:1 U Types:Instant A:SP$ ChooseType | Cost$ 1 U | Defined$ You | Type$ Basic Land | SubAbility$ DBAnimate | SpellDescription$ Target land becomes the basic land type of your choice until end of turn. Draw a card at the beginning of the next turn's upkeep. -SVar:DBAnimate:DB$ Animate | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ ChosenType | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | RemoveAllAbilities$ True | SubAbility$ DelTrigSlowtrip +SVar:DBAnimate:DB$ Animate | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ ChosenType | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True | SubAbility$ DelTrigSlowtrip SVar:DelTrigSlowtrip:DB$ DelayedTrigger | Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Player | Execute$ DrawSlowtrip | TriggerDescription$ Draw a card. SVar:DrawSlowtrip:DB$Draw | NumCards$ 1 | Defined$ You SVar:RemAIDeck:True diff --git a/forge-gui/res/cardsfolder/j/journey_for_the_elixir.txt b/forge-gui/res/cardsfolder/j/journey_for_the_elixir.txt new file mode 100644 index 00000000000..dab66c536db --- /dev/null +++ b/forge-gui/res/cardsfolder/j/journey_for_the_elixir.txt @@ -0,0 +1,7 @@ +Name:Journey for the Elixir +ManaCost:2 G +Types:Sorcery +A:SP$ ChangeZone | Cost$ 2 G | Origin$ Library,Graveyard | Destination$ Hand | ChangeType$ Land.Basic | ChangeNum$ 1 | Shuffle$ False | SubAbility$ DBSearch1 | SpellDescription$ Search your library and graveyard for a basic land card and a card named Jiang Yanggu, reveal them, put them into your hand, then shuffle your library. +SVar:DBSearch1:DB$ ChangeZone | Origin$ Library,Graveyard | Destination$ Hand | ChangeType$ Card.namedJiang Yanggu | ChangeNum$ 1 +DeckNeeds:Name$Jiang Yanggu +Oracle:Search your library and graveyard for a basic land card and a card named Jiang Yanggu, reveal them, put them into your hand, then shuffle your library. diff --git a/forge-gui/res/cardsfolder/j/jovens_tools.txt b/forge-gui/res/cardsfolder/j/jovens_tools.txt index 0fd9eb92912..3972c4ad433 100644 --- a/forge-gui/res/cardsfolder/j/jovens_tools.txt +++ b/forge-gui/res/cardsfolder/j/jovens_tools.txt @@ -2,6 +2,6 @@ Name:Joven's Tools ManaCost:6 Types:Artifact A:AB$ Effect | Cost$ 4 T | ValidTgts$ Creature | TgtPrompt$ Select target creature | RememberObjects$ Targeted | Name$ Joven's Tools' Effect | StaticAbilities$ KWPump | SpellDescription$ Target creature can't be blocked this turn except by Walls. -SVar:KWPump:Mode$ CantBlockBy | ValidAttacker$ Creature.Remembered | ValidBlocker$ Creature.nonWall | EffectZone$ Command | Description$ Remembered creature can't be blocked this turn except by Walls. +SVar:KWPump:Mode$ CantBlockBy | ValidAttacker$ Creature.IsRemembered | ValidBlocker$ Creature.nonWall | EffectZone$ Command | Description$ Remembered creature can't be blocked this turn except by Walls. SVar:Picture:http://www.wizards.com/global/images/magic/general/jovens_tools.jpg Oracle:{4}, {T}: Target creature can't be blocked this turn except by Walls. diff --git a/forge-gui/res/cardsfolder/j/jubilant_mascot.txt b/forge-gui/res/cardsfolder/j/jubilant_mascot.txt new file mode 100644 index 00000000000..604cb59e0c7 --- /dev/null +++ b/forge-gui/res/cardsfolder/j/jubilant_mascot.txt @@ -0,0 +1,7 @@ +Name:Jubilant Mascot +ManaCost:2 W +Types:Creature Homunculus +PT:1/1 +T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of combat on your turn, you may pay {3}{W}. If you do, support 2. (Put a +1/+1 counter on each of up to two other target creatures.) +SVar:TrigPutCounter:AB$ PutCounter | Cost$ 3 W | ValidTgts$ Creature.Other | TgtPrompt$ Select target creature other than CARDNAME | TargetMin$ 0 | TargetMax$ 2 | CounterType$ P1P1 | CounterNum$ 1 +Oracle:At the beginning of combat on your turn, you may pay {3}{W}. If you do, support 2. (Put a +1/+1 counter on each of up to two other target creatures.) diff --git a/forge-gui/res/cardsfolder/j/jund_sojourners.txt b/forge-gui/res/cardsfolder/j/jund_sojourners.txt index fd6c6c15dc7..3b15e9ef871 100644 --- a/forge-gui/res/cardsfolder/j/jund_sojourners.txt +++ b/forge-gui/res/cardsfolder/j/jund_sojourners.txt @@ -3,8 +3,8 @@ ManaCost:B R G Types:Creature Viashino Shaman PT:3/2 K:Cycling:2 R -T:Mode$ Cycled | ValidCard$ Card.Self | Execute$ TrigDamage | OptionalDecider$ You | TriggerDescription$ When you cycle CARDNAME or it dies, you may have it deal 1 damage to target creature or player. -T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigDamage | OptionalDecider$ You | Secondary$ True | TriggerDescription$ When you cycle CARDNAME or it dies, you may have it deal 1 damage to target creature or player. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 +T:Mode$ Cycled | ValidCard$ Card.Self | Execute$ TrigDamage | OptionalDecider$ You | TriggerDescription$ When you cycle CARDNAME or it dies, you may have it deal 1 damage to any target. +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigDamage | OptionalDecider$ You | Secondary$ True | TriggerDescription$ When you cycle CARDNAME or it dies, you may have it deal 1 damage to any target. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/jund_sojourners.jpg -Oracle:When you cycle Jund Sojourners or it dies, you may have it deal 1 damage to target creature or player.\nCycling {2}{R} ({2}{R}, Discard this card: Draw a card.) +Oracle:When you cycle Jund Sojourners or it dies, you may have it deal 1 damage to any target.\nCycling {2}{R} ({2}{R}, Discard this card: Draw a card.) diff --git a/forge-gui/res/cardsfolder/j/jungle_wayfinder.txt b/forge-gui/res/cardsfolder/j/jungle_wayfinder.txt new file mode 100644 index 00000000000..5df51866622 --- /dev/null +++ b/forge-gui/res/cardsfolder/j/jungle_wayfinder.txt @@ -0,0 +1,7 @@ +Name:Jungle Wayfinder +ManaCost:2 G +Types:Creature Elf Warrior +PT:3/3 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChange | TriggerDescription$ When CARDNAME enters the battlefield, each player may search their library for a basic land card, reveal it, put it into their hand, then shuffle their library. +SVar:TrigChange:DB$ChangeZone | Optional$ True | Origin$ Library | Destination$ Hand | ChangeType$ Land.Basic | DefinedPlayer$ Player | ChangeNum$ 1 | ShuffleNonMandatory$ True +Oracle:When Jungle Wayfinder enters the battlefield, each player may search their library for a basic land card, reveal it, put it into their hand, then shuffle their library. diff --git a/forge-gui/res/cardsfolder/j/jwari_shapeshifter.txt b/forge-gui/res/cardsfolder/j/jwari_shapeshifter.txt index 67c1f8416a5..7f577e6cf89 100644 --- a/forge-gui/res/cardsfolder/j/jwari_shapeshifter.txt +++ b/forge-gui/res/cardsfolder/j/jwari_shapeshifter.txt @@ -2,9 +2,8 @@ Name:Jwari Shapeshifter ManaCost:1 U Types:Creature Shapeshifter Ally PT:0/0 -K:ETBReplacement:Copy:ChooseCreature:Optional -SVar:ChooseCreature:DB$ ChooseCard | Defined$ You | Amount$ 1 | Choices$ Creature.Ally+Other | SubAbility$ DBCopy | RememberChosen$ True | AILogic$ Clone | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of any Ally creature on the battlefield. -SVar:DBCopy:DB$ Clone | Defined$ Remembered +K:ETBReplacement:Copy:DBCopy:Optional +SVar:DBCopy:DB$ Clone | Choices$ Creature.Ally+Other | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of any Ally creature on the battlefield. SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/jwari_shapeshifter.jpg Oracle:You may have Jwari Shapeshifter enter the battlefield as a copy of any Ally creature on the battlefield. diff --git a/forge-gui/res/cardsfolder/k/kaervek_the_merciless.txt b/forge-gui/res/cardsfolder/k/kaervek_the_merciless.txt index 44800083277..1673684035f 100644 --- a/forge-gui/res/cardsfolder/k/kaervek_the_merciless.txt +++ b/forge-gui/res/cardsfolder/k/kaervek_the_merciless.txt @@ -2,8 +2,8 @@ Name:Kaervek the Merciless ManaCost:5 B R Types:Legendary Creature Human Shaman PT:5/4 -T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ Opponent | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever an opponent casts a spell, CARDNAME deals damage to target creature or player equal to that spell's converted mana cost. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X +T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ Opponent | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever an opponent casts a spell, CARDNAME deals damage to any target equal to that spell's converted mana cost. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X SVar:X:TriggerCount$CastSACMC SVar:Picture:http://www.wizards.com/global/images/magic/general/kaervek_the_merciless.jpg -Oracle:Whenever an opponent casts a spell, Kaervek the Merciless deals damage to target creature or player equal to that spell's converted mana cost. \ No newline at end of file +Oracle:Whenever an opponent casts a spell, Kaervek the Merciless deals damage to any target equal to that spell's converted mana cost. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/k/kaerveks_torch.txt b/forge-gui/res/cardsfolder/k/kaerveks_torch.txt index ba0f04e7f79..c25f4a53674 100644 --- a/forge-gui/res/cardsfolder/k/kaerveks_torch.txt +++ b/forge-gui/res/cardsfolder/k/kaerveks_torch.txt @@ -1,8 +1,8 @@ Name:Kaervek's Torch ManaCost:X R Types:Sorcery -A:SP$ DealDamage | Cost$ X R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to target creature or player. +A:SP$ DealDamage | Cost$ X R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to any target. S:Mode$ RaiseCost | ValidSpellTarget$ Card.Self | Activator$ Player | Type$ Spell | Amount$ 2 | EffectZone$ Stack | Description$ As long as CARDNAME is on the stack, spells that target it cost {2} more to cast. SVar:X:Count$xPaid SVar:Picture:http://www.wizards.com/global/images/magic/general/kaerveks_torch.jpg -Oracle:As long as Kaervek's Torch is on the stack, spells that target it cost {2} more to cast.\nKaervek's Torch deals X damage to target creature or player. +Oracle:As long as Kaervek's Torch is on the stack, spells that target it cost {2} more to cast.\nKaervek's Torch deals X damage to any target. diff --git a/forge-gui/res/cardsfolder/k/kamahl_pit_fighter.txt b/forge-gui/res/cardsfolder/k/kamahl_pit_fighter.txt index 6b8c0ae4a2d..a159ad3a3d0 100644 --- a/forge-gui/res/cardsfolder/k/kamahl_pit_fighter.txt +++ b/forge-gui/res/cardsfolder/k/kamahl_pit_fighter.txt @@ -3,6 +3,6 @@ ManaCost:4 R R Types:Legendary Creature Human Barbarian PT:6/1 K:Haste -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/kamahl_pit_fighter.jpg -Oracle:Haste\n{T}: Kamahl, Pit Fighter deals 3 damage to target creature or player. +Oracle:Haste\n{T}: Kamahl, Pit Fighter deals 3 damage to any target. diff --git a/forge-gui/res/cardsfolder/k/kargan_dragonrider.txt b/forge-gui/res/cardsfolder/k/kargan_dragonrider.txt new file mode 100644 index 00000000000..6e522dceb71 --- /dev/null +++ b/forge-gui/res/cardsfolder/k/kargan_dragonrider.txt @@ -0,0 +1,8 @@ +Name:Kargan Dragonrider +ManaCost:1 R +Types:Creature Human Warrior +PT:2/2 +S:Mode$ Continuous | Affected$ Card.Self | AddKeyword$ Flying | IsPresent$ Dragon.YouCtrl | Description$ As long as you control a Dragon, CARDNAME has flying. (It can’t be blocked except by creatures with flying or reach.) +SVar:BuffedBy:Dragon +DeckHints:Type$Dragon +Oracle:As long as you control a Dragon, Kargan Dragonrider has flying. (It can’t be blocked except by creatures with flying or reach.) diff --git a/forge-gui/res/cardsfolder/k/karn_scion_of_urza.txt b/forge-gui/res/cardsfolder/k/karn_scion_of_urza.txt index 8821b790340..d57e2ba04ac 100644 --- a/forge-gui/res/cardsfolder/k/karn_scion_of_urza.txt +++ b/forge-gui/res/cardsfolder/k/karn_scion_of_urza.txt @@ -3,7 +3,7 @@ ManaCost:4 Types:Legendary Planeswalker Karn Loyalty:5 A:AB$ Dig | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | DigNum$ 2 | Reveal$ True | ChangeNum$ 1 | ChangeValid$ Card | DestinationZone$ Hand | DestinationZone2$ Exile | ExileWithCounter$ SILVER | Choser$ Opponent | SpellDescription$ Reveal the top two cards of your library. An opponent chooses one of them. Put that card into your hand and exile the other with a silver counter on it. -A:AB$ ChangeZone | Cost$ SubCounter<1/LOYALTY> | Planeswalker$ True | Hidden$ True | Origin$ Exile | Destination$ Hand | ChangeType$ Card.YouOwn+counters_GE1_SILVER | SpellDescription$ Put a card you own with a silver counter on it from exile into your hand. +A:AB$ ChangeZone | Cost$ SubCounter<1/LOYALTY> | Planeswalker$ True | Hidden$ True | Origin$ Exile | Destination$ Hand | ChangeType$ Card.YouOwn+counters_GE1_SILVER | StackDescription$ SpellDescription | SpellDescription$ Put a card you own with a silver counter on it from exile into your hand. A:AB$ Token | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | Ultimate$ True | TokenName$ Construct | TokenTypes$ Artifact,Creature,Construct | TokenOwner$ You | TokenColors$ Colorless | TokenPower$ 0 | TokenToughness$ 0 | TokenStaticAbilities$ TokenPT | TokenSVars$ X | References$ X | TokenImage$ c 0 0 construct DOM | SpellDescription$ Create a 0/0 colorless Construct artifact creature token with "This creature gets +1/+1 for each artifact you control." SVar:TokenPT:Mode$ Continuous | Affected$ Card.Self | AddPower$ X | AddToughness$ X | Description$ This creature gets +1/+1 for each artifact you control. SVar:X:Count$Valid Artifact.YouCtrl diff --git a/forge-gui/res/cardsfolder/k/karplusan_hound.txt b/forge-gui/res/cardsfolder/k/karplusan_hound.txt index f520a7fb17c..70286c6291a 100644 --- a/forge-gui/res/cardsfolder/k/karplusan_hound.txt +++ b/forge-gui/res/cardsfolder/k/karplusan_hound.txt @@ -3,7 +3,7 @@ ManaCost:3 R Types:Creature Hound PT:3/3 T:Mode$ Attacks | ValidCard$ Card.Self | CheckSVar$ X | SVarCompare$ GE1 | Execute$ DBDealDamage | TriggerDescription$ Whenever CARDNAME attacks, if you control a Chandra planeswalker, this creature deals 2 damage to any target. -SVar:DBDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | NumDmg$ 2 | TgtPrompt$ Select target creature, player or planeswalker +SVar:DBDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | NumDmg$ 2 | TgtPrompt$ Select any target SVar:X:Count$Valid Planeswalker.Chandra+YouCtrl SVar:BuffedBy:Chandra Oracle:Whenever Karplusan Hound attacks, if you control a Chandra planeswalker, this creature deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/k/karplusan_minotaur.txt b/forge-gui/res/cardsfolder/k/karplusan_minotaur.txt index 2d3f31b4427..9a7a616f3bf 100644 --- a/forge-gui/res/cardsfolder/k/karplusan_minotaur.txt +++ b/forge-gui/res/cardsfolder/k/karplusan_minotaur.txt @@ -3,10 +3,10 @@ ManaCost:2 R R Types:Creature Minotaur Warrior PT:3/3 K:Cumulative upkeep:FlipCoin<1>:Flip a coin. -T:Mode$ FlippedCoin | ValidPlayer$ You | ValidResult$ Win | TriggerZones$ Battlefield | Execute$ TrigYouDmg | TriggerDescription$ Whenever you win a coin flip, CARDNAME deals 1 damage to target creature or player. -SVar:TrigYouDmg:DB$ DealDamage | NumDmg$ 1 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player -T:Mode$ FlippedCoin | ValidPlayer$ You | ValidResult$ Lose | TriggerZones$ Battlefield | Execute$ TrigOppDmg | TriggerDescription$ Whenever you lose a coin flip, CARDNAME deals 1 damage to target creature or player of an opponent's choice. -SVar:TrigOppDmg:DB$ DealDamage | NumDmg$ 1 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | TargetingPlayer$ Opponent +T:Mode$ FlippedCoin | ValidPlayer$ You | ValidResult$ Win | TriggerZones$ Battlefield | Execute$ TrigYouDmg | TriggerDescription$ Whenever you win a coin flip, CARDNAME deals 1 damage to any target. +SVar:TrigYouDmg:DB$ DealDamage | NumDmg$ 1 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target +T:Mode$ FlippedCoin | ValidPlayer$ You | ValidResult$ Lose | TriggerZones$ Battlefield | Execute$ TrigOppDmg | TriggerDescription$ Whenever you lose a coin flip, CARDNAME deals 1 damage to any target of an opponent's choice. +SVar:TrigOppDmg:DB$ DealDamage | NumDmg$ 1 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | TargetingPlayer$ Opponent SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/karplusan_minotaur.jpg -Oracle:Cumulative upkeep—Flip a coin. (At the beginning of your upkeep, put an age counter on this permanent, then sacrifice it unless you pay its upkeep cost for each age counter on it.)\nWhenever you win a coin flip, Karplusan Minotaur deals 1 damage to target creature or player.\nWhenever you lose a coin flip, Karplusan Minotaur deals 1 damage to target creature or player of an opponent's choice. +Oracle:Cumulative upkeep—Flip a coin. (At the beginning of your upkeep, put an age counter on this permanent, then sacrifice it unless you pay its upkeep cost for each age counter on it.)\nWhenever you win a coin flip, Karplusan Minotaur deals 1 damage to any target.\nWhenever you lose a coin flip, Karplusan Minotaur deals 1 damage to any target of an opponent's choice. diff --git a/forge-gui/res/cardsfolder/k/karplusan_wolverine.txt b/forge-gui/res/cardsfolder/k/karplusan_wolverine.txt index 00ec257a1a6..e74ac9a706f 100644 --- a/forge-gui/res/cardsfolder/k/karplusan_wolverine.txt +++ b/forge-gui/res/cardsfolder/k/karplusan_wolverine.txt @@ -2,8 +2,8 @@ Name:Karplusan Wolverine ManaCost:R Types:Snow Creature Wolverine Beast PT:1/1 -T:Mode$ AttackerBlocked | ValidCard$ Card.Self | OptionalDecider$ You | Execute$ TrigDealDamage | TriggerDescription$ Whenever CARDNAME becomes blocked, you may have it deal 1 damage to target creature or player. -SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 +T:Mode$ AttackerBlocked | ValidCard$ Card.Self | OptionalDecider$ You | Execute$ TrigDealDamage | TriggerDescription$ Whenever CARDNAME becomes blocked, you may have it deal 1 damage to any target. +SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 SVar:HasAttackEffect:Blocked SVar:Picture:http://www.wizards.com/global/images/magic/general/karplusan_wolverine.jpg -Oracle:Whenever Karplusan Wolverine becomes blocked, you may have it deal 1 damage to target creature or player. +Oracle:Whenever Karplusan Wolverine becomes blocked, you may have it deal 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/k/kavu_recluse.txt b/forge-gui/res/cardsfolder/k/kavu_recluse.txt index 27ce81172c4..b5b208fc5bf 100644 --- a/forge-gui/res/cardsfolder/k/kavu_recluse.txt +++ b/forge-gui/res/cardsfolder/k/kavu_recluse.txt @@ -2,7 +2,7 @@ Name:Kavu Recluse ManaCost:2 R Types:Creature Kavu PT:2/2 -A:AB$Animate | Cost$ T | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ Forest | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | RemoveAllAbilities$ True | SpellDescription$ Target land becomes a Forest until end of turn. +A:AB$Animate | Cost$ T | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ Forest | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True | SpellDescription$ Target land becomes a Forest until end of turn. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/kavu_recluse.jpg Oracle:{T}: Target land becomes a Forest until end of turn. diff --git a/forge-gui/res/cardsfolder/k/keldon_champion.txt b/forge-gui/res/cardsfolder/k/keldon_champion.txt index db74e64bd5a..b0540c00062 100644 --- a/forge-gui/res/cardsfolder/k/keldon_champion.txt +++ b/forge-gui/res/cardsfolder/k/keldon_champion.txt @@ -4,7 +4,7 @@ Types:Creature Human Barbarian PT:3/2 K:Haste K:Echo:2 R R -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 3 damage to target player. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 3 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 3 damage to target player or planeswalker. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 3 SVar:Picture:http://www.wizards.com/global/images/magic/general/keldon_champion.jpg -Oracle:Haste\nEcho {2}{R}{R} (At the beginning of your upkeep, if this came under your control since the beginning of your last upkeep, sacrifice it unless you pay its echo cost.)\nWhen Keldon Champion enters the battlefield, it deals 3 damage to target player. +Oracle:Haste\nEcho {2}{R}{R} (At the beginning of your upkeep, if this came under your control since the beginning of your last upkeep, sacrifice it unless you pay its echo cost.)\nWhen Keldon Champion enters the battlefield, it deals 3 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/k/keldon_marauders.txt b/forge-gui/res/cardsfolder/k/keldon_marauders.txt index ead4bcf871d..5d804e8a7f0 100644 --- a/forge-gui/res/cardsfolder/k/keldon_marauders.txt +++ b/forge-gui/res/cardsfolder/k/keldon_marauders.txt @@ -3,8 +3,8 @@ ManaCost:1 R Types:Creature Human Warrior PT:3/3 K:Vanishing:2 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 1 damage to target player. -T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME leaves the battlefield, it deals 1 damage to target player. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 1 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 1 damage to target player or planeswalker. +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME leaves the battlefield, it deals 1 damage to target player or planeswalker. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/keldon_marauders.jpg -Oracle:Vanishing 2 (This permanent enters the battlefield with two time counters on it. At the beginning of your upkeep, remove a time counter from it. When the last is removed, sacrifice it.)\nWhen Keldon Marauders enters the battlefield or leaves the battlefield, it deals 1 damage to target player. +Oracle:Vanishing 2 (This permanent enters the battlefield with two time counters on it. At the beginning of your upkeep, remove a time counter from it. When the last is removed, sacrifice it.)\nWhen Keldon Marauders enters the battlefield or leaves the battlefield, it deals 1 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/k/keldon_megaliths.txt b/forge-gui/res/cardsfolder/k/keldon_megaliths.txt index fb5a00caf92..8d77079a30f 100644 --- a/forge-gui/res/cardsfolder/k/keldon_megaliths.txt +++ b/forge-gui/res/cardsfolder/k/keldon_megaliths.txt @@ -3,6 +3,6 @@ ManaCost:no cost Types:Land K:CARDNAME enters the battlefield tapped. A:AB$ Mana | Cost$ T | Produced$ R | SpellDescription$ Add {R}. -A:AB$ DealDamage | Cost$ 1 R T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | Activation$ Hellbent | PrecostDesc$ Hellbent — | SpellDescription$ CARDNAME deals 1 damage to target creature or player. Activate this ability only if you have no cards in hand. +A:AB$ DealDamage | Cost$ 1 R T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | Activation$ Hellbent | PrecostDesc$ Hellbent — | SpellDescription$ CARDNAME deals 1 damage to any target. Activate this ability only if you have no cards in hand. SVar:Picture:http://www.wizards.com/global/images/magic/general/keldon_megaliths.jpg -Oracle:Keldon Megaliths enters the battlefield tapped.\n{T}: Add {R}.\nHellbent — {1}{R}, {T}: Keldon Megaliths deals 1 damage to target creature or player. Activate this ability only if you have no cards in hand. +Oracle:Keldon Megaliths enters the battlefield tapped.\n{T}: Add {R}.\nHellbent — {1}{R}, {T}: Keldon Megaliths deals 1 damage to any target. Activate this ability only if you have no cards in hand. diff --git a/forge-gui/res/cardsfolder/k/keldon_necropolis.txt b/forge-gui/res/cardsfolder/k/keldon_necropolis.txt index 9130f23850c..d9e791cf40a 100644 --- a/forge-gui/res/cardsfolder/k/keldon_necropolis.txt +++ b/forge-gui/res/cardsfolder/k/keldon_necropolis.txt @@ -2,7 +2,7 @@ Name:Keldon Necropolis ManaCost:no cost Types:Legendary Land A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}. -A:AB$ DealDamage | Cost$ 4 R T Sac<1/Creature> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:AB$ DealDamage | Cost$ 4 R T Sac<1/Creature> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/keldon_necropolis.jpg -Oracle:{T}: Add {C}.\n{4}{R}, {T}, Sacrifice a creature: Keldon Necropolis deals 2 damage to target creature or player. +Oracle:{T}: Add {C}.\n{4}{R}, {T}, Sacrifice a creature: Keldon Necropolis deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/k/kentaro_the_smiling_cat.txt b/forge-gui/res/cardsfolder/k/kentaro_the_smiling_cat.txt index d661956754a..03757801b39 100644 --- a/forge-gui/res/cardsfolder/k/kentaro_the_smiling_cat.txt +++ b/forge-gui/res/cardsfolder/k/kentaro_the_smiling_cat.txt @@ -2,7 +2,7 @@ Name:Kentaro, the Smiling Cat ManaCost:1 W Types:Legendary Creature Human Samurai PT:2/1 -K:Bushido 1 +K:Bushido:1 S:Mode$ Continuous | Affected$ Card.Samurai+YouCtrl | AddKeyword$ Alternative Cost:ConvertedManaCost | AffectedZone$ Hand,Graveyard,Exile,Library,Command | Description$ You may pay {X} rather than pay the mana cost for Samurai spells you cast, where X is that spell's converted mana cost. SVar:Picture:http://www.wizards.com/global/images/magic/general/kentaro_the_smiling_cat.jpg Oracle:Bushido 1 (When this blocks or becomes blocked, it gets +1/+1 until end of turn.)\nYou may pay {X} rather than pay the mana cost for Samurai spells you cast, where X is that spell's converted mana cost. diff --git a/forge-gui/res/cardsfolder/k/keranos_god_of_storms.txt b/forge-gui/res/cardsfolder/k/keranos_god_of_storms.txt index a8d3e110cca..98ed104ec45 100644 --- a/forge-gui/res/cardsfolder/k/keranos_god_of_storms.txt +++ b/forge-gui/res/cardsfolder/k/keranos_god_of_storms.txt @@ -8,8 +8,8 @@ SVar:X:Count$DevotionDual.Blue.Red K:Reveal the first card you draw on each of your turns T:Mode$ Drawn | ValidCard$ Card.Land+YouCtrl | PlayerTurn$ True | TriggerZones$ Battlefield | Number$ 1 | Execute$ TrigDraw | TriggerDescription$ Whenever you reveal a land card this way, draw a card. SVar:TrigDraw:DB$ Draw | NumCards$ 1 -T:Mode$ Drawn | ValidCard$ Card.nonLand+YouCtrl | PlayerTurn$ True | TriggerZones$ Battlefield | Number$ 1 | Execute$ TrigDmg | TriggerDescription$ Whenever you reveal a nonland card this way, Keranos deals 3 damage to target creature or player. -SVar:TrigDmg:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 +T:Mode$ Drawn | ValidCard$ Card.nonLand+YouCtrl | PlayerTurn$ True | TriggerZones$ Battlefield | Number$ 1 | Execute$ TrigDmg | TriggerDescription$ Whenever you reveal a nonland card this way, Keranos deals 3 damage to any target. +SVar:TrigDmg:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 SVar:BuffedBy:Permanent.Blue,Permanent.Red SVar:Picture:http://www.wizards.com/global/images/magic/general/keranos_god_of_storms.jpg -Oracle:Indestructible\nAs long as your devotion to blue and red is less than seven, Keranos isn't a creature.\nReveal the first card you draw on each of your turns. Whenever you reveal a land card this way, draw a card. Whenever you reveal a nonland card this way, Keranos deals 3 damage to target creature or player. +Oracle:Indestructible\nAs long as your devotion to blue and red is less than seven, Keranos isn't a creature.\nReveal the first card you draw on each of your turns. Whenever you reveal a land card this way, draw a card. Whenever you reveal a nonland card this way, Keranos deals 3 damage to any target. diff --git a/forge-gui/res/cardsfolder/k/kessig_forgemaster_flameheart_werewolf.txt b/forge-gui/res/cardsfolder/k/kessig_forgemaster_flameheart_werewolf.txt index f7bae04e526..78b0a5bce20 100644 --- a/forge-gui/res/cardsfolder/k/kessig_forgemaster_flameheart_werewolf.txt +++ b/forge-gui/res/cardsfolder/k/kessig_forgemaster_flameheart_werewolf.txt @@ -4,8 +4,8 @@ Types:Creature Human Shaman Werewolf PT:2/1 T:Mode$ AttackerBlockedByCreature | ValidCard$ Creature | ValidBlocker$ Card.Self | Execute$ TrigDamageAttacker | TriggerDescription$ Whenever CARDNAME blocks or becomes blocked by a creature, CARDNAME deals 1 damage to that creature. T:Mode$ AttackerBlockedByCreature | ValidCard$ Card.Self | ValidBlocker$ Creature | Execute$ TrigDamageBlocker | Secondary$ True | TriggerDescription$ Whenever CARDNAME blocks or becomes blocked by a creature, CARDNAME deals 1 damage to that creature. -SVar:TrigDamageAttacker:DB$ DealDamage | Defined$ TriggeredAttacker | NumDmg$ 1 -SVar:TrigDamageBlocker:DB$ DealDamage | Defined$ TriggeredBlocker | NumDmg$ 1 +SVar:TrigDamageAttacker:DB$ DealDamage | Defined$ TriggeredAttackerLKICopy | NumDmg$ 1 +SVar:TrigDamageBlocker:DB$ DealDamage | Defined$ TriggeredBlockerLKICopy | NumDmg$ 1 T:Mode$Phase | Phase$ Upkeep | WerewolfTransformCondition$ True | TriggerZones$ Battlefield | Execute$ TrigTransform | TriggerDescription$ At the beginning of each upkeep, if no spells were cast last turn, transform CARDNAME. SVar:TrigTransform:DB$SetState | Defined$ Self | Mode$ Transform AlternateMode:DoubleFaced @@ -21,8 +21,8 @@ Types:Creature Werewolf PT:3/2 T:Mode$ AttackerBlockedByCreature | ValidCard$ Creature | ValidBlocker$ Card.Self | Execute$ TrigDamageAttacker | TriggerDescription$ Whenever CARDNAME blocks or becomes blocked by a creature, CARDNAME deals 2 damage to that creature. T:Mode$ AttackerBlockedByCreature | ValidCard$ Card.Self | ValidBlocker$ Creature | Execute$ TrigDamageBlocker | Secondary$ True | TriggerDescription$ Whenever CARDNAME blocks or becomes blocked by a creature, CARDNAME deals 2 damage to that creature. -SVar:TrigDamageAttacker:DB$ DealDamage | Defined$ TriggeredAttacker | NumDmg$ 2 -SVar:TrigDamageBlocker:DB$ DealDamage | Defined$ TriggeredBlocker | NumDmg$ 2 +SVar:TrigDamageAttacker:DB$ DealDamage | Defined$ TriggeredAttackerLKICopy | NumDmg$ 2 +SVar:TrigDamageBlocker:DB$ DealDamage | Defined$ TriggeredBlockerLKICopy | NumDmg$ 2 T:Mode$Phase | Phase$ Upkeep | WerewolfUntransformCondition$ True | TriggerZones$ Battlefield | Execute$ TrigTransform | TriggerDescription$ At the beginning of each upkeep, if a player cast two or more spells last turn, transform CARDNAME. SVar:TrigTransform:DB$SetState | Defined$ Self | Mode$ Transform SVar:Picture:http://www.wizards.com/global/images/magic/general/flameheart_werewolf.jpg diff --git a/forge-gui/res/cardsfolder/k/kessig_malcontents.txt b/forge-gui/res/cardsfolder/k/kessig_malcontents.txt index 2380f77ce07..a85802ca453 100644 --- a/forge-gui/res/cardsfolder/k/kessig_malcontents.txt +++ b/forge-gui/res/cardsfolder/k/kessig_malcontents.txt @@ -2,8 +2,8 @@ Name:Kessig Malcontents ManaCost:2 R Types:Creature Human Warrior PT:3/1 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TroubleMaking | TriggerDescription$ When CARDNAME enters the battlefield, it deals damage to target player equal to the number of Humans you control. -SVar:TroubleMaking:DB$DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ X | References$ X +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TroubleMaking | TriggerDescription$ When CARDNAME enters the battlefield, it deals damage to target player or planeswalker equal to the number of Humans you control. +SVar:TroubleMaking:DB$DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ X | References$ X SVar:X:Count$Valid Human.YouCtrl SVar:Picture:http://www.wizards.com/global/images/magic/general/kessig_malcontents.jpg -Oracle:When Kessig Malcontents enters the battlefield, it deals damage to target player equal to the number of Humans you control. +Oracle:When Kessig Malcontents enters the battlefield, it deals damage to target player or planeswalker equal to the number of Humans you control. diff --git a/forge-gui/res/cardsfolder/k/kestia_the_cultivator.txt b/forge-gui/res/cardsfolder/k/kestia_the_cultivator.txt new file mode 100644 index 00000000000..90a1bcdecde --- /dev/null +++ b/forge-gui/res/cardsfolder/k/kestia_the_cultivator.txt @@ -0,0 +1,9 @@ +Name:Kestia, the Cultivator +ManaCost:1 G W U +Types:Legendary Enchantment Creature Nymph +PT:4/4 +K:Bestow:3 G W U +S:Mode$ Continuous | Affected$ Card.AttachedBy | AddPower$ 4 | AddToughness$ 4 | Description$ Enchanted creature gets +4/+4. +T:Mode$ Attacks | ValidCard$ Creature.enchanted+YouCtrl,Creature.Enchantment+YouCtrl | Execute$ TrigDraw | TriggerZones$ Battlefield | TriggerDescription$ Whenever an enchanted creature or enchantment creature you control attacks, draw a card. +SVar:TrigDraw:DB$ Draw | NumCards$ 1 +Oracle:Bestow {3}{G}{W}{U}\nEnchanted creature gets +4/+4.\nWhenever an enchanted creature or enchantment creature you control attacks, draw a card. diff --git a/forge-gui/res/cardsfolder/k/khenra_eternal.txt b/forge-gui/res/cardsfolder/k/khenra_eternal.txt index 29ed7a20564..8e2432bc716 100644 --- a/forge-gui/res/cardsfolder/k/khenra_eternal.txt +++ b/forge-gui/res/cardsfolder/k/khenra_eternal.txt @@ -2,6 +2,6 @@ Name:Khenra Eternal ManaCost:1 B Types:Creature Zombie Jackal Warrior PT:2/2 -K:Afflict 1 +K:Afflict:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/khenra_eternal.jpg Oracle:Afflict 1 (Whenever this creature becomes blocked, defending player loses 1 life.) diff --git a/forge-gui/res/cardsfolder/k/khorvath_brightflame.txt b/forge-gui/res/cardsfolder/k/khorvath_brightflame.txt new file mode 100644 index 00000000000..f32a231d8fc --- /dev/null +++ b/forge-gui/res/cardsfolder/k/khorvath_brightflame.txt @@ -0,0 +1,11 @@ +Name:Khorvath Brightflame +ManaCost:5 R +Types:Legendary Creature Dragon +PT:3/4 +K:Partner:Sylvia Brightspear:Sylvia +K:Flying +K:Haste +S:Mode$ Continuous | Affected$ Knight.YourTeamCtrl | AddKeyword$ Flying & Haste | Description$ Knights your team controls have flying and haste. +DeckHints:Name$Sylvia Brightspear +SVar:Picture:http://www.wizards.com/global/images/magic/general/khorvath_brightflame.jpg +Oracle:Partner with Sylvia Brightspear (When this creature enters the battlefield, target player may put Sylvia into their hand from their library, then shuffle.)\nFlying, haste\nKnights your team controls have flying and haste. diff --git a/forge-gui/res/cardsfolder/k/khorvaths_fury.txt b/forge-gui/res/cardsfolder/k/khorvaths_fury.txt new file mode 100644 index 00000000000..88a9bcf369f --- /dev/null +++ b/forge-gui/res/cardsfolder/k/khorvaths_fury.txt @@ -0,0 +1,16 @@ +Name:Khorvath's Fury +ManaCost:4 R +Types:Sorcery +A:SP$ AssignGroup | Cost$ 4 R | Defined$ Player | Choices$ FriendRepeat,FoeRepeat | AILogic$ FriendOrFoe | SpellDescription$ For each player, choose friend or foe. Each friend discards all cards from their hand, then draws that many cards plus one. CARDNAME deals damage to each foe equal to the number of cards in their hand. +SVar:FriendRepeat:DB$ RepeatEach | RepeatPlayers$ Remembered | ClearRememberedBeforeLoop$ True | RepeatSubAbility$ DBDiscard | StackDescription$ SpellDescription | SpellDescription$ Each friend discards all cards from their hand, then draws that many cards plus one. +SVar:DBDiscard:DB$ Discard | Defined$ Player.IsRemembered | Mode$ Hand | RememberDiscarded$ True | SubAbility$ DBDraw +SVar:DBDraw:DB$ Draw | NumCards$ X | Defined$ Player.IsRemembered | References$ X | SubAbility$ DBCleanup +SVar:FoeRepeat:DB$ RepeatEach | RepeatPlayers$ Remembered | ClearRememberedBeforeLoop$ True | RepeatSubAbility$ DBDmg | DamageMap$ True | StackDescription$ SpellDescription | SpellDescription$ CARDNAME deals damage to each foe equal to the number of cards in their hand. +SVar:DBDmg:DB$ DealDamage | Defined$ Player.IsRemembered | NumDmg$ Y | References$ Y +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:Remembered$Amount.Plus.1 +SVar:Y:Count$ValidHand Card.RememberedPlayerCtrl +SVar:NeedsToPlayVar:Z GE4 +SVar:Z:Count$ValidHand Card.OppCtrl +SVar:Picture:http://www.wizards.com/global/images/magic/general/khorvaths_fury.jpg +Oracle:For each player, choose friend or foe. Each friend discards all cards from their hand, then draws that many cards plus one. Khorvath's Fury deals damage to each foe equal to the number of cards in their hand. diff --git a/forge-gui/res/cardsfolder/k/kilnmouth_dragon.txt b/forge-gui/res/cardsfolder/k/kilnmouth_dragon.txt index 8ac740237a7..a1846ecaad7 100644 --- a/forge-gui/res/cardsfolder/k/kilnmouth_dragon.txt +++ b/forge-gui/res/cardsfolder/k/kilnmouth_dragon.txt @@ -4,7 +4,7 @@ Types:Creature Dragon PT:5/5 K:Amplify:3:Dragon K:Flying -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to the number of +1/+1 counters on it to target creature or player. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to the number of +1/+1 counters on it to any target. SVar:X:Count$CardCounters.P1P1 SVar:Picture:http://www.wizards.com/global/images/magic/general/kilnmouth_dragon.jpg -Oracle:Amplify 3 (As this creature enters the battlefield, put three +1/+1 counters on it for each Dragon card you reveal in your hand.)\nFlying\n{T}: Kilnmouth Dragon deals damage equal to the number of +1/+1 counters on it to target creature or player. +Oracle:Amplify 3 (As this creature enters the battlefield, put three +1/+1 counters on it for each Dragon card you reveal in your hand.)\nFlying\n{T}: Kilnmouth Dragon deals damage equal to the number of +1/+1 counters on it to any target. diff --git a/forge-gui/res/cardsfolder/k/kilnspire_district.txt b/forge-gui/res/cardsfolder/k/kilnspire_district.txt index 0d52c9219f5..5080b53087b 100644 --- a/forge-gui/res/cardsfolder/k/kilnspire_district.txt +++ b/forge-gui/res/cardsfolder/k/kilnspire_district.txt @@ -5,11 +5,11 @@ T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | TriggerZones$ Command | Execute$ T:Mode$ Phase | Phase$ Main1 | PreCombatMain$ True | ValidPlayer$ You | TriggerZones$ Command | Execute$ PutCounter | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your precombat main phase, put a charge counter on CARDNAME, then add {R} for each charge counter on it. SVar:PutCounter:DB$PutCounter | Defined$ Self | CounterType$ CHARGE | CounterNum$ 1 | SubAbility$ DBMana SVar:DBMana:DB$ Mana | Produced$ R | Amount$ Y | References$ Y -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ DBPay | TriggerDescription$ Whenever you roll {CHAOS}, you may pay {X}. If you do, CARDNAME deals X damage to target creature or player. +T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ DBPay | TriggerDescription$ Whenever you roll {CHAOS}, you may pay {X}. If you do, CARDNAME deals X damage to any target. SVar:DBPay:DB$ ChooseNumber | Defined$ TriggeredPlayer | ChooseAnyNumber$ True | ListTitle$ X to pay | SubAbility$ RolledChaos -SVar:RolledChaos:DB$ DealDamage | UnlessCost$ ChosenNumber | UnlessPayer$ TriggeredPlayer | UnlessSwitched$ True | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ PaidChaos | References$ PaidChaos +SVar:RolledChaos:DB$ DealDamage | UnlessCost$ ChosenNumber | UnlessPayer$ TriggeredPlayer | UnlessSwitched$ True | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ PaidChaos | References$ PaidChaos SVar:PaidChaos:Count$ChosenNumber SVar:Y:Count$CardCounters.CHARGE SVar:AIRollPlanarDieParams:Mode$ Always SVar:Picture:http://www.wizards.com/global/images/magic/general/kilnspire_district.jpg -Oracle:When you planeswalk to Kilnspire District or at the beginning of your precombat main phase, put a charge counter on Kilnspire District, then add {R} for each charge counter on it.\nWhenever you roll {CHAOS}, you may pay {X}. If you do, Kilnspire District deals X damage to target creature or player. +Oracle:When you planeswalk to Kilnspire District or at the beginning of your precombat main phase, put a charge counter on Kilnspire District, then add {R} for each charge counter on it.\nWhenever you roll {CHAOS}, you may pay {X}. If you do, Kilnspire District deals X damage to any target. diff --git a/forge-gui/res/cardsfolder/k/kindle.txt b/forge-gui/res/cardsfolder/k/kindle.txt index adfaf460cb4..ced6d331f71 100644 --- a/forge-gui/res/cardsfolder/k/kindle.txt +++ b/forge-gui/res/cardsfolder/k/kindle.txt @@ -1,8 +1,8 @@ Name:Kindle ManaCost:1 R Types:Instant -A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to target creature or player, where X is 2 plus the number of cards named Kindle in all graveyards. +A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to any target, where X is 2 plus the number of cards named Kindle in all graveyards. SVar:X:Count$NamedInAllYards.Kindle/Plus.2 DeckHints:Name$Kindle SVar:Picture:http://www.wizards.com/global/images/magic/general/kindle.jpg -Oracle:Kindle deals X damage to target creature or player, where X is 2 plus the number of cards named Kindle in all graveyards. +Oracle:Kindle deals X damage to any target, where X is 2 plus the number of cards named Kindle in all graveyards. diff --git a/forge-gui/res/cardsfolder/k/kiora_master_of_the_depths.txt b/forge-gui/res/cardsfolder/k/kiora_master_of_the_depths.txt index f8897d01030..bf336f86a17 100644 --- a/forge-gui/res/cardsfolder/k/kiora_master_of_the_depths.txt +++ b/forge-gui/res/cardsfolder/k/kiora_master_of_the_depths.txt @@ -7,7 +7,7 @@ SVar:DBUntap:DB$ Untap | ValidTgts$ Land | TgtPrompt$ Choose target land | Targe A:AB$ Dig | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | DigNum$ 4 | Reveal$ True | ChangeNum$ 2 | ChangeValid$ Creature | AndOrValid$ Land | DestinationZone2$ Graveyard | Optional$ True | SpellDescription$ Reveal the top four cards of your library. You may put a creature card and/or a land card from among them into your hand. Put the rest into your graveyard. A:AB$ Effect | Cost$ SubCounter<8/LOYALTY> | Planeswalker$ True | Ultimate$ True | Name$ Emblem - Kiora, Master of the Depths | Image$ emblem_kiora_master_of_the_depths | Triggers$ TrigFight | SVars$ DBFight | Duration$ Permanent | AILogic$ Always | SubAbility$ DBToken | SpellDescription$ You get an emblem with "Whenever a creature enters the battlefield under your control, you may have it fight target creature." Then create three 8/8 blue Octopus creature tokens. SVar:TrigFight:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.YouCtrl | Execute$ DBFight | OptionalDecider$ You | TriggerZones$ Command | TriggerDescription$ Whenever a creature enters the battlefield under your control, you may have it fight target creature. -SVar:DBFight:DB$ Fight | Defined$ TriggeredCard | ValidTgts$ Creature | TgtPrompt$ Choose target creature +SVar:DBFight:DB$ Fight | Defined$ TriggeredCardLKICopy | ValidTgts$ Creature | TgtPrompt$ Choose target creature SVar:DBToken:DB$ Token | TokenAmount$ 3 | TokenName$ Octopus | TokenTypes$ Creature,Octopus | TokenOwner$ You | TokenColors$ Blue | TokenPower$ 8 | TokenToughness$ 8 SVar:Picture:http://www.wizards.com/global/images/magic/general/kiora_master_of_the_depths.jpg -Oracle:[+1]: Untap up to one target creature and up to one target land.\n[-2]: Reveal the top four cards of your library. You may put a creature card and/or a land card from among them into your hand. Put the rest into your graveyard.\n[-8]: You get an emblem with "Whenever a creature enters the battlefield under your control, you may have it fight target creature." Then create three 8/8 blue Octopus creature tokens. \ No newline at end of file +Oracle:[+1]: Untap up to one target creature and up to one target land.\n[-2]: Reveal the top four cards of your library. You may put a creature card and/or a land card from among them into your hand. Put the rest into your graveyard.\n[-8]: You get an emblem with "Whenever a creature enters the battlefield under your control, you may have it fight target creature." Then create three 8/8 blue Octopus creature tokens. diff --git a/forge-gui/res/cardsfolder/k/kiss_of_death.txt b/forge-gui/res/cardsfolder/k/kiss_of_death.txt index d375fe2da87..4ac8a59d38b 100644 --- a/forge-gui/res/cardsfolder/k/kiss_of_death.txt +++ b/forge-gui/res/cardsfolder/k/kiss_of_death.txt @@ -1,7 +1,7 @@ Name:Kiss of Death ManaCost:4 B B Types:Sorcery -A:SP$ DealDamage | Cost$ 4 B B | ValidTgts$ Opponent | NumDmg$ 4 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 4 damage to target opponent. You gain 4 life. +A:SP$ DealDamage | Cost$ 4 B B | ValidTgts$ Opponent,Planeswalker | NumDmg$ 4 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 4 damage to target opponent or planeswalker. You gain 4 life. SVar:DBGainLife:DB$GainLife | LifeAmount$ 4 SVar:Picture:http://serv2.tcgimages.eu/img/cards/Portal_Second_Age/kiss_of_death.jpg -Oracle:Kiss of Death deals 4 damage to target opponent. You gain 4 life. +Oracle:Kiss of Death deals 4 damage to target opponent or planeswalker. You gain 4 life. diff --git a/forge-gui/res/cardsfolder/k/kithkin_healer.txt b/forge-gui/res/cardsfolder/k/kithkin_healer.txt index dcd1e78bf8e..83697e2f0a7 100644 --- a/forge-gui/res/cardsfolder/k/kithkin_healer.txt +++ b/forge-gui/res/cardsfolder/k/kithkin_healer.txt @@ -2,6 +2,6 @@ Name:Kithkin Healer ManaCost:2 W Types:Creature Kithkin Cleric PT:2/2 -A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to any target this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/kithkin_healer.jpg -Oracle:{T}: Prevent the next 1 damage that would be dealt to target creature or player this turn. +Oracle:{T}: Prevent the next 1 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/k/kitsune_blademaster.txt b/forge-gui/res/cardsfolder/k/kitsune_blademaster.txt index 413a686af49..32be050ac9a 100644 --- a/forge-gui/res/cardsfolder/k/kitsune_blademaster.txt +++ b/forge-gui/res/cardsfolder/k/kitsune_blademaster.txt @@ -3,6 +3,6 @@ ManaCost:2 W Types:Creature Fox Samurai PT:2/2 K:First Strike -K:Bushido 1 +K:Bushido:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/kitsune_blademaster.jpg Oracle:First strike\nBushido 1 (When this blocks or becomes blocked, it gets +1/+1 until end of turn.) diff --git a/forge-gui/res/cardsfolder/k/kitsune_dawnblade.txt b/forge-gui/res/cardsfolder/k/kitsune_dawnblade.txt index d450f8f3ea1..187a782e61f 100644 --- a/forge-gui/res/cardsfolder/k/kitsune_dawnblade.txt +++ b/forge-gui/res/cardsfolder/k/kitsune_dawnblade.txt @@ -2,7 +2,7 @@ Name:Kitsune Dawnblade ManaCost:4 W Types:Creature Fox Samurai PT:2/3 -K:Bushido 1 +K:Bushido:1 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | OptionalDecider$ You | Execute$ TrigTap | TriggerDescription$ When CARDNAME enters the battlefield, you may tap target creature. SVar:TrigTap:DB$Tap | ValidTgts$ Creature | TgtPrompt$ Select target creature SVar:PlayMain1:TRUE diff --git a/forge-gui/res/cardsfolder/k/kitsune_healer.txt b/forge-gui/res/cardsfolder/k/kitsune_healer.txt index 66149b06f73..7d977bb1d23 100644 --- a/forge-gui/res/cardsfolder/k/kitsune_healer.txt +++ b/forge-gui/res/cardsfolder/k/kitsune_healer.txt @@ -2,7 +2,7 @@ Name:Kitsune Healer ManaCost:3 W Types:Creature Fox Cleric PT:2/2 -A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to any target this turn. A:AB$ Pump | Cost$ T | ValidTgts$ Creature.Legendary | TgtPrompt$ Select target legendary creature | KW$ Prevent all damage that would be dealt to CARDNAME. | SpellDescription$ Prevent all damage that would be dealt to target legendary creature this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/kitsune_healer.jpg -Oracle:{T}: Prevent the next 1 damage that would be dealt to target creature or player this turn.\n{T}: Prevent all damage that would be dealt to target legendary creature this turn. +Oracle:{T}: Prevent the next 1 damage that would be dealt to any target this turn.\n{T}: Prevent all damage that would be dealt to target legendary creature this turn. diff --git a/forge-gui/res/cardsfolder/k/knight_of_the_tusk.txt b/forge-gui/res/cardsfolder/k/knight_of_the_tusk.txt new file mode 100644 index 00000000000..a48ba0d23db --- /dev/null +++ b/forge-gui/res/cardsfolder/k/knight_of_the_tusk.txt @@ -0,0 +1,6 @@ +Name:Knight of the Tusk +ManaCost:4 W W +Types:Creature Human Knight +K:Vigilance +Oracle:Vigilance (Attacking doesn't cause this creature to tap.) +PT:3/7 diff --git a/forge-gui/res/cardsfolder/k/knights_pledge.txt b/forge-gui/res/cardsfolder/k/knights_pledge.txt new file mode 100644 index 00000000000..0e93eaf3031 --- /dev/null +++ b/forge-gui/res/cardsfolder/k/knights_pledge.txt @@ -0,0 +1,7 @@ +Name:Knight's Pledge +ManaCost:1 W +Types:Enchantment Aura +K:Enchant creature +A:SP$ Attach | Cost$ 1 W | ValidTgts$ Creature | AILogic$ Pump +S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 2 | AddToughness$ 2 | Description$ Enchanted creature gets +2/+2. +Oracle:Enchant creature\nEnchanted creature gets +2/+2. diff --git a/forge-gui/res/cardsfolder/k/knollspine_invocation.txt b/forge-gui/res/cardsfolder/k/knollspine_invocation.txt index d53244bc4fc..11e9df29280 100644 --- a/forge-gui/res/cardsfolder/k/knollspine_invocation.txt +++ b/forge-gui/res/cardsfolder/k/knollspine_invocation.txt @@ -1,8 +1,8 @@ Name:Knollspine Invocation ManaCost:1 R R Types:Enchantment -A:AB$ DealDamage | Announce$ X | Cost$ X Discard<1/Card.cmcEQX/card with converted mana cost X> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to target creature or player. +A:AB$ DealDamage | Announce$ X | Cost$ X Discard<1/Card.cmcEQX/card with converted mana cost X> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to any target. SVar:X:Count$xPaid SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/knollspine_invocation.jpg -Oracle:{X}, Discard a card with converted mana cost X: Knollspine Invocation deals X damage to target creature or player. +Oracle:{X}, Discard a card with converted mana cost X: Knollspine Invocation deals X damage to any target. diff --git a/forge-gui/res/cardsfolder/k/knowledge_and_power.txt b/forge-gui/res/cardsfolder/k/knowledge_and_power.txt index 332dee641bf..3bdf9012ee6 100644 --- a/forge-gui/res/cardsfolder/k/knowledge_and_power.txt +++ b/forge-gui/res/cardsfolder/k/knowledge_and_power.txt @@ -1,7 +1,7 @@ Name:Knowledge and Power ManaCost:4 R Types:Enchantment -T:Mode$ Scry | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDmg | TriggerDescription$ Whenever you scry, you may pay {2}. If you do, CARDNAME deals 2 damage to target creature or player. -SVar:TrigDmg:AB$ DealDamage | Cost$ 2 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 +T:Mode$ Scry | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDmg | TriggerDescription$ Whenever you scry, you may pay {2}. If you do, CARDNAME deals 2 damage to any target. +SVar:TrigDmg:AB$ DealDamage | Cost$ 2 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 SVar:Picture:http://www.wizards.com/global/images/magic/general/knowledge_and_power.jpg -Oracle:Whenever you scry, you may pay {2}. If you do, Knowledge and Power deals 2 damage to target creature or player. +Oracle:Whenever you scry, you may pay {2}. If you do, Knowledge and Power deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/k/knowledge_exploitation.txt b/forge-gui/res/cardsfolder/k/knowledge_exploitation.txt index cbb129d9e9f..342613a6207 100644 --- a/forge-gui/res/cardsfolder/k/knowledge_exploitation.txt +++ b/forge-gui/res/cardsfolder/k/knowledge_exploitation.txt @@ -1,11 +1,12 @@ Name:Knowledge Exploitation 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 their library. -A:SP$ ChangeZone | Cost$ 3 U | Activation$ Prowl | ValidTgts$ Opponent | Origin$ Library | Destination$ Library | ChangeType$ Instant,Sorcery | ChangeNum$ 1 | RememberChanged$ True | Reveal$ True | Shuffle$ False | PrecostDesc$ Prowl {3}{U} | DefinedPlayer$ Targeted | Chooser$ You | Mandatory$ True | SubAbility$ DBPlay | StackDescription$ Search {p:Targeted}'s library for an instant or sorcery card | SpellDescription$ (You may cast this for its prowl cost if you dealt combat damage to a player this turn with a Rogue.) SVar:DBPlay:DB$ Play | Defined$ Remembered | Controller$ You | WithoutManaCost$ True | Optional$ True | SubAbility$ DBShuffle SVar:DBShuffle:DB$ Shuffle | Defined$ RememberedController | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +DeckNeeds:Type$Rogue SVar:RemAIDeck:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/knowledge_exploitation.jpg Oracle:Prowl {3}{U} (You may cast this for its prowl cost if you dealt combat damage to a player this turn with a Rogue.)\nSearch target opponent's library for an instant or sorcery card. You may cast that card without paying its mana cost. Then that player shuffles their library. diff --git a/forge-gui/res/cardsfolder/k/kolaghan_aspirant.txt b/forge-gui/res/cardsfolder/k/kolaghan_aspirant.txt index 53bc07ec78c..84bb055d40b 100644 --- a/forge-gui/res/cardsfolder/k/kolaghan_aspirant.txt +++ b/forge-gui/res/cardsfolder/k/kolaghan_aspirant.txt @@ -3,6 +3,6 @@ ManaCost:1 R Types:Creature Human Warrior PT:2/1 T:Mode$ AttackerBlockedByCreature | ValidCard$ Card.Self | ValidBlocker$ Creature | Execute$ TrigDamage | TriggerDescription$ Whenever CARDNAME becomes blocked by a creature, CARDNAME deals 1 damage to that creature. -SVar:TrigDamage:DB$ DealDamage | Defined$ TriggeredBlocker | NumDmg$ 1 +SVar:TrigDamage:DB$ DealDamage | Defined$ TriggeredBlockerLKICopy | NumDmg$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/kolaghan_aspirant.jpg Oracle:Whenever Kolaghan Aspirant becomes blocked by a creature, Kolaghan Aspirant deals 1 damage to that creature. diff --git a/forge-gui/res/cardsfolder/k/kolaghans_command.txt b/forge-gui/res/cardsfolder/k/kolaghans_command.txt index 7f582d04ec4..1fd5f781421 100644 --- a/forge-gui/res/cardsfolder/k/kolaghans_command.txt +++ b/forge-gui/res/cardsfolder/k/kolaghans_command.txt @@ -5,6 +5,6 @@ A:SP$ Charm | Cost$ 1 B R | Choices$ DBReturn,DBDiscard,DBDestroy,DBDamage | Cha SVar:DBReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature card | SpellDescription$ Return target creature card from your graveyard to your hand. SVar:DBDiscard:DB$ Discard | ValidTgts$ Player | TgtPrompt$ Choose a player | NumCards$ 1 | Mode$ TgtChoose | SpellDescription$ Target player discards a card. SVar:DBDestroy:DB$ Destroy | ValidTgts$ Artifact | TgtPrompt$ Select target artifact | SpellDescription$ Destroy target artifact. -SVar:DBDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +SVar:DBDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/kolaghans_command.jpg -Oracle:Choose two —\n• Return target creature card from your graveyard to your hand.\n• Target player discards a card.\n• Destroy target artifact.\n• Kolaghan's Command deals 2 damage to target creature or player. +Oracle:Choose two —\n• Return target creature card from your graveyard to your hand.\n• Target player discards a card.\n• Destroy target artifact.\n• Kolaghan's Command deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/k/konda_lord_of_eiganjo.txt b/forge-gui/res/cardsfolder/k/konda_lord_of_eiganjo.txt index e1934f11018..a8bf4bb92c6 100644 --- a/forge-gui/res/cardsfolder/k/konda_lord_of_eiganjo.txt +++ b/forge-gui/res/cardsfolder/k/konda_lord_of_eiganjo.txt @@ -3,7 +3,7 @@ ManaCost:5 W W Types:Legendary Creature Human Samurai PT:3/3 K:Vigilance -K:Bushido 5 +K:Bushido:5 K:Indestructible SVar:Picture:http://www.wizards.com/global/images/magic/general/konda_lord_of_eiganjo.jpg Oracle:Vigilance, indestructible\nBushido 5 (When this blocks or becomes blocked, it gets +5/+5 until end of turn.) diff --git a/forge-gui/res/cardsfolder/k/kondas_hatamoto.txt b/forge-gui/res/cardsfolder/k/kondas_hatamoto.txt index 863c2cf4b29..62169bc52e4 100644 --- a/forge-gui/res/cardsfolder/k/kondas_hatamoto.txt +++ b/forge-gui/res/cardsfolder/k/kondas_hatamoto.txt @@ -2,7 +2,7 @@ Name:Konda's Hatamoto ManaCost:1 W Types:Creature Human Samurai PT:1/2 -K:Bushido 1 +K:Bushido:1 S:Mode$ Continuous | Affected$ Card.Self | AddPower$ 1 | AddToughness$ 2 | AddKeyword$ Vigilance | CheckSVar$ X | SVarCompare$ GE1 | Description$ As long as you control a legendary Samurai, CARDNAME gets +1/+2 and has vigilance. (Attacking doesn't cause this creature to tap.) SVar:X:Count$Valid Samurai.Legendary+YouCtrl SVar:BuffedBy:Samurai.Legendary diff --git a/forge-gui/res/cardsfolder/k/koth_of_the_hammer.txt b/forge-gui/res/cardsfolder/k/koth_of_the_hammer.txt index bf75d040481..95a6edd0ccb 100644 --- a/forge-gui/res/cardsfolder/k/koth_of_the_hammer.txt +++ b/forge-gui/res/cardsfolder/k/koth_of_the_hammer.txt @@ -5,11 +5,11 @@ Loyalty:3 A:AB$ Untap | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | ValidTgts$ Mountain | TgtPrompt$ Select target Mountain | SubAbility$ DBAnimate | SpellDescription$ Untap target Mountain. It becomes a 4/4 red Elemental creature until end of turn. It's still a land. SVar:DBAnimate:DB$ Animate | Defined$ Targeted | Power$ 4 | Toughness$ 4 | Types$ Creature,Elemental | Colors$ Red A:AB$ Mana | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | Produced$ R | Amount$ X | References$ X | SpellDescription$ Add {R} for each Mountain you control. -A:AB$ Effect | Cost$ SubCounter<5/LOYALTY> | Planeswalker$ True | Ultimate$ True | Name$ Emblem - Koth of the Hammer | Image$ emblem_koth_of_the_hammer | StaticAbilities$ STDamage | SVars$ ABDealDamage | Stackable$ False | Duration$ Permanent | SpellDescription$ You get an emblem with "Mountains you control have '{T}: This land deals 1 damage to target creature or player." -SVar:STDamage:Mode$ Continuous | EffectZone$ Command | Affected$ Mountain.YouCtrl | AddAbility$ ABDealDamage | AffectedZone$ Battlefield | Description$ Mountains you control have "{T}: This land deals 1 damage to target creature or player." -SVar:ABDealDamage:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ Deal 1 damage to target creature or player +A:AB$ Effect | Cost$ SubCounter<5/LOYALTY> | Planeswalker$ True | Ultimate$ True | Name$ Emblem - Koth of the Hammer | Image$ emblem_koth_of_the_hammer | StaticAbilities$ STDamage | SVars$ ABDealDamage | Stackable$ False | Duration$ Permanent | SpellDescription$ You get an emblem with "Mountains you control have '{T}: This land deals 1 damage to any target." +SVar:STDamage:Mode$ Continuous | EffectZone$ Command | Affected$ Mountain.YouCtrl | AddAbility$ ABDealDamage | AffectedZone$ Battlefield | Description$ Mountains you control have "{T}: This land deals 1 damage to any target." +SVar:ABDealDamage:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ Deal 1 damage to any target SVar:X:Count$Valid Mountain.YouCtrl SVar:PlayMain1:ALWAYS DeckNeeds:Type$Mountain SVar:Picture:http://www.wizards.com/global/images/magic/general/koth_of_the_hammer.jpg -Oracle:[+1]: Untap target Mountain. It becomes a 4/4 red Elemental creature until end of turn. It's still a land.\n[-2]: Add {R} for each Mountain you control.\n[-5]: You get an emblem with "Mountains you control have '{T}: This land deals 1 damage to target creature or player.'" +Oracle:[+1]: Untap target Mountain. It becomes a 4/4 red Elemental creature until end of turn. It's still a land.\n[-2]: Add {R} for each Mountain you control.\n[-5]: You get an emblem with "Mountains you control have '{T}: This land deals 1 damage to any target.'" diff --git a/forge-gui/res/cardsfolder/k/krav_the_unredeemed.txt b/forge-gui/res/cardsfolder/k/krav_the_unredeemed.txt new file mode 100644 index 00000000000..b3f82d1668e --- /dev/null +++ b/forge-gui/res/cardsfolder/k/krav_the_unredeemed.txt @@ -0,0 +1,14 @@ +Name:Krav, the Unredeemed +ManaCost:4 B +Types:Legendary Creature Demon +PT:3/3 +K:Partner:Regna, the Redeemer:Regna +# TODO: AILogic$ DoSacrifice is a placeholder which signals AiCostDecision that the API knows how to properly determine +# the number of creatures to sacrifice. Currently DrawAi doesn't handle it too optimally and this can be improved. +A:AB$Draw | Cost$ B Sac | NumCards$ ChosenX | ValidTgts$ Player | TgtPrompt$ Choose a player | References$ X | SubAbility$ DBGainLife | AILogic$ DoSacrifice | SpellDescription$ Target player draws X cards and gains X life. Put X +1/+1 counters on CARDNAME. +SVar:DBGainLife:DB$GainLife | Defined$ Targeted | LifeAmount$ ChosenX | SubAbility$ DBPutCounter +SVar:DBPutCounter:DB$PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ ChosenX +SVar:X:XChoice +DeckHints:Name$Regna, the Redeemer +SVar:Picture:http://www.wizards.com/global/images/magic/general/krav_the_unredeemed.jpg +Oracle:Partner with Regna, the Redeemer (When this creature enters the battlefield, target player may put Regna into their hand from their library, then shuffle.)\n{B}, Sacrifice X creatures: Target player draws X cards and gains X life. Put X +1/+1 counters on Krav, the Unredeemed. diff --git a/forge-gui/res/cardsfolder/k/kris_mage.txt b/forge-gui/res/cardsfolder/k/kris_mage.txt index 290546be841..b9274e404a6 100644 --- a/forge-gui/res/cardsfolder/k/kris_mage.txt +++ b/forge-gui/res/cardsfolder/k/kris_mage.txt @@ -2,7 +2,7 @@ Name:Kris Mage ManaCost:R Types:Creature Human Spellshaper PT:1/1 -A:AB$ DealDamage | Cost$ R T Discard<1/Card> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ R T Discard<1/Card> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/kris_mage.jpg SVar:RemAIDeck:True -Oracle:{R}, {T}, Discard a card: Kris Mage deals 1 damage to target creature or player. +Oracle:{R}, {T}, Discard a card: Kris Mage deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/k/krosan_reclamation.txt b/forge-gui/res/cardsfolder/k/krosan_reclamation.txt index 4586f1355c8..11ab5a24918 100644 --- a/forge-gui/res/cardsfolder/k/krosan_reclamation.txt +++ b/forge-gui/res/cardsfolder/k/krosan_reclamation.txt @@ -1,7 +1,7 @@ Name:Krosan Reclamation ManaCost:1 G Types:Instant -K:Flashback 1 G +K:Flashback:1 G A:SP$ Pump | Cost$ 1 G | ValidTgts$ Player | TgtPrompt$ Select target Player | SubAbility$ DBChangeZone | IsCurse$ True | SpellDescription$ Target player shuffles up to two target cards from their graveyard into their library. SVar:DBChangeZone:DB$ ChangeZone | TargetMin$ 0 | TargetMax$ 2 | TargetsWithDefinedController$ ParentTarget | Origin$ Graveyard | Destination$ Library | Shuffle$ True | TgtPrompt$ Choose target card | ValidTgts$ Card SVar:RemAIDeck:True diff --git a/forge-gui/res/cardsfolder/k/krovikan_horror.txt b/forge-gui/res/cardsfolder/k/krovikan_horror.txt index f432ff20296..3371d05343f 100644 --- a/forge-gui/res/cardsfolder/k/krovikan_horror.txt +++ b/forge-gui/res/cardsfolder/k/krovikan_horror.txt @@ -4,9 +4,9 @@ Types:Creature Horror Spirit PT:2/2 T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ Player | TriggerZones$ Graveyard | IsPresent$ Creature.YouOwn+DirectlyAbove | PresentZone$ Graveyard | PresentCompare$ EQ1 | Execute$ TrigReturn | OptionalDecider$ You | TriggerDescription$ At the beginning of the end step, if CARDNAME is in your graveyard with a creature card directly above it, you may return CARDNAME to your hand. SVar:TrigReturn:DB$ChangeZone | Defined$ Self | Origin$ Graveyard | Destination$ Hand -A:AB$ DealDamage | Cost$ 1 Sac<1/Creature> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ 1 Sac<1/Creature> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:DiscardMe:3 SVar:SacMe:1 SVar:NeedsOrderedGraveyard:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/krovikan_horror.jpg -Oracle:At the beginning of the end step, if Krovikan Horror is in your graveyard with a creature card directly above it, you may return Krovikan Horror to your hand.\n{1}, Sacrifice a creature: Krovikan Horror deals 1 damage to target creature or player. +Oracle:At the beginning of the end step, if Krovikan Horror is in your graveyard with a creature card directly above it, you may return Krovikan Horror to your hand.\n{1}, Sacrifice a creature: Krovikan Horror deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/k/krovikan_plague.txt b/forge-gui/res/cardsfolder/k/krovikan_plague.txt index 1bea06f6604..7f1dcbc2705 100644 --- a/forge-gui/res/cardsfolder/k/krovikan_plague.txt +++ b/forge-gui/res/cardsfolder/k/krovikan_plague.txt @@ -6,8 +6,8 @@ A:SP$ Attach | Cost$ 2 B | ValidTgts$ Creature.nonWall+YouCtrl | TgtPrompt$ Sele T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ DelTrigSlowtrip | TriggerDescription$ When CARDNAME enters the battlefield, draw a card at the beginning of the next turn's upkeep. SVar:DelTrigSlowtrip:DB$ DelayedTrigger | Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Player | Execute$ DrawSlowtrip | TriggerDescription$ Draw a card. SVar:DrawSlowtrip:DB$Draw | NumCards$ 1 | Defined$ You -A:AB$DealDamage | Cost$ tapXType<1/Creature.EnchantedBy/Enchanted Creature> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SubAbility$ DBPutCounter | CostDesc$ Tap enchanted creature: | SpellDescription$ CARDNAME deals 1 damage to target creature or player. Put a -0/-1 counter on enchanted creature. Activate this ability only if enchanted creature is untapped. +A:AB$DealDamage | Cost$ tapXType<1/Creature.EnchantedBy/Enchanted Creature> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SubAbility$ DBPutCounter | CostDesc$ Tap enchanted creature: | SpellDescription$ CARDNAME deals 1 damage to any target. Put a -0/-1 counter on enchanted creature. Activate this ability only if enchanted creature is untapped. SVar:DBPutCounter:DB$PutCounter | Defined$ Enchanted | CounterType$ M0M1 | CounterNum$ 1 SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/krovikan_plague.jpg -Oracle:Enchant non-Wall creature you control\nWhen Krovikan Plague enters the battlefield, draw a card at the beginning of the next turn's upkeep.\nTap enchanted creature: Krovikan Plague deals 1 damage to target creature or player. Put a -0/-1 counter on enchanted creature. Activate this ability only if enchanted creature is untapped. +Oracle:Enchant non-Wall creature you control\nWhen Krovikan Plague enters the battlefield, draw a card at the beginning of the next turn's upkeep.\nTap enchanted creature: Krovikan Plague deals 1 damage to any target. Put a -0/-1 counter on enchanted creature. Activate this ability only if enchanted creature is untapped. diff --git a/forge-gui/res/cardsfolder/k/kukemssa_serpent.txt b/forge-gui/res/cardsfolder/k/kukemssa_serpent.txt index cdf9ee17fe8..7ccddbef885 100644 --- a/forge-gui/res/cardsfolder/k/kukemssa_serpent.txt +++ b/forge-gui/res/cardsfolder/k/kukemssa_serpent.txt @@ -3,7 +3,7 @@ ManaCost:3 U Types:Creature Serpent PT:4/3 S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Island | Description$ CARDNAME can't attack unless defending player controls an Island. -A:AB$ Animate | Cost$ U Sac<1/Island> | ValidTgts$ Land.OppCtrl | TgtPrompt$ Select target land an opponent controls | Types$ Island | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | SpellDescription$ Target land an opponent controls becomes an Island until end of turn. +A:AB$ Animate | Cost$ U Sac<1/Island> | ValidTgts$ Land.OppCtrl | TgtPrompt$ Select target land an opponent controls | Types$ Island | RemoveLandTypes$ True | SpellDescription$ Target land an opponent controls becomes an Island until end of turn. T:Mode$ Always | TriggerZones$ Battlefield | IsPresent$ Island.YouCtrl | PresentCompare$ EQ0 | Execute$ TrigSac | TriggerDescription$ When you control no Islands, sacrifice CARDNAME. SVar:TrigSac:DB$Sacrifice | Defined$ Self SVar:NeedsToPlay:Island.YouCtrl diff --git a/forge-gui/res/cardsfolder/k/kuldotha_flamefiend.txt b/forge-gui/res/cardsfolder/k/kuldotha_flamefiend.txt index d553ebf56fc..22261202e5f 100644 --- a/forge-gui/res/cardsfolder/k/kuldotha_flamefiend.txt +++ b/forge-gui/res/cardsfolder/k/kuldotha_flamefiend.txt @@ -2,8 +2,8 @@ Name:Kuldotha Flamefiend ManaCost:4 R R Types:Creature Elemental PT:4/4 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | OptionalDecider$ You | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, you may sacrifice an artifact. If you do, CARDNAME deals 4 damage divided as you choose among any number of target creatures and/or players. -SVar:TrigDealDamage:AB$ DealDamage | Cost$ Sac<1/Artifact> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to distribute damage to | NumDmg$ 4 | TargetMin$ 1 | TargetMax$ 4 | DividedAsYouChoose$ 4 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | OptionalDecider$ You | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, you may sacrifice an artifact. If you do, CARDNAME deals 4 damage divided as you choose among any number of targets. +SVar:TrigDealDamage:AB$ DealDamage | Cost$ Sac<1/Artifact> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to distribute damage to | NumDmg$ 4 | TargetMin$ 1 | TargetMax$ 4 | DividedAsYouChoose$ 4 SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/kuldotha_flamefiend.jpg -Oracle:When Kuldotha Flamefiend enters the battlefield, you may sacrifice an artifact. If you do, Kuldotha Flamefiend deals 4 damage divided as you choose among any number of target creatures and/or players. +Oracle:When Kuldotha Flamefiend enters the battlefield, you may sacrifice an artifact. If you do, Kuldotha Flamefiend deals 4 damage divided as you choose among any number of targets. diff --git a/forge-gui/res/cardsfolder/k/kumano_master_yamabushi.txt b/forge-gui/res/cardsfolder/k/kumano_master_yamabushi.txt index cd0f0c3165b..d2a1032c356 100644 --- a/forge-gui/res/cardsfolder/k/kumano_master_yamabushi.txt +++ b/forge-gui/res/cardsfolder/k/kumano_master_yamabushi.txt @@ -2,8 +2,8 @@ Name:Kumano, Master Yamabushi ManaCost:3 R R Types:Legendary Creature Human Shaman PT:4/4 -A:AB$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. R:Event$ Moved | ValidLKI$ Creature.DamagedBy | Destination$ Graveyard | ReplaceWith$ DBExile | ActiveZones$ Battlefield | Description$ If a creature dealt damage by CARDNAME this turn would die, exile it instead. SVar:DBExile:DB$ ChangeZone | Defined$ ReplacedCard | Origin$ Battlefield | Destination$ Exile SVar:Picture:http://www.wizards.com/global/images/magic/general/kumano_master_yamabushi.jpg -Oracle:{1}{R}: Kumano, Master Yamabushi deals 1 damage to target creature or player.\nIf a creature dealt damage by Kumano this turn would die, exile it instead. +Oracle:{1}{R}: Kumano, Master Yamabushi deals 1 damage to any target.\nIf a creature dealt damage by Kumano this turn would die, exile it instead. diff --git a/forge-gui/res/cardsfolder/k/kuros_taken.txt b/forge-gui/res/cardsfolder/k/kuros_taken.txt index 1bfa29047ef..b659011bbfd 100644 --- a/forge-gui/res/cardsfolder/k/kuros_taken.txt +++ b/forge-gui/res/cardsfolder/k/kuros_taken.txt @@ -2,7 +2,7 @@ Name:Kuro's Taken ManaCost:1 B Types:Creature Rat Samurai PT:1/1 -K:Bushido 1 +K:Bushido:1 A:AB$ Regenerate | Cost$ 1 B | SpellDescription$ Regenerate CARDNAME. SVar:Picture:http://www.wizards.com/global/images/magic/general/kuros_taken.jpg Oracle:Bushido 1 (When this blocks or becomes blocked, it gets +1/+1 until end of turn.)\n{1}{B}: Regenerate Kuro's Taken. diff --git a/forge-gui/res/cardsfolder/k/kyren_negotiations.txt b/forge-gui/res/cardsfolder/k/kyren_negotiations.txt index 7ef918b3649..a7f591d9f4f 100644 --- a/forge-gui/res/cardsfolder/k/kyren_negotiations.txt +++ b/forge-gui/res/cardsfolder/k/kyren_negotiations.txt @@ -1,7 +1,7 @@ Name:Kyren Negotiations ManaCost:2 R R Types:Enchantment -A:AB$ DealDamage | Cost$ tapXType<1/Creature> | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target player. +A:AB$ DealDamage | Cost$ tapXType<1/Creature> | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target player or planeswalker. SVar:NonStackingEffect:True SVar:Picture:http://www.wizards.com/global/images/magic/general/kyren_negotiations.jpg -Oracle:Tap an untapped creature you control: Kyren Negotiations deals 1 damage to target player. +Oracle:Tap an untapped creature you control: Kyren Negotiations deals 1 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/k/kyren_sniper.txt b/forge-gui/res/cardsfolder/k/kyren_sniper.txt index 0b230aab06f..2e3c3a6c6b2 100644 --- a/forge-gui/res/cardsfolder/k/kyren_sniper.txt +++ b/forge-gui/res/cardsfolder/k/kyren_sniper.txt @@ -2,7 +2,7 @@ Name:Kyren Sniper ManaCost:2 R Types:Creature Goblin PT:1/1 -T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | OptionalDecider$ You | Execute$ TrigDealDamage | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your upkeep, you may have CARDNAME deal 1 damage to target player. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 1 +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | OptionalDecider$ You | Execute$ TrigDealDamage | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your upkeep, you may have CARDNAME deal 1 damage to target player or planeswalker. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/kyren_sniper.jpg -Oracle:At the beginning of your upkeep, you may have Kyren Sniper deal 1 damage to target player. +Oracle:At the beginning of your upkeep, you may have Kyren Sniper deal 1 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/k/kytheon_hero_of_akros.txt b/forge-gui/res/cardsfolder/k/kytheon_hero_of_akros.txt index 326bfad67ce..583b68ad5d2 100644 --- a/forge-gui/res/cardsfolder/k/kytheon_hero_of_akros.txt +++ b/forge-gui/res/cardsfolder/k/kytheon_hero_of_akros.txt @@ -4,7 +4,7 @@ Types:Legendary Creature Human Soldier PT:2/1 T:Mode$ Phase | Phase$ EndCombat | ValidPlayer$ Player | CheckSVar$ CanFlip | SVarCompare$ GE3 | TriggerZones$ Battlefield | Execute$ TrigExile | TriggerDescription$ At end of combat, if CARDNAME and at least two other creatures attacked this combat, exile CARDNAME, then return him to the battlefield transformed under his owner's control. SVar:TrigExile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | SubAbility$ DBReturn -SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | Transformed$ True | WithCounters$ LOYALTY_3 | ForgetOtherRemembered$ True | SubAbility$ DBCleanup +SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | Transformed$ True | ForgetOtherRemembered$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True # Fix for Kytheon except for Manifested corner case T:Mode$ Attacks | ValidCard$ Card.YouCtrl | Execute$ KytheonReset | Static$ True diff --git a/forge-gui/res/cardsfolder/l/labyrinth_champion.txt b/forge-gui/res/cardsfolder/l/labyrinth_champion.txt index 8bfad0d1cd6..43e69a38793 100644 --- a/forge-gui/res/cardsfolder/l/labyrinth_champion.txt +++ b/forge-gui/res/cardsfolder/l/labyrinth_champion.txt @@ -2,7 +2,7 @@ Name:Labyrinth Champion ManaCost:3 R Types:Creature Human Warrior PT:2/2 -T:Mode$ SpellCast | ValidActivatingPlayer$ You | TargetsValid$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigDmg | TriggerDescription$ Heroic — Whenever you cast a spell that targets CARDNAME, CARDNAME deals 2 damage to target creature or player. -SVar:TrigDmg:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 +T:Mode$ SpellCast | ValidActivatingPlayer$ You | TargetsValid$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigDmg | TriggerDescription$ Heroic — Whenever you cast a spell that targets CARDNAME, CARDNAME deals 2 damage to any target. +SVar:TrigDmg:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 SVar:Picture:http://www.wizards.com/global/images/magic/general/labyrinth_champion.jpg -Oracle:Heroic — Whenever you cast a spell that targets Labyrinth Champion, Labyrinth Champion deals 2 damage to target creature or player. +Oracle:Heroic — Whenever you cast a spell that targets Labyrinth Champion, Labyrinth Champion deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/l/lands_edge.txt b/forge-gui/res/cardsfolder/l/lands_edge.txt index 83de8d3c3d9..79f8ed9accd 100644 --- a/forge-gui/res/cardsfolder/l/lands_edge.txt +++ b/forge-gui/res/cardsfolder/l/lands_edge.txt @@ -1,8 +1,8 @@ Name:Land's Edge ManaCost:1 R R Types:World Enchantment -A:AB$ DealDamage | Cost$ Discard<1/Card> | ValidTgts$ Player | NumDmg$ X | References$ X | AnyPlayer$ True | AILogic$ DiscardLands | SpellDescription$ If the discarded card was a land card, CARDNAME deals 2 damage to target player. Any player may activate this ability. +A:AB$ DealDamage | Cost$ Discard<1/Card> | ValidTgts$ Player,Planeswalker | NumDmg$ X | References$ X | AnyPlayer$ True | AILogic$ DiscardLands | SpellDescription$ If the discarded card was a land card, CARDNAME deals 2 damage to target player or planeswalker. Any player may activate this ability. SVar:X:Discarded$Valid Land/Times.2 SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/lands_edge.jpg -Oracle:Discard a card: If the discarded card was a land card, Land's Edge deals 2 damage to target player. Any player may activate this ability. +Oracle:Discard a card: If the discarded card was a land card, Land's Edge deals 2 damage to target player or planeswalker. Any player may activate this ability. diff --git a/forge-gui/res/cardsfolder/l/landslide.txt b/forge-gui/res/cardsfolder/l/landslide.txt index 4fdf5eab0eb..389552b48d0 100644 --- a/forge-gui/res/cardsfolder/l/landslide.txt +++ b/forge-gui/res/cardsfolder/l/landslide.txt @@ -1,11 +1,11 @@ Name:Landslide ManaCost:R Types:Sorcery -A:SP$ Sacrifice | Cost$ R | Defined$ You | Amount$ SacX | References$ SacX | SacValid$ Mountain | RememberSacrificed$ True | Optional$ True | SubAbility$ DBDamage | SpellDescription$ Sacrifice any number of Mountains. CARDNAME deals that much damage to target player. -SVar:DBDamage:DB$ DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ DmgX | References$ DmgX | SubAbility$ DBCleanup +A:SP$ Sacrifice | Cost$ R | Defined$ You | Amount$ SacX | References$ SacX | SacValid$ Mountain | RememberSacrificed$ True | Optional$ True | SubAbility$ DBDamage | SpellDescription$ Sacrifice any number of Mountains. CARDNAME deals that much damage to target player or planeswalker. +SVar:DBDamage:DB$ DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ DmgX | References$ DmgX | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:SacX:Count$Valid Mountain.YouCtrl SVar:DmgX:Remembered$Amount SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/landslide.jpg -Oracle:Sacrifice any number of Mountains. Landslide deals that much damage to target player. +Oracle:Sacrifice any number of Mountains. Landslide deals that much damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/l/last_ditch_effort.txt b/forge-gui/res/cardsfolder/l/last_ditch_effort.txt index 57f1b21b92f..3521ba8582f 100644 --- a/forge-gui/res/cardsfolder/l/last_ditch_effort.txt +++ b/forge-gui/res/cardsfolder/l/last_ditch_effort.txt @@ -1,11 +1,11 @@ Name:Last-Ditch Effort ManaCost:R Types:Instant -A:SP$ Sacrifice | Cost$ R | Defined$ You | Amount$ SacX | References$ SacX | SacValid$ Creature | RememberSacrificed$ True | Optional$ True | SubAbility$ DBDamage | SpellDescription$ Sacrifice any number of creatures. CARDNAME deals that much damage to target creature or player. -SVar:DBDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ DmgX | References$ DmgX | SubAbility$ DBCleanup +A:SP$ Sacrifice | Cost$ R | Defined$ You | Amount$ SacX | References$ SacX | SacValid$ Creature | RememberSacrificed$ True | Optional$ True | SubAbility$ DBDamage | SpellDescription$ Sacrifice any number of creatures. CARDNAME deals that much damage to any target. +SVar:DBDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ DmgX | References$ DmgX | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:SacX:Count$Valid Creature.YouCtrl SVar:DmgX:Remembered$Amount SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/last_ditch_effort.jpg -Oracle:Sacrifice any number of creatures. Last-Ditch Effort deals that much damage to target creature or player. +Oracle:Sacrifice any number of creatures. Last-Ditch Effort deals that much damage to any target. diff --git a/forge-gui/res/cardsfolder/l/last_one_standing.txt b/forge-gui/res/cardsfolder/l/last_one_standing.txt new file mode 100644 index 00000000000..395db2c1865 --- /dev/null +++ b/forge-gui/res/cardsfolder/l/last_one_standing.txt @@ -0,0 +1,7 @@ +Name:Last One Standing +ManaCost:1 B R +Types:Sorcery +A:SP$ ChooseCard | Cost$ 1 B R | Defined$ You | Amount$ 1 | Choices$ Creature | AtRandom$ True | SubAbility$ DBDestroyAll | RememberChosen$ True | SpellDescription$ Choose a creature at random, then destroy the rest. +SVar:DBDestroyAll:DB$ DestroyAll | ValidCards$ Creature.IsNotRemembered | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:Choose a creature at random, then destroy the rest. diff --git a/forge-gui/res/cardsfolder/l/latchkey_faerie.txt b/forge-gui/res/cardsfolder/l/latchkey_faerie.txt index 321d73aba5f..1048a2f5cf7 100644 --- a/forge-gui/res/cardsfolder/l/latchkey_faerie.txt +++ b/forge-gui/res/cardsfolder/l/latchkey_faerie.txt @@ -3,8 +3,9 @@ ManaCost:3 U Types:Creature Faerie Rogue PT:3/1 K:Flying -SVar:AltCost:Cost$ 2 U | Activation$ ProwlFaerie | Description$ Prowl {2}{U} (You may cast this for its prowl cost if you dealt combat damage to a player this turn with a Faerie or Rogue.) -T:Mode$ ChangesZone | Origin$ Stack | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDraw | Condition$ AltCost | TriggerDescription$ When CARDNAME enters the battlefield, if its prowl cost was paid, draw a card. +K:Prowl:2 U +T:Mode$ ChangesZone | Origin$ Stack | Destination$ Battlefield | ValidCard$ Card.Self+prowled | Execute$ TrigDraw | TriggerDescription$ When CARDNAME enters the battlefield, if its prowl cost was paid, draw a card. SVar:TrigDraw:DB$ Draw | NumCards$ 1 +DeckNeeds:Type$Rogue SVar:Picture:http://www.wizards.com/global/images/magic/general/latchkey_faerie.jpg Oracle:Flying\nProwl {2}{U} (You may cast this for its prowl cost if you dealt combat damage to a player this turn with a Faerie or Rogue.)\nWhen Latchkey Faerie enters the battlefield, if its prowl cost was paid, draw a card. diff --git a/forge-gui/res/cardsfolder/l/lathliss_dragon_queen.txt b/forge-gui/res/cardsfolder/l/lathliss_dragon_queen.txt new file mode 100644 index 00000000000..1ed38d3cfab --- /dev/null +++ b/forge-gui/res/cardsfolder/l/lathliss_dragon_queen.txt @@ -0,0 +1,11 @@ +Name:Lathliss, Dragon Queen +ManaCost:4 R R +Types:Legendary Creature Dragon +K:Flying +T:Mode$ ChangesZone | TriggerZones$ Battlefield | ValidCard$ Dragon.YouCtrl+nonToken+Other | Origin$ Any | Destination$ Battlefield | Execute$ TrigToken | TriggerDescription$ Whenever another nontoken Dragon enters the battlefield under your control, create a 5/5 red Dragon creature token with flying. +SVar:TrigToken:DB$ Token | TokenOwner$ You | TokenAmount$ 1 | TokenPower$ 5 | TokenToughness$ 5 | TokenColors$ Red | TokenName$ Dragon | TokenTypes$ Dragon,Creature | TokenKeywords$ Flying | TokenImage$ r 5 5 dragon m19 +A:AB$ PumpAll | Cost$ 1 R | ValidCards$ Dragon.YouCtrl | NumAtt$ +1 | NumDef$ +0 | SpellDescription$ Dragons you control get +1/+0 until end of turn. +DeckHints:Type$Dragon +DeckHas:Ability$Token +Oracle:Flying\nWhenever another nontoken Dragon enters the battlefield under your control, create a 5/5 red Dragon creature token with flying.\n{1}{R}: Dragons you control get +1/+0 until end of turn. +PT:6/6 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/l/latulla_keldon_overseer.txt b/forge-gui/res/cardsfolder/l/latulla_keldon_overseer.txt index f7048c2693e..2e5656ec24d 100644 --- a/forge-gui/res/cardsfolder/l/latulla_keldon_overseer.txt +++ b/forge-gui/res/cardsfolder/l/latulla_keldon_overseer.txt @@ -2,8 +2,8 @@ Name:Latulla, Keldon Overseer ManaCost:3 R R Types:Legendary Creature Human Spellshaper PT:3/3 -A:AB$ DealDamage | Cost$ X R T Discard<2/Card>| ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to target creature or player. +A:AB$ DealDamage | Cost$ X R T Discard<2/Card>| ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to any target. SVar:X:Count$xPaid SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/latulla_keldon_overseer.jpg -Oracle:{X}{R}, {T}, Discard two cards: Latulla, Keldon Overseer deals X damage to target creature or player. +Oracle:{X}{R}, {T}, Discard two cards: Latulla, Keldon Overseer deals X damage to any target. diff --git a/forge-gui/res/cardsfolder/l/lava_axe.txt b/forge-gui/res/cardsfolder/l/lava_axe.txt index 95a6e0a5257..0dbcd3fdfad 100644 --- a/forge-gui/res/cardsfolder/l/lava_axe.txt +++ b/forge-gui/res/cardsfolder/l/lava_axe.txt @@ -1,6 +1,6 @@ Name:Lava Axe ManaCost:4 R Types:Sorcery -A:SP$ DealDamage | Cost$ 4 R | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 5 | SpellDescription$ CARDNAME deals 5 damage to target player. +A:SP$ DealDamage | Cost$ 4 R | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 5 | SpellDescription$ CARDNAME deals 5 damage to target player or planeswalker. SVar:Picture:http://www.wizards.com/global/images/magic/general/lava_axe.jpg -Oracle:Lava Axe deals 5 damage to target player. +Oracle:Lava Axe deals 5 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/l/lava_dart.txt b/forge-gui/res/cardsfolder/l/lava_dart.txt index ced95708ad4..d698750b7bb 100644 --- a/forge-gui/res/cardsfolder/l/lava_dart.txt +++ b/forge-gui/res/cardsfolder/l/lava_dart.txt @@ -1,7 +1,7 @@ Name:Lava Dart ManaCost:R Types:Instant -K:Flashback Sac<1/Mountain> -A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +K:Flashback:Sac<1/Mountain> +A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/lava_dart.jpg -Oracle:Lava Dart deals 1 damage to target creature or player.\nFlashback—Sacrifice a Mountain. (You may cast this card from your graveyard for its flashback cost. Then exile it.) +Oracle:Lava Dart deals 1 damage to any target.\nFlashback—Sacrifice a Mountain. (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/l/lava_spike.txt b/forge-gui/res/cardsfolder/l/lava_spike.txt index a1db9684901..80edbe72b76 100644 --- a/forge-gui/res/cardsfolder/l/lava_spike.txt +++ b/forge-gui/res/cardsfolder/l/lava_spike.txt @@ -1,6 +1,6 @@ Name:Lava Spike ManaCost:R Types:Sorcery Arcane -A:SP$ DealDamage | Cost$ R | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target player. +A:SP$ DealDamage | Cost$ R | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target player or planeswalker. SVar:Picture:http://resources.wizards.com/magic/cards/chk/en-us/card79084.jpg -Oracle:Lava Spike deals 3 damage to target player. +Oracle:Lava Spike deals 3 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/l/lavalanche.txt b/forge-gui/res/cardsfolder/l/lavalanche.txt index 04ddb903d85..2f6615a53f1 100644 --- a/forge-gui/res/cardsfolder/l/lavalanche.txt +++ b/forge-gui/res/cardsfolder/l/lavalanche.txt @@ -1,7 +1,9 @@ Name:Lavalanche ManaCost:X B R G Types:Sorcery -A:SP$ DamageAll | Cost$ X B R G | NumDmg$ X | ValidTgts$ Player | TgtPrompt$ Select a player | ValidCards$ Creature | ValidPlayers$ Targeted | ValidDescription$ target player and each creature they control. | References$ X | SpellDescription$ CARDNAME deals X damage to target player and each creature they control. +A:SP$ DealDamage | Cost$ X B R G | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select a player or planeswalker | NumDmg$ X | References$ X | SubAbility$ DmgAll | DamageMap$ True | SpellDescription$ CARDNAME deals X damage to target player or planeswalker and each creature that player or that planeswalker's controller controls. +SVar:DmgAll:DB$ DamageAll | NumDmg$ X | References$ X | ValidCards$ Creature.ControlledBy TargetedOrController | SubAbility$ DBDamageResolve +SVar:DBDamageResolve:DB$ DamageResolve SVar:X:Count$xPaid SVar:Picture:http://www.wizards.com/global/images/magic/general/lavalanche.jpg -Oracle:Lavalanche deals X damage to target player and each creature they control. +Oracle:Lavalanche deals X damage to target player or planeswalker and each creature that player or that planeswalker's controller controls. diff --git a/forge-gui/res/cardsfolder/l/leap_of_flame.txt b/forge-gui/res/cardsfolder/l/leap_of_flame.txt index b369c9a8dba..2205fb712b7 100644 --- a/forge-gui/res/cardsfolder/l/leap_of_flame.txt +++ b/forge-gui/res/cardsfolder/l/leap_of_flame.txt @@ -1,7 +1,7 @@ Name:Leap of Flame ManaCost:U R Types:Instant -K:Replicate U R +K:Replicate:U R A:SP$ Pump | Cost$ U R | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ 1 | KW$ Flying & First Strike | SpellDescription$ Target creature gets +1/+0 and gains flying and first strike until end of turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/leap_of_flame.jpg Oracle:Replicate {U}{R} (When you cast this spell, copy it for each time you paid its replicate cost. You may choose new targets for the copies.)\nTarget creature gets +1/+0 and gains flying and first strike until end of turn. diff --git a/forge-gui/res/cardsfolder/l/leeching_licid.txt b/forge-gui/res/cardsfolder/l/leeching_licid.txt index 44e5e996086..b78d2424640 100644 --- a/forge-gui/res/cardsfolder/l/leeching_licid.txt +++ b/forge-gui/res/cardsfolder/l/leeching_licid.txt @@ -2,7 +2,7 @@ Name:Leeching Licid ManaCost:1 B Types:Creature Licid PT:1/1 -A:AB$ Animate | Cost$ B T | Defined$ Self | RemoveThisAbility$ True | Permanent$ True | RevertCost$ B | Keywords$ Enchant creature | Abilities$ SPAttach | Types$ Enchantment,Aura | RemoveCardTypes$ True | RemoveSubTypes$ True | SubAbility$ DBAttach | SpellDescription$ CARDNAME loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {B} to end this effect. +A:AB$ Animate | Cost$ B T | Defined$ Self | RemoveThisAbility$ True | Permanent$ True | RevertCost$ B | Keywords$ Enchant creature | Abilities$ SPAttach | Types$ Enchantment,Aura | RemoveCardTypes$ True | RemoveEnchantmentTypes$ True | SubAbility$ DBAttach | SpellDescription$ CARDNAME loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {B} to end this effect. SVar:DBAttach:DB$ Attach | ValidTgts$ Creature | AILogic$ Curse SVar:SPAttach:SP$ Attach | Cost$ 0 | ValidTgts$ Creature T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ EnchantedController | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ At the beginning of the upkeep of enchanted creature's controller, CARDNAME deals 1 damage to that player. diff --git a/forge-gui/res/cardsfolder/l/lena_selfless_champion.txt b/forge-gui/res/cardsfolder/l/lena_selfless_champion.txt new file mode 100644 index 00000000000..0428fc99cd3 --- /dev/null +++ b/forge-gui/res/cardsfolder/l/lena_selfless_champion.txt @@ -0,0 +1,11 @@ +Name:Lena, Selfless Champion +ManaCost:4 W W +Types:Legendary Creature Human Knight +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, create a 1/1 white Soldier creature token for each nontoken creature you control. +SVar:TrigToken:DB$ Token | TokenOwner$ You | TokenAmount$ X | References$ X | TokenPower$ 1 | TokenToughness$ 1 | TokenColors$ White | TokenTypes$ Soldier,Creature | TokenImage$ w 1 1 soldier m19 +SVar:X:Count$Valid Creature.nonToken+YouCtrl +A:AB$ PumpAll | Cost$ Sac<1/CARDNAME> | ValidCards$ Creature.YouCtrl+powerLTY | KW$ Indestructible | SpellDescription$ Creatures you control with power less than CARDNAME's power gain indestructible until end of turn. +SVar:Y:Count$CardPower +DeckHas:Ability$Token +Oracle:When Lena, Selfless Champion enters the battlefield, create a 1/1 white Soldier creature token for each nontoken creature you control.\nSacrifice Lena: Creatures you control with power less than Lena's power gain indestructible until end of turn. +PT:3/3 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/l/leonin_shikari.txt b/forge-gui/res/cardsfolder/l/leonin_shikari.txt index f7fbf1a466d..cc1d4babd98 100644 --- a/forge-gui/res/cardsfolder/l/leonin_shikari.txt +++ b/forge-gui/res/cardsfolder/l/leonin_shikari.txt @@ -2,6 +2,6 @@ Name:Leonin Shikari ManaCost:1 W Types:Creature Cat Soldier PT:2/2 -S:Mode$ Continuous | AddHiddenKeyword$ EquipInstantSpeed | Affected$ Card.withEquip+YouCtrl | Description$ You may activate equip abilities any time you could cast an instant. +S:Mode$ Continuous | Affected$ You | AddKeyword$ EquipInstantSpeed | Description$ You may activate equip abilities any time you could cast an instant. SVar:Picture:http://www.wizards.com/global/images/magic/general/leonin_shikari.jpg Oracle:You may activate equip abilities any time you could cast an instant. diff --git a/forge-gui/res/cardsfolder/l/leonin_vanguard.txt b/forge-gui/res/cardsfolder/l/leonin_vanguard.txt new file mode 100644 index 00000000000..80945d56fdf --- /dev/null +++ b/forge-gui/res/cardsfolder/l/leonin_vanguard.txt @@ -0,0 +1,9 @@ +Name:Leonin Vanguard +ManaCost:W +Types:Creature Cat Soldier +T:Mode$ Phase | TriggerZones$ Battlefield | Phase$ BeginCombat | ValidPlayer$ You | Execute$ TrigPump | TriggerDescription$ At the beginning of combat on your turn, if you control three or more creatures, Leonin Vanguard gets +1/+1 until end of turn and you gain 1 life. +SVar:TrigPump:DB$ Pump | ConditionPresent$ Creature.YouCtrl | ConditionCompare$ GE3 | ValidCard$ Card.Self | NumAtt$ 1 | NumDef$ 1 | SubAbility$ DBGainLife +SVar:DBGainLife:DB$ GainLife | Defined$ You | ConditionPresent$ Creature.YouCtrl | ConditionCompare$ GE3 | LifeAmount$ 1 +DeckHas:Ability$LifeGain +Oracle:At the beginning of combat on your turn, if you control three or more creatures, Leonin Vanguard gets +1/+1 until end of turn and you gain 1 life. +PT:1/1 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/l/leonin_warleader.txt b/forge-gui/res/cardsfolder/l/leonin_warleader.txt new file mode 100644 index 00000000000..e2a5c18726d --- /dev/null +++ b/forge-gui/res/cardsfolder/l/leonin_warleader.txt @@ -0,0 +1,9 @@ +Name:Leonin Warleader +ManaCost:2 W W +Types:Creature Cat Soldier +PT:4/4 +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ Whenever CARDNAME attacks, create two 1/1 white Cat creature tokens with lifelink that are tapped and attacking. +SVar:TrigToken:DB$ Token | TokenAmount$ 2 | TokenName$ Cat | TokenTypes$ Creature,Cat | TokenOwner$ You | TokenColors$ White | TokenPower$ 1 | TokenToughness$ 1 | TokenKeywords$ Lifelink | TokenTapped$ True | TokenAttacking$ True | TokenImage$ w 1 1 cat M19 +SVar:HasAttackEffect:TRUE +DeckHas:Ability$Token +Oracle:Whenever Leonin Warleader attacks, create two 1/1 white Cat creature tokens with lifelink that are tapped and attacking. diff --git a/forge-gui/res/cardsfolder/l/leopard_spotted_jiao.txt b/forge-gui/res/cardsfolder/l/leopard_spotted_jiao.txt new file mode 100644 index 00000000000..aa6859c6d07 --- /dev/null +++ b/forge-gui/res/cardsfolder/l/leopard_spotted_jiao.txt @@ -0,0 +1,5 @@ +Name:Leopard-Spotted Jiao +ManaCost:1 R +Types:Creature Beast +Oracle: +PT:3/1 diff --git a/forge-gui/res/cardsfolder/l/ley_weaver.txt b/forge-gui/res/cardsfolder/l/ley_weaver.txt new file mode 100644 index 00000000000..8edaec16b94 --- /dev/null +++ b/forge-gui/res/cardsfolder/l/ley_weaver.txt @@ -0,0 +1,8 @@ +Name:Ley Weaver +ManaCost:3 G +Types:Creature Human Druid +PT:2/2 +K:Partner:Lore Weaver +A:AB$ Untap | Cost$ T | TargetMin$ 2 | TargetMax$ 2 | ValidTgts$ Land | TgtPrompt$ Select target land | SpellDescription$ Untap two target lands. +DeckHints:Name$Lore Weaver +Oracle:Partner with Lore Weaver (When this creature enters the battlefield, target player may put Lore Weaver into their hand from their library, then shuffle.)\n{T}: Untap two target lands. diff --git a/forge-gui/res/cardsfolder/l/leyline_of_lightning.txt b/forge-gui/res/cardsfolder/l/leyline_of_lightning.txt index 3bdcfe40e92..cc9834739f3 100644 --- a/forge-gui/res/cardsfolder/l/leyline_of_lightning.txt +++ b/forge-gui/res/cardsfolder/l/leyline_of_lightning.txt @@ -3,8 +3,8 @@ ManaCost:2 R R Types:Enchantment K:MayEffectFromOpeningHand:FromHand SVar:FromHand:DB$ ChangeZone | Defined$ Self | Origin$ Hand | Destination$ Battlefield | SpellDescription$ If CARDNAME is in your opening hand, you may begin the game with it on the battlefield. -T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever you cast a spell, you may pay {1}. If you do, CARDNAME deals 1 damage to target player. -SVar:TrigDealDamage:AB$DealDamage | Cost$ 1 | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 1 +T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever you cast a spell, you may pay {1}. If you do, CARDNAME deals 1 damage to target player or planeswalker. +SVar:TrigDealDamage:AB$DealDamage | Cost$ 1 | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/leyline_of_lightning.jpg -Oracle:If Leyline of Lightning is in your opening hand, you may begin the game with it on the battlefield.\nWhenever you cast a spell, you may pay {1}. If you do, Leyline of Lightning deals 1 damage to target player. +Oracle:If Leyline of Lightning is in your opening hand, you may begin the game with it on the battlefield.\nWhenever you cast a spell, you may pay {1}. If you do, Leyline of Lightning deals 1 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/l/lichs_caress.txt b/forge-gui/res/cardsfolder/l/lichs_caress.txt new file mode 100644 index 00000000000..641c7eb00a9 --- /dev/null +++ b/forge-gui/res/cardsfolder/l/lichs_caress.txt @@ -0,0 +1,6 @@ +Name:Lich's Caress +ManaCost:3 B B +Types:Sorcery +A:SP$ Destroy | Cost$ 3 B B | ValidTgts$ Creature | TgtPrompt$ Select target creature | SubAbility$ DBLifeGain | SpellDescription$ Destroy target creature. You gain 3 life. +SVar:DBLifeGain:DB$ GainLife | Defined$ You | LifeAmount$ 3 +Oracle:Destroy target creature. You gain 3 life. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/l/life_from_the_loam.txt b/forge-gui/res/cardsfolder/l/life_from_the_loam.txt index 0fbb7a213ce..67f129d692d 100644 --- a/forge-gui/res/cardsfolder/l/life_from_the_loam.txt +++ b/forge-gui/res/cardsfolder/l/life_from_the_loam.txt @@ -2,6 +2,6 @@ Name:Life from the Loam ManaCost:1 G Types:Sorcery A:SP$ ChangeZone | Cost$ 1 G | Origin$ Graveyard | Destination$ Hand | TargetMin$ 0 | TargetMax$ 3 | TgtPrompt$ Choose target land card in your graveyard | ValidTgts$ Land.YouCtrl | SpellDescription$ Return up to three target land cards from your graveyard to your hand. -K:Dredge 3 +K:Dredge:3 SVar:Picture:http://www.wizards.com/global/images/magic/general/life_from_the_loam.jpg Oracle:Return up to three target land cards from your graveyard to your hand.\nDredge 3 (If you would draw a card, instead you may put exactly three cards from the top of your library into your graveyard. If you do, return this card from your graveyard to your hand. Otherwise, draw a card.) diff --git a/forge-gui/res/cardsfolder/l/lightning_blast.txt b/forge-gui/res/cardsfolder/l/lightning_blast.txt index a7c4da8f547..c1f6f2a24b7 100644 --- a/forge-gui/res/cardsfolder/l/lightning_blast.txt +++ b/forge-gui/res/cardsfolder/l/lightning_blast.txt @@ -1,6 +1,6 @@ Name:Lightning Blast ManaCost:3 R Types:Instant -A:SP$ DealDamage | Cost$ 3 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target creature or player. +A:SP$ DealDamage | Cost$ 3 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/lightning_blast.jpg -Oracle:Lightning Blast deals 4 damage to target creature or player. +Oracle:Lightning Blast deals 4 damage to any target. diff --git a/forge-gui/res/cardsfolder/l/lightning_bolt.txt b/forge-gui/res/cardsfolder/l/lightning_bolt.txt index 1ca8e9b5722..6540042b419 100644 --- a/forge-gui/res/cardsfolder/l/lightning_bolt.txt +++ b/forge-gui/res/cardsfolder/l/lightning_bolt.txt @@ -1,6 +1,6 @@ Name:Lightning Bolt ManaCost:R Types:Instant -A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. +A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. SVar:Picture:http://resources.wizards.com/magic/cards/bd/en-us/card27255.jpg -Oracle:Lightning Bolt deals 3 damage to target creature or player. +Oracle:Lightning Bolt deals 3 damage to any target. diff --git a/forge-gui/res/cardsfolder/l/lightning_cloud.txt b/forge-gui/res/cardsfolder/l/lightning_cloud.txt index bf597202277..b8aa1d15944 100644 --- a/forge-gui/res/cardsfolder/l/lightning_cloud.txt +++ b/forge-gui/res/cardsfolder/l/lightning_cloud.txt @@ -1,7 +1,7 @@ Name:Lightning Cloud ManaCost:3 R Types:Enchantment -T:Mode$ SpellCast | ValidCard$ Card.Red | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever a player casts a red spell, you may pay {R}. If you do, CARDNAME deals 1 damage to target creature or player. -SVar:TrigDealDamage:AB$DealDamage | Cost$ R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 +T:Mode$ SpellCast | ValidCard$ Card.Red | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever a player casts a red spell, you may pay {R}. If you do, CARDNAME deals 1 damage to any target. +SVar:TrigDealDamage:AB$DealDamage | Cost$ R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/lightning_cloud.jpg -Oracle:Whenever a player casts a red spell, you may pay {R}. If you do, Lightning Cloud deals 1 damage to target creature or player. +Oracle:Whenever a player casts a red spell, you may pay {R}. If you do, Lightning Cloud deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/l/lightning_crafter.txt b/forge-gui/res/cardsfolder/l/lightning_crafter.txt index 8ad2a50784e..52405912de5 100644 --- a/forge-gui/res/cardsfolder/l/lightning_crafter.txt +++ b/forge-gui/res/cardsfolder/l/lightning_crafter.txt @@ -3,6 +3,6 @@ ManaCost:3 R Types:Creature Goblin Shaman PT:3/3 K:Champion:Goblin,Shaman -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/lightning_crafter.jpg -Oracle:Champion a Goblin or Shaman (When this enters the battlefield, sacrifice it unless you exile another Goblin or Shaman you control. When this leaves the battlefield, that card returns to the battlefield.)\n{T}: Lightning Crafter deals 3 damage to target creature or player. +Oracle:Champion a Goblin or Shaman (When this enters the battlefield, sacrifice it unless you exile another Goblin or Shaman you control. When this leaves the battlefield, that card returns to the battlefield.)\n{T}: Lightning Crafter deals 3 damage to any target. diff --git a/forge-gui/res/cardsfolder/l/lightning_diadem.txt b/forge-gui/res/cardsfolder/l/lightning_diadem.txt index d1398bf3951..0ea78beaf29 100644 --- a/forge-gui/res/cardsfolder/l/lightning_diadem.txt +++ b/forge-gui/res/cardsfolder/l/lightning_diadem.txt @@ -4,8 +4,8 @@ Types:Enchantment Aura K:Enchant creature S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 2 | AddToughness$ 2 | Description$ Enchanted creature gets +2/+2. A:SP$ Attach | Cost$ 5 R | ValidTgts$ Creature | AILogic$ Pump -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 2 damage to target creature or player. -SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 2 damage to any target. +SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 SVar:PlayMain1:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/lightning_diadem.jpg -Oracle:Enchant creature\nWhen Lightning Diadem enters the battlefield, it deals 2 damage to target creature or player.\nEnchanted creature gets +2/+2. +Oracle:Enchant creature\nWhen Lightning Diadem enters the battlefield, it deals 2 damage to any target.\nEnchanted creature gets +2/+2. diff --git a/forge-gui/res/cardsfolder/l/lightning_helix.txt b/forge-gui/res/cardsfolder/l/lightning_helix.txt index a78e1dc0c13..ef13ca4eee9 100644 --- a/forge-gui/res/cardsfolder/l/lightning_helix.txt +++ b/forge-gui/res/cardsfolder/l/lightning_helix.txt @@ -1,7 +1,7 @@ Name:Lightning Helix ManaCost:R W Types:Instant -A:SP$ DealDamage | Cost$ R W | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 3 damage to target creature or player and you gain 3 life. +A:SP$ DealDamage | Cost$ R W | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 3 damage to any target and you gain 3 life. SVar:DBGainLife:DB$ GainLife | LifeAmount$ 3 SVar:Picture:http://www.wizards.com/global/images/magic/general/lightning_helix.jpg -Oracle:Lightning Helix deals 3 damage to target creature or player and you gain 3 life. +Oracle:Lightning Helix deals 3 damage to any target and you gain 3 life. diff --git a/forge-gui/res/cardsfolder/l/lightning_javelin.txt b/forge-gui/res/cardsfolder/l/lightning_javelin.txt index c2c8a1eb492..d5e84b4abcf 100644 --- a/forge-gui/res/cardsfolder/l/lightning_javelin.txt +++ b/forge-gui/res/cardsfolder/l/lightning_javelin.txt @@ -1,7 +1,7 @@ Name:Lightning Javelin ManaCost:3 R Types:Sorcery -A:SP$ DealDamage | Cost$ 3 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SubAbility$ DBScry | SpellDescription$ CARDNAME deals 3 damage to target creature or player. Scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) +A:SP$ DealDamage | Cost$ 3 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SubAbility$ DBScry | SpellDescription$ CARDNAME deals 3 damage to any target. Scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) SVar:DBScry:DB$ Scry | ScryNum$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/lightning_javelin.jpg -Oracle:Lightning Javelin deals 3 damage to target creature or player. Scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) \ No newline at end of file +Oracle:Lightning Javelin deals 3 damage to any target. Scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/l/lightning_mare.txt b/forge-gui/res/cardsfolder/l/lightning_mare.txt new file mode 100644 index 00000000000..fcefe51038a --- /dev/null +++ b/forge-gui/res/cardsfolder/l/lightning_mare.txt @@ -0,0 +1,8 @@ +Name:Lightning Mare +ManaCost:R R +Types:Creature Elemental Horse +K:CARDNAME can't be countered. +K:CantBeBlockedBy Creature.Blue +A:AB$ Pump | Cost$ 1 R | ValidCard$ Card.Self | NumAtt$ +1 | NumDef$ +0 | SpellDescription$ CARDNAME gets +1/+0 until end of turn. +Oracle:This spell can't be countered.\nLightning Mare can't be blocked by blue creatures.\n{1}{R}: Lightning Mare gets +1/+0 until end of turn. +PT:3/1 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/l/lightning_prowess.txt b/forge-gui/res/cardsfolder/l/lightning_prowess.txt index 6f399597715..d7b65aae270 100644 --- a/forge-gui/res/cardsfolder/l/lightning_prowess.txt +++ b/forge-gui/res/cardsfolder/l/lightning_prowess.txt @@ -3,8 +3,8 @@ ManaCost:2 R Types:Enchantment Aura K:Enchant creature A:SP$ Attach | Cost$ 2 R | ValidTgts$ Creature | AILogic$ Pump -S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Haste | AddAbility$ Damage | Description$ Enchanted creature has haste and "{T}: This creature deals 1 damage to target creature or player." -SVar:Damage:AB$DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Haste | AddAbility$ Damage | Description$ Enchanted creature has haste and "{T}: This creature deals 1 damage to any target." +SVar:Damage:AB$DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:NonStackingAttachEffect:True SVar:Picture:http://www.wizards.com/global/images/magic/general/lightning_prowess.jpg -Oracle:Enchant creature\nEnchanted creature has haste and "{T}: This creature deals 1 damage to target creature or player." +Oracle:Enchant creature\nEnchanted creature has haste and "{T}: This creature deals 1 damage to any target." diff --git a/forge-gui/res/cardsfolder/l/lightning_rift.txt b/forge-gui/res/cardsfolder/l/lightning_rift.txt index aa8a33a0b7e..ef566adbf63 100644 --- a/forge-gui/res/cardsfolder/l/lightning_rift.txt +++ b/forge-gui/res/cardsfolder/l/lightning_rift.txt @@ -1,8 +1,8 @@ Name:Lightning Rift ManaCost:1 R Types:Enchantment -T:Mode$ Cycled | ValidCard$ Card | Execute$ TrigDamage | TriggerZones$ Battlefield | TriggerDescription$ Whenever a player cycles a card, you may pay {1}. If you do, CARDNAME deals 2 damage to target creature or player. -SVar:TrigDamage:AB$DealDamage | Cost$ 1 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 +T:Mode$ Cycled | ValidCard$ Card | Execute$ TrigDamage | TriggerZones$ Battlefield | TriggerDescription$ Whenever a player cycles a card, you may pay {1}. If you do, CARDNAME deals 2 damage to any target. +SVar:TrigDamage:AB$DealDamage | Cost$ 1 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/lightning_rift.jpg -Oracle:Whenever a player cycles a card, you may pay {1}. If you do, Lightning Rift deals 2 damage to target creature or player. +Oracle:Whenever a player cycles a card, you may pay {1}. If you do, Lightning Rift deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/l/lightning_storm.txt b/forge-gui/res/cardsfolder/l/lightning_storm.txt index f492f582a11..b3be72af0b1 100644 --- a/forge-gui/res/cardsfolder/l/lightning_storm.txt +++ b/forge-gui/res/cardsfolder/l/lightning_storm.txt @@ -1,10 +1,10 @@ Name:Lightning Storm ManaCost:1 R R Types:Instant -A:SP$ DealDamage | Cost$ 1 R R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to target creature or player, where X is 3 plus the number of charge counters on it. +A:SP$ DealDamage | Cost$ 1 R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to any target, where X is 3 plus the number of charge counters on it. SVar:X:Count$CardCounters.CHARGE/Plus.3 A:AB$ PutCounter | Cost$ Discard<1/Land> | CounterType$ CHARGE | CounterNum$ 2 | Defined$ Self | ActivationZone$ Stack | SubAbility$ DBChangeTarget | AnyPlayer$ True | SpellDescription$ Put two charge counters on CARDNAME. You may choose a new target for it. Any player may activate this ability but only if CARDNAME is on the stack. SVar:DBChangeTarget:DB$ ChangeTargets | Defined$ SourceFirstSpell | Optional$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/lightning_storm.jpg -Oracle:Lightning Storm deals X damage to target creature or player, where X is 3 plus the number of charge counters on it.\nDiscard a land card: Put two charge counters on Lightning Storm. You may choose a new target for it. Any player may activate this ability but only if Lightning Storm is on the stack. +Oracle:Lightning Storm deals X damage to any target, where X is 3 plus the number of charge counters on it.\nDiscard a land card: Put two charge counters on Lightning Storm. You may choose a new target for it. Any player may activate this ability but only if Lightning Storm is on the stack. diff --git a/forge-gui/res/cardsfolder/l/lightning_strike.txt b/forge-gui/res/cardsfolder/l/lightning_strike.txt index 4bf686dc978..6f6633d681a 100644 --- a/forge-gui/res/cardsfolder/l/lightning_strike.txt +++ b/forge-gui/res/cardsfolder/l/lightning_strike.txt @@ -1,6 +1,6 @@ Name:Lightning Strike ManaCost:1 R Types:Instant -A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. +A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/lightning_strike.jpg -Oracle:Lightning Strike deals 3 damage to target creature or player. +Oracle:Lightning Strike deals 3 damage to any target. diff --git a/forge-gui/res/cardsfolder/l/lightning_surge.txt b/forge-gui/res/cardsfolder/l/lightning_surge.txt index 1f5bf7a9b47..d93794fd755 100644 --- a/forge-gui/res/cardsfolder/l/lightning_surge.txt +++ b/forge-gui/res/cardsfolder/l/lightning_surge.txt @@ -1,9 +1,9 @@ Name:Lightning Surge ManaCost:3 R R Types:Sorcery -K:Flashback 5 R R -A:SP$ DealDamage | Cost$ 3 R R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 4 | SubAbility$ DBDamage | ConditionCheckSVar$ X | ConditionSVarCompare$ LT7 | References$ X | SpellDescription$ CARDNAME deals 4 damage to target creature or player. -SVar:DBDamage:DB$ DealDamage | Defined$ Targeted | NumDmg$ 6 | NoPrevention$ True | ConditionCheckSVar$ X | ConditionSVarCompare$ GE7 | References$ X | SpellDescription$ Threshold — If seven or more cards are in your graveyard, instead CARDNAME deals 6 damage to that creature or player and the damage can't be prevented. +K:Flashback:5 R R +A:SP$ DealDamage | Cost$ 3 R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 4 | SubAbility$ DBDamage | ConditionCheckSVar$ X | ConditionSVarCompare$ LT7 | References$ X | SpellDescription$ CARDNAME deals 4 damage to any target. +SVar:DBDamage:DB$ DealDamage | Defined$ Targeted | NumDmg$ 6 | NoPrevention$ True | ConditionCheckSVar$ X | ConditionSVarCompare$ GE7 | References$ X | SpellDescription$ Threshold — If seven or more cards are in your graveyard, instead CARDNAME deals 6 damage to it and the damage can't be prevented. SVar:X:Count$InYourYard SVar:Picture:http://www.wizards.com/global/images/magic/general/lightning_surge.jpg -Oracle:Lightning Surge deals 4 damage to target creature or player.\nThreshold — If seven or more cards are in your graveyard, instead Lightning Surge deals 6 damage to that creature or player and the damage can't be prevented.\nFlashback {5}{R}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.) +Oracle:Lightning Surge deals 4 damage to any target.\nThreshold — If seven or more cards are in your graveyard, instead Lightning Surge deals 6 damage to it and the damage can't be prevented.\nFlashback {5}{R}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/l/lightning_volley.txt b/forge-gui/res/cardsfolder/l/lightning_volley.txt index 97874f67d12..53aa12e0fc4 100644 --- a/forge-gui/res/cardsfolder/l/lightning_volley.txt +++ b/forge-gui/res/cardsfolder/l/lightning_volley.txt @@ -1,8 +1,8 @@ Name:Lightning Volley ManaCost:3 R Types:Instant -A:SP$ AnimateAll | Cost$ 3 R | ValidCards$ Creature.YouCtrl | Abilities$ LVAbs | SpellDescription$ Until end of turn, creatures you control gain "{T}: This creature deals 1 damage to target creature or player." -SVar:LVAbs:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:SP$ AnimateAll | Cost$ 3 R | ValidCards$ Creature.YouCtrl | Abilities$ LVAbs | SpellDescription$ Until end of turn, creatures you control gain "{T}: This creature deals 1 damage to any target." +SVar:LVAbs:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/lightning_volley.jpg -Oracle:Until end of turn, creatures you control gain "{T}: This creature deals 1 damage to target creature or player." +Oracle:Until end of turn, creatures you control gain "{T}: This creature deals 1 damage to any target." diff --git a/forge-gui/res/cardsfolder/l/liliana_heretical_healer.txt b/forge-gui/res/cardsfolder/l/liliana_heretical_healer.txt index df59add92a7..56984160e8c 100644 --- a/forge-gui/res/cardsfolder/l/liliana_heretical_healer.txt +++ b/forge-gui/res/cardsfolder/l/liliana_heretical_healer.txt @@ -5,7 +5,7 @@ PT:2/3 K:Lifelink T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.nonToken+Other+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigTransform | TriggerDescription$ Whenever another nontoken creature you control dies, exile CARDNAME, then return her to the battlefield transformed under her owner's control. If you do, create a 2/2 black Zombie creature token. SVar:TrigTransform:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | SubAbility$ DBReturn -SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | Transformed$ True | WithCounters$ LOYALTY_3 | ForgetOtherRemembered$ True | RememberChanged$ True | SubAbility$ DBToken +SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | Transformed$ True | ForgetOtherRemembered$ True | RememberChanged$ True | SubAbility$ DBToken SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenName$ Zombie | TokenTypes$ Creature,Zombie | TokenOwner$ You | TokenColors$ Black | TokenPower$ 2 | TokenToughness$ 2 | TokenImage$ b 2 2 zombie ORI | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/liliana_heretical_healer.jpg diff --git a/forge-gui/res/cardsfolder/l/liliana_the_necromancer.txt b/forge-gui/res/cardsfolder/l/liliana_the_necromancer.txt new file mode 100644 index 00000000000..43250ac2a25 --- /dev/null +++ b/forge-gui/res/cardsfolder/l/liliana_the_necromancer.txt @@ -0,0 +1,10 @@ +Name:Liliana, the Necromancer +ManaCost:3 B B +Types:Legendary Planeswalker Liliana +Loyalty:4 +A:AB$ LoseLife | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | ValidTgts$ Player | LifeAmount$ 2 | SpellDescription$ Target player loses 2 life. +A:AB$ ChangeZone | Cost$ SubCounter<1/LOYALTY> | Planeswalker$ True | Origin$ Graveyard | Destination$ Hand | TgtPrompt$ Select target creature card in your graveyard | ValidTgts$ Creature.YouCtrl | SpellDescription$ Return target creature card from your graveyard to your hand. +A:AB$ Destroy | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True | TargetMin$ 0 | TargetMax$ 2 | ValidTgts$ Creature | SubAbility$ DBChooseCard | TgtPrompt$ Select target creature | SpellDescription$ Destroy up to two target creatures. Put up to two creature cards from graveyards onto the battlefield under your control. +SVar:DBChooseCard:DB$ ChooseCard | Choices$ Creature | ChoiceZone$ Graveyard | Amount$ 2 | SubAbility$ DBChangeZone | SpellDescription$ Put up to two creature cards from graveyards onto the battlefield under your control. +SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | Defined$ ChosenCard | GainControl$ True +Oracle:[+1]: Target player loses 2 life.\n[−1]: Return target creature card from your graveyard to your hand.\n[−7]: Destroy up to two target creatures. Put up to two creature cards from graveyards onto the battlefield under your control. diff --git a/forge-gui/res/cardsfolder/l/liliana_untouched_by_death.txt b/forge-gui/res/cardsfolder/l/liliana_untouched_by_death.txt new file mode 100644 index 00000000000..c44f387538d --- /dev/null +++ b/forge-gui/res/cardsfolder/l/liliana_untouched_by_death.txt @@ -0,0 +1,14 @@ +Name:Liliana, Untouched by Death +ManaCost:2 B B +Types:Legendary Planeswalker Liliana +Loyalty:4 +A:AB$ Mill | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | NumCards$ 3 | Defined$ You | Triggers$ ZombieMill | SpellDescription$ Put the top three cards of your library into your graveyard. If at least one of them is a Zombie card, each opponent loses 2 life and you gain 2 life. +SVar:ZombieMIll:Mode$ ChangesZone | ValidCard$ Zombie | Origin$ Library | Destination$ Graveyard | Execute$ DBLifeDrain | TriggerDescription$ If at least one of them is a Zombie card, each opponent loses 2 life and you gain 2 life. +SVar:DBLifeDrain:DB$ LoseLife | Defined$ Player.Opponent | LifeAmount$ 2 | SubAbility$ DBGainLife +SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 2 +A:AB$ Pump | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature | TgtPrompt$ Select target creature | IsCurse$ True | NumAtt$ -X | NumDef$ -X | References$ X | SpellDescription$ Target creature gets -X/-X until end of turn, where X is the number of Zombies you control. +SVar:X:Count$Valid Zombie.YouCtrl +A:AB$ Effect | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | Ultimate$ True | Stackable$ False | StaticAbilities$ ZombieCast | SpellDescription$ Until end of turn you may cast Zombie cards from your graveyard. +SVar:ZombieCast:Mode$ Continuous | Affected$ Zombie.YouCtrl | MayPlay$ True | EffectZone$ Command | AffectedZone$ Graveyard | Description$ You may cast Zombie cards from your graveyard this turn. +DeckHints:Type$Zombie +Oracle:[+1]:Put the top three cards of your library into your graveyard. If at least one of them is a Zombie card, each opponent loses 2 life and you gain 2 life.\n[-2]:Target creature gets -X/-X until end of turn, where X is the number of Zombies you control.\n[-3]: You may cast Zombie cards from your graveyard this turn. diff --git a/forge-gui/res/cardsfolder/l/lilianas_contract.txt b/forge-gui/res/cardsfolder/l/lilianas_contract.txt new file mode 100644 index 00000000000..ae6121f04eb --- /dev/null +++ b/forge-gui/res/cardsfolder/l/lilianas_contract.txt @@ -0,0 +1,11 @@ +Name:Liliana's Contract +ManaCost:3 B B +Types:Enchantment +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ DBWin | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your upkeep, if you control four or more Demons with different names, you win the game. +SVar:DBWin:DB$ WinsGame | Defined$ You | ConditionCheckSVar$ Contractors | ConditionSVarCompare$ GE4 | References$ Contractors +SVar:Contractors:Count$DifferentCardNames_Demon.YouCtrl+inZoneBattlefield +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerDescription$ When CARDNAME enters the battlefield, you draw 4 cards and you lose 4 life. +SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 4 | SubAbility$ DBLoseLife +SVar:DBLoseLife:DB$ LoseLife | LifeAmount$ 4 +SVar:RemRandomDeck:True +Oracle:When CARDNAME enters the battlefield, you draw 4 cards and you lose 4 life.\nAt the beginning of your upkeep, if you control four or more Demons with different names, you win the game. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/l/lilianas_spoils.txt b/forge-gui/res/cardsfolder/l/lilianas_spoils.txt new file mode 100644 index 00000000000..fb04d76f6ab --- /dev/null +++ b/forge-gui/res/cardsfolder/l/lilianas_spoils.txt @@ -0,0 +1,7 @@ +Name:Liliana's Spoils +ManaCost:3 B +Types:Sorcery +A:SP$ Discard | Cost$ 3 B | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | NumCards$ 1 | Mode$ TgtChoose | SubAbility$ DBDig | SpellDescription$ Target opponent discards a card.\nLook at the top five cards of your library. You may reveal a black card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. +SVar:DBDig:DB$ Dig | DigNum$ 5 | ChangeNum$ 1 | Optional$ True | ForceRevealToController$ True | ChangeValid$ Card.Black | RestRandomOrder$ True +DeckHas:Ability$Discard +Oracle:Target opponent discards a card.\nLook at the top five cards of your library. You may reveal a black card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/l/lingering_mirage.txt b/forge-gui/res/cardsfolder/l/lingering_mirage.txt index 5cd26cb77eb..a517fb4e6dc 100644 --- a/forge-gui/res/cardsfolder/l/lingering_mirage.txt +++ b/forge-gui/res/cardsfolder/l/lingering_mirage.txt @@ -3,7 +3,7 @@ ManaCost:1 U Types:Enchantment Aura K:Enchant land A:SP$ Attach | Cost$ 1 U | ValidTgts$ Land | AILogic$ ChangeType -S:Mode$ Continuous | Affected$ Card.EnchantedBy | AddType$ Island | RemoveSubTypes$ True | RemoveAllAbilities$ True | Description$ Enchanted land is an Island. +S:Mode$ Continuous | Affected$ Card.EnchantedBy | AddType$ Island | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True | Description$ Enchanted land is an Island. K:Cycling:2 SVar:Picture:http://www.wizards.com/global/images/magic/general/lingering_mirage.jpg Oracle:Enchant land\nEnchanted land is an Island.\nCycling {2} ({2}, Discard this card: Draw a card.) diff --git a/forge-gui/res/cardsfolder/l/lingering_souls.txt b/forge-gui/res/cardsfolder/l/lingering_souls.txt index 46b3b20b0d8..82b745dcde0 100644 --- a/forge-gui/res/cardsfolder/l/lingering_souls.txt +++ b/forge-gui/res/cardsfolder/l/lingering_souls.txt @@ -1,7 +1,7 @@ Name:Lingering Souls ManaCost:2 W Types:Sorcery -K:Flashback 1 B +K:Flashback:1 B A:SP$ Token | Cost$ 2 W | TokenImage$ w 1 1 spirit ISD | TokenAmount$ 2 | TokenName$ Spirit | TokenTypes$ Creature,Spirit | TokenOwner$ You | TokenColors$ White | TokenPower$ 1 | TokenToughness$ 1 | TokenKeywords$ Flying | SpellDescription$ Create two 1/1 white Spirit creature tokens with flying. DeckHas:Ability$Token SVar:Picture:http://www.wizards.com/global/images/magic/general/lingering_souls.jpg diff --git a/forge-gui/res/cardsfolder/l/llanowar_envoy.txt b/forge-gui/res/cardsfolder/l/llanowar_envoy.txt index fcbf77b130b..bff7c420dc1 100644 --- a/forge-gui/res/cardsfolder/l/llanowar_envoy.txt +++ b/forge-gui/res/cardsfolder/l/llanowar_envoy.txt @@ -3,5 +3,4 @@ ManaCost:2 G Types:Creature Elf Scout PT:3/2 A:AB$ Mana | Cost$ 1 G | Produced$ Any | SpellDescription$ Add one mana of any color. -SVar:RemAIDeck:True Oracle:{1}{G}: Add one mana of any color. diff --git a/forge-gui/res/cardsfolder/l/lord_windgrace.txt b/forge-gui/res/cardsfolder/l/lord_windgrace.txt new file mode 100644 index 00000000000..d6223fe7aed --- /dev/null +++ b/forge-gui/res/cardsfolder/l/lord_windgrace.txt @@ -0,0 +1,13 @@ +Name:Lord Windgrace +ManaCost:2 B R G +Types:Legendary Planeswalker Windgrace +Loyalty:5 +A:AB$ Discard | Cost$ AddCounter<2/LOYALTY> | Planeswalker$ True | Defined$ You | NumCards$ 1 | Mode$ TgtChoose | RememberDiscarded$ True | SubAbility$ DBDraw | SpellDescription$ Discard a card, then draw a card. If a land card is discarded this way, draw an additional card. +SVar:DBDraw:DB$ Draw | NumCards$ 1 | SubAbility$ DBDraw2 +SVar:DBDraw2:DB$ Draw | NumCards$ 1 | ConditionDefined$ Remembered | ConditionPresent$ Land | ConditionCompare$ EQ1 | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +A:AB$ ChangeZone | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | Origin$ Graveyard | Destination$ Battlefield | TargetMin$ 0 | TargetMax$ 2 | TgtPrompt$ Choose target land card in your graveyard | ValidTgts$ Land.YouCtrl | SpellDescription$ Return up to two target land cards from your graveyard to the battlefield. +A:AB$ Destroy | Cost$ SubCounter<11/LOYALTY> | Planeswalker$ True | Ultimate$ True | ValidTgts$ Permanent.nonLand | TgtPrompt$ Select target nonland permanent | TargetMin$ 0 | TargetMax$ 6 | SubAbility$ DBToken | SpellDescription$ Destroy up to six target nonland permanents, then create six 2/2 green Cat Warrior creature tokens with forestwalk. +SVar:DBToken:DB$ Token | TokenAmount$ 6 | TokenName$ Cat Warrior | TokenTypes$ Creature,Cat,Warrior | TokenOwner$ You | TokenColors$ Green | TokenPower$ 2 | TokenToughness$ 2 | TokenKeywords$ Forestwalk | TokenImage$ g 2 2 cat warrior c18 +K:CARDNAME can be your commander. +Oracle:[+2]: Discard a card, then draw a card. If a land card is discarded this way, draw an additional card.\n[-3]: Return up to two target land cards from your graveyard to the battlefield.\n[-11]: Destroy up to six target nonland permanents, then create six 2/2 green Cat Warrior creature tokens with forestwalk.\nLord Windgrace can be your commander. diff --git a/forge-gui/res/cardsfolder/l/lore_weaver.txt b/forge-gui/res/cardsfolder/l/lore_weaver.txt new file mode 100644 index 00000000000..8897e63a7ce --- /dev/null +++ b/forge-gui/res/cardsfolder/l/lore_weaver.txt @@ -0,0 +1,8 @@ +Name:Lore Weaver +ManaCost:3 U +Types:Creature Human Wizard +PT:2/2 +K:Partner:Ley Weaver +A:AB$ Draw | Cost$ 5 U U | NumCards$ 2 | ValidTgts$ Player | TgtPrompt$ Choose a player | SpellDescription$ Target player draws two cards. +DeckHints:Name$Ley Weaver +Oracle:Partner with Ley Weaver (When this creature enters the battlefield, target player may put Ley Weaver into their hand from their library, then shuffle.)\n{5}{U}{U}: Target player draws two cards. diff --git a/forge-gui/res/cardsfolder/l/loxodon_anchorite.txt b/forge-gui/res/cardsfolder/l/loxodon_anchorite.txt index 8a459028d8c..50a4b3ee1a9 100644 --- a/forge-gui/res/cardsfolder/l/loxodon_anchorite.txt +++ b/forge-gui/res/cardsfolder/l/loxodon_anchorite.txt @@ -2,6 +2,6 @@ Name:Loxodon Anchorite ManaCost:2 W W Types:Creature Elephant Cleric PT:2/3 -A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 2 | SpellDescription$ Prevent the next 2 damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 2 | SpellDescription$ Prevent the next 2 damage that would be dealt to any target this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/loxodon_anchorite.jpg -Oracle:{T}: Prevent the next 2 damage that would be dealt to target creature or player this turn. +Oracle:{T}: Prevent the next 2 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/l/loxodon_line_breaker.txt b/forge-gui/res/cardsfolder/l/loxodon_line_breaker.txt new file mode 100644 index 00000000000..80fffa330df --- /dev/null +++ b/forge-gui/res/cardsfolder/l/loxodon_line_breaker.txt @@ -0,0 +1,5 @@ +Name:Loxodon Line Breaker +ManaCost:2 W +Types:Creature Elephant Soldier +Oracle: +PT:3/2 diff --git a/forge-gui/res/cardsfolder/l/loyal_apprentice.txt b/forge-gui/res/cardsfolder/l/loyal_apprentice.txt new file mode 100644 index 00000000000..44f67156e48 --- /dev/null +++ b/forge-gui/res/cardsfolder/l/loyal_apprentice.txt @@ -0,0 +1,13 @@ +Name:Loyal Apprentice +ManaCost:1 R +Types:Creature Human Artificer +PT:2/1 +K:Haste +T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | CheckSVar$ X | SVarCompare$ GE1 | References$ X | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Lieutenant - at the beginning of combat on your turn, if you control your commander, create a 1/1 colorless Thopter artifact creature token with flying. That token gains haste until end of turn. +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenName$ Thopter | TokenTypes$ Artifact,Creature,Thopter | TokenOwner$ You | TokenColors$ Colorless | TokenPower$ 1 | TokenToughness$ 1 | TokenKeywords$ Flying | RememberTokens$ True | TokenImage$ c 1 1 thopter c18 | TokenAltImages$ c 1 1 thopter2 c18 | SubAbility$ DBPump +SVar:DBPump:DB$ Pump | Defined$ Remembered | KW$ Haste | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:Count$Valid Card.IsCommander+YouOwn+YouCtrl +DeckHas:Ability$Token +DeckHints:Ability$Token +Oracle:Haste\nLieutenant — At the beginning of combat on your turn, if you control your commander, create a 1/1 colorless Thopter artifact creature token with flying. That token gains haste until end of turn. diff --git a/forge-gui/res/cardsfolder/l/loyal_drake.txt b/forge-gui/res/cardsfolder/l/loyal_drake.txt new file mode 100644 index 00000000000..febd4bd2438 --- /dev/null +++ b/forge-gui/res/cardsfolder/l/loyal_drake.txt @@ -0,0 +1,9 @@ +Name:Loyal Drake +ManaCost:2 U +Types:Creature Drake +PT:2/2 +K:Flying +T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | TriggerZones$ Battlefield | IsPresent$ Card.IsCommander+YouOwn+YouCtrl | Execute$ TrigDraw | TriggerDescription$ At the beginning of combat on your turn, if you control your commander, draw a card. +SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1 +SVar:RemRandomDeck:True +Oracle:Flying\nLieutenant — At the beginning of combat on your turn, if you control your commander, draw a card. diff --git a/forge-gui/res/cardsfolder/l/loyal_guardian.txt b/forge-gui/res/cardsfolder/l/loyal_guardian.txt new file mode 100644 index 00000000000..77ed62d8044 --- /dev/null +++ b/forge-gui/res/cardsfolder/l/loyal_guardian.txt @@ -0,0 +1,9 @@ +Name:Loyal Guardian +ManaCost:4 G +Types:Creature Rhino +PT:4/4 +K:Trample +T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | TriggerZones$ Battlefield | IsPresent$ Card.IsCommander+YouOwn+YouCtrl | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of combat on your turn, if you control your commander, put a +1/+1 counter on each creature you control. +SVar:TrigPutCounter:DB$ PutCounterAll | ValidCards$ Creature.YouCtrl | CounterType$ P1P1 | CounterNum$ 1 +DeckHints:Ability$IsCommander +Oracle:Trample\nLieutenant — At the beginning of combat on your turn, if you control your commander, put a +1/+1 counter on each creature you control. diff --git a/forge-gui/res/cardsfolder/l/loyal_subordinate.txt b/forge-gui/res/cardsfolder/l/loyal_subordinate.txt new file mode 100644 index 00000000000..56f6d4c9bd2 --- /dev/null +++ b/forge-gui/res/cardsfolder/l/loyal_subordinate.txt @@ -0,0 +1,8 @@ +Name:Loyal Subordinate +ManaCost:2 B +Types:Creature Zombie +PT:3/1 +K:Menace +T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | TriggerZones$ Battlefield | IsPresent$ Card.IsCommander+YouOwn+YouCtrl | Execute$ TrigLoseLife | TriggerDescription$ At the beginning of combat on your turn, if you control your commander, each opponent loses 3 life. +SVar:TrigLoseLife:DB$ LoseLife | Defined$ Player.Opponent | LifeAmount$ 3 +Oracle:Menace\nLieutenant — At the beginning of combat on your turn, if you control your commander, each opponent loses 3 life. diff --git a/forge-gui/res/cardsfolder/l/loyal_unicorn.txt b/forge-gui/res/cardsfolder/l/loyal_unicorn.txt new file mode 100644 index 00000000000..98f5a0b1733 --- /dev/null +++ b/forge-gui/res/cardsfolder/l/loyal_unicorn.txt @@ -0,0 +1,13 @@ +Name:Loyal Unicorn +ManaCost:3 W +Types:Creature Unicorn +PT:3/4 +K:Vigilance +T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | CheckSVar$ X | SVarCompare$ GE1 | References$ X | TriggerZones$ Battlefield | Execute$ PreventEffect | TriggerDescription$ At the beginning of combat on your turn, if you control your commander, prevent all combat damage that would be dealt to creatures you control this turn. +SVar:PreventEffect:DB$ Effect | ReplacementEffects$ RPrevent | References$ RPrevent | ValidTgts$ You | Description$ Prevent all combat damage that would be dealt to creatures you control this turn. +SVar:RPrevent:Event$ DamageDone | Prevent$ True | IsCombat$ True | ActiveZones$ Command | ValidTarget$ Creature.YouCtrl | Description$ Prevent all combat damage that would be dealt to creatures you control this turn. +S:Mode$ Continuous | Affected$ Creature.Other+YouCtrl | AddKeyword$ Vigilance | Description$ Other creatures you control gain vigilance until end of turn. +SVar:X:Count$Valid Card.IsCommander+YouOwn+YouCtrl +SVar:BuffedBy:Card.IsCommander +SVar:RemRandomDeck:True +Oracle:Vigilance\nLieutenant — At the beginning of combat on your turn, if you control your commander, prevent all combat damage that would be dealt to creatures you control this turn. Other creatures you control gain vigilance until end of turn. diff --git a/forge-gui/res/cardsfolder/l/ludevics_test_subject_ludevics_abomination.txt b/forge-gui/res/cardsfolder/l/ludevics_test_subject_ludevics_abomination.txt index bb624bb9982..8d653515cfe 100644 --- a/forge-gui/res/cardsfolder/l/ludevics_test_subject_ludevics_abomination.txt +++ b/forge-gui/res/cardsfolder/l/ludevics_test_subject_ludevics_abomination.txt @@ -1,13 +1,13 @@ Name:Ludevic's Test Subject ManaCost:1 U -Types:Creature Lizard +Types:Creature Lizard Egg PT:0/3 K:Defender -A:AB$PutCounter | Cost$ 1 U | Defined$ Self | CounterType$ HATCHLING | CounterNum$ 1 | SubAbility$ DBTransform | SpellDescription$ Put a hatchling counter on CARDNAME. Then if there are five or more hatchling counters on it, remove all of them and transform it. -SVar:DBRemCounter:DB$ RemoveCounter | CounterType$ HATCHLING | CounterNum$ All | ConditionCheckSVar$ X | References$ X -SVar:DBTransform:DB$SetState | Defined$ Self | ConditionCheckSVar$ X | SubAbility$ DBRemCounter | Mode$ Transform | References$ X -SVar:X:Count$Valid Card.Self+counters_GE5_HATCHLING -SVar:All:Count$CardCounters.HATCHLING +A:AB$PutCounter | Cost$ 1 U | Defined$ Self | CounterType$ HATCHLING | CounterNum$ 1 | AILogic$ CheckDFC | SubAbility$ DBBranch | SpellDescription$ Put a hatchling counter on CARDNAME. Then if there are five or more hatchling counters on it, remove all of them and transform it. +SVar:DBBranch:DB$ Branch | BranchConditionSVar$ HatchTimer | References$ HatchTimer | TrueSubAbility$ DBRemoveCtrs +SVar:DBRemoveCtrs:DB$ RemoveCounter | Defined$ Self | CounterType$ HATCHLING | CounterNum$ All | SubAbility$ DBTransform +SVar:DBTransform:DB$ SetState | Defined$ Self | Mode$ Transform +SVar:HatchTimer:Count$Valid Card.Self+counters_GE5_HATCHLING SVar:Picture:http://www.wizards.com/global/images/magic/general/ludevics_test_subject.jpg AlternateMode:DoubleFaced Oracle:Defender\n{1}{U}: Put a hatchling counter on Ludevic's Test Subject. Then if there are five or more hatchling counters on it, remove all of them and transform it. @@ -20,8 +20,5 @@ Colors:blue Types:Creature Lizard Horror PT:13/13 K:Trample -#Special case: SVars must be here as well because by the time it's needed, the card will have transformed. -SVar:X:Count$Valid Card.Self+counters_GE5_HATCHLING -SVar:All:Count$CardCounters.HATCHLING SVar:Picture:http://www.wizards.com/global/images/magic/general/ludevics_abomination.jpg Oracle:Trample diff --git a/forge-gui/res/cardsfolder/l/lunge.txt b/forge-gui/res/cardsfolder/l/lunge.txt index 2eb7f789e71..3f30e513aa7 100644 --- a/forge-gui/res/cardsfolder/l/lunge.txt +++ b/forge-gui/res/cardsfolder/l/lunge.txt @@ -1,7 +1,7 @@ Name:Lunge ManaCost:2 R Types:Instant -A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 2 | SubAbility$ DB1 | SpellDescription$ CARDNAME deals 2 damage to target creature and 2 damage to target player. -SVar:DB1:DB$DealDamage | NumDmg$ 2 | ValidTgts$ Player | TgtPrompt$ Select target player +A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 2 | SubAbility$ DB1 | SpellDescription$ CARDNAME deals 2 damage to target creature and 2 damage to target player or planeswalker. +SVar:DB1:DB$DealDamage | NumDmg$ 2 | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker SVar:Picture:http://www.wizards.com/global/images/magic/general/lunge.jpg -Oracle:Lunge deals 2 damage to target creature and 2 damage to target player. +Oracle:Lunge deals 2 damage to target creature and 2 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/l/lurking_evil.txt b/forge-gui/res/cardsfolder/l/lurking_evil.txt index 5caaa2a278d..6f091155929 100644 --- a/forge-gui/res/cardsfolder/l/lurking_evil.txt +++ b/forge-gui/res/cardsfolder/l/lurking_evil.txt @@ -1,7 +1,7 @@ Name:Lurking Evil ManaCost:B B B Types:Enchantment -A:AB$ Animate | Cost$ PayLife | Types$ Creature,Horror | Power$ 4 | Toughness$ 4 | Keywords$ Flying | OverwriteTypes$ True | Permanent$ True | CostDesc$ Pay half your life, rounded up: | References$ X | SpellDescription$ CARDNAME becomes a 4/4 Horror creature with flying. +A:AB$ Animate | Cost$ PayLife | Types$ Creature,Horror | Power$ 4 | Toughness$ 4 | Keywords$ Flying | RemoveCardTypes$ True | Permanent$ True | CostDesc$ Pay half your life, rounded up: | References$ X | SpellDescription$ CARDNAME becomes a 4/4 Horror creature with flying. SVar:X:Count$YourLifeTotal/HalfUp SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/lurking_evil.jpg diff --git a/forge-gui/res/cardsfolder/l/lurking_jackals.txt b/forge-gui/res/cardsfolder/l/lurking_jackals.txt index 2b73272e7e9..c7583493b7d 100644 --- a/forge-gui/res/cardsfolder/l/lurking_jackals.txt +++ b/forge-gui/res/cardsfolder/l/lurking_jackals.txt @@ -2,6 +2,6 @@ Name:Lurking Jackals ManaCost:B Types:Enchantment T:Mode$ Always | LifeTotal$ OpponentSmallest | LifeAmount$ LE10 | TriggerZones$ Battlefield | Execute$ TrigLurkingJackalsAnimate | IsPresent$ Card.Self+Enchantment | ResolvingCheck$ IsPresent | TriggerDescription$ When an opponent has 10 or less life, if CARDNAME is an enchantment, CARDNAME becomes a 3/2 Jackal creature. -SVar:TrigLurkingJackalsAnimate:DB$ Animate | Types$ Creature,Jackal | Power$ 3 | Toughness$ 2 | OverwriteTypes$ True | Permanent$ True +SVar:TrigLurkingJackalsAnimate:DB$ Animate | Types$ Creature,Jackal | Power$ 3 | Toughness$ 2 | RemoveCardTypes$ True | Permanent$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/lurking_jackals.jpg Oracle:When an opponent has 10 or less life, if Lurking Jackals is an enchantment, it becomes a 3/2 Jackal creature. diff --git a/forge-gui/res/cardsfolder/l/lurking_skirge.txt b/forge-gui/res/cardsfolder/l/lurking_skirge.txt index ebe5eff0517..9ee4d32430f 100644 --- a/forge-gui/res/cardsfolder/l/lurking_skirge.txt +++ b/forge-gui/res/cardsfolder/l/lurking_skirge.txt @@ -2,6 +2,6 @@ Name:Lurking Skirge ManaCost:1 B Types:Enchantment T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | TriggerZones$ Battlefield | ValidCard$ Creature.OppOwn | IsPresent$ Card.Self+Enchantment | Execute$ TrigAnimate | TriggerDescription$ When a creature is put into an opponent's graveyard from the battlefield, if CARDNAME is an enchantment, CARDNAME becomes a 3/2 Imp creature with flying. -SVar:TrigAnimate:DB$ Animate | Defined$ Self | Power$ 3 | Toughness$ 2 | Types$ Creature,Imp | Keywords$ Flying | OverwriteTypes$ True | Permanent$ True +SVar:TrigAnimate:DB$ Animate | Defined$ Self | Power$ 3 | Toughness$ 2 | Types$ Creature,Imp | Keywords$ Flying | RemoveCardTypes$ True | Permanent$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/lurking_skirge.jpg Oracle:When a creature is put into an opponent's graveyard from the battlefield, if Lurking Skirge is an enchantment, Lurking Skirge becomes a 3/2 Imp creature with flying. diff --git a/forge-gui/res/cardsfolder/l/lush_growth.txt b/forge-gui/res/cardsfolder/l/lush_growth.txt index 476cb74064b..e01915fc5b6 100644 --- a/forge-gui/res/cardsfolder/l/lush_growth.txt +++ b/forge-gui/res/cardsfolder/l/lush_growth.txt @@ -3,7 +3,7 @@ ManaCost:G Types:Enchantment Aura K:Enchant land A:SP$ Attach | Cost$ G | ValidTgts$ Land | AILogic$ Pump -S:Mode$ Continuous | Affected$ Card.EnchantedBy | AddType$ Mountain & Forest & Plains | RemoveSubTypes$ True | RemoveAllAbilities$ True | Description$ Enchanted land is a Mountain, Forest, and Plains. +S:Mode$ Continuous | Affected$ Card.EnchantedBy | AddType$ Mountain & Forest & Plains | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True | Description$ Enchanted land is a Mountain, Forest, and Plains. SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/lush_growth.jpg Oracle:Enchant land\nEnchanted land is a Mountain, Forest, and Plains. diff --git a/forge-gui/res/cardsfolder/upcoming/luxury_suite.txt b/forge-gui/res/cardsfolder/l/luxury_suite.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/luxury_suite.txt rename to forge-gui/res/cardsfolder/l/luxury_suite.txt diff --git a/forge-gui/res/cardsfolder/l/lyzolda_the_blood_witch.txt b/forge-gui/res/cardsfolder/l/lyzolda_the_blood_witch.txt index 0481323b75b..825316ee975 100644 --- a/forge-gui/res/cardsfolder/l/lyzolda_the_blood_witch.txt +++ b/forge-gui/res/cardsfolder/l/lyzolda_the_blood_witch.txt @@ -2,10 +2,10 @@ Name:Lyzolda, the Blood Witch ManaCost:1 B R Types:Legendary Creature Human Cleric PT:3/1 -A:AB$DealDamage | Cost$ 2 Sac<1/Creature> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 | SubAbility$ DBDraw | References$ X | SpellDescription$ CARDNAME deals 2 damage to target creature or player if the sacrificed creature was red. Draw a card if the sacrificed creature was black. +A:AB$DealDamage | Cost$ 2 Sac<1/Creature> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 | SubAbility$ DBDraw | References$ X | SpellDescription$ CARDNAME deals 2 damage to any target if the sacrificed creature was red. Draw a card if the sacrificed creature was black. SVar:DBDraw:DB$Draw | NumCards$ 1 | Defined$ You | ConditionCheckSVar$ Y | ConditionSVarCompare$ GE1 | References$ Y SVar:X:Sacrificed$Valid Creature.Red SVar:Y:Sacrificed$Valid Creature.Black SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/lyzolda_the_blood_witch.jpg -Oracle:{2}, Sacrifice a creature: Lyzolda, the Blood Witch deals 2 damage to target creature or player if the sacrificed creature was red. Draw a card if the sacrificed creature was black. +Oracle:{2}, Sacrifice a creature: Lyzolda, the Blood Witch deals 2 damage to any target if the sacrificed creature was red. Draw a card if the sacrificed creature was black. diff --git a/forge-gui/res/cardsfolder/l/lyzolda_the_blood_witch_avatar.txt b/forge-gui/res/cardsfolder/l/lyzolda_the_blood_witch_avatar.txt index fa20f4c155e..7bc3aac1503 100644 --- a/forge-gui/res/cardsfolder/l/lyzolda_the_blood_witch_avatar.txt +++ b/forge-gui/res/cardsfolder/l/lyzolda_the_blood_witch_avatar.txt @@ -2,11 +2,11 @@ Name:Lyzolda, the Blood Witch Avatar ManaCost:no cost Types:Vanguard HandLifeModifier:-1/-1 -R:Event$ DamageDone | ValidSource$ Card.YouCtrl,Emblem.YouCtrl | ValidTarget$ Creature,Player | Hellbent$ True | ReplaceWith$ DmgTwice | Description$ Hellbent - As long as you have no cards in hand, if a source you control would deal damage to a creature or player, it deals double that damage to that creature or player instead. +R:Event$ DamageDone | ValidSource$ Card.YouCtrl,Emblem.YouCtrl | ValidTarget$ Permanent,Player | Hellbent$ True | ReplaceWith$ DmgTwice | Description$ Hellbent - As long as you have no cards in hand, if a source you control would deal damage to a permanent or player, it deals double that damage to that permanent or player instead. SVar:DmgTwice:DB$ ReplaceEffect | VarName$ DamageAmount | VarValue$ X | References$ X SVar:X:ReplaceCount$DamageAmount/Twice T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Command | Hellbent$ True | Execute$ LyzoldasDiscard | TriggerDescription$ Hellbent - At the beginning of your end step, if you have no cards in hand, each of your opponents discards a card. SVar:LyzoldasDiscard:DB$ Discard | Defined$ Player.Opponent | NumCards$ 1 | Mode$ TgtChoose DeckHints:Ability$Discard SVar:Picture:https://downloads.cardforge.org/images/cards/VAN/Lyzolda, the Blood Witch Avatar.full.jpg -Oracle:Hand -1, life -1\nHellbent - As long as you have no cards in hand, if a source you control would deal damage to a creature or player, it deals double that damage to that creature or player instead.\nHellbent - At the beginning of your end step, if you have no cards in hand, each of your opponents discards a card. +Oracle:Hand -1, life -1\nHellbent - As long as you have no cards in hand, if a source you control would deal damage to a permanent or player, it deals double that damage to that permanent or player instead.\nHellbent - At the beginning of your end step, if you have no cards in hand, each of your opponents discards a card. diff --git a/forge-gui/res/cardsfolder/m/macabre_waltz.txt b/forge-gui/res/cardsfolder/m/macabre_waltz.txt index fefd49531b9..b931fc23c70 100644 --- a/forge-gui/res/cardsfolder/m/macabre_waltz.txt +++ b/forge-gui/res/cardsfolder/m/macabre_waltz.txt @@ -1,7 +1,7 @@ Name:Macabre Waltz ManaCost:1 B Types:Sorcery -A:SP$ ChangeZone | Cost$ 1 B | Origin$ Graveyard | Destination$ Hand | TargetMin$ 0 | TargetMax$ 2 | TgtPrompt$ Choose target creature card in your graveyard | ValidTgts$ Creature.YouCtrl | SpellDescription$ Return up to two target creature cards from your graveyard to your hand, then discard a card. | SubAbility$ DBDiscard +A:SP$ ChangeZone | Cost$ 1 B | Origin$ Graveyard | Destination$ Hand | TargetMin$ 0 | TargetMax$ 2 | TgtPrompt$ Choose target creature card in your graveyard | ValidTgts$ Creature.YouOwn | SpellDescription$ Return up to two target creature cards from your graveyard to your hand, then discard a card. | SubAbility$ DBDiscard SVar:DBDiscard:DB$Discard | Defined$ You | NumCards$ 1 | Mode$ TgtChoose DeckHints:Ability$Graveyard & Ability$Discard DeckHas:Ability$Discard diff --git a/forge-gui/res/cardsfolder/m/mage_il_vec.txt b/forge-gui/res/cardsfolder/m/mage_il_vec.txt index 29e81369c31..f13e620174d 100644 --- a/forge-gui/res/cardsfolder/m/mage_il_vec.txt +++ b/forge-gui/res/cardsfolder/m/mage_il_vec.txt @@ -2,7 +2,7 @@ Name:Mage il-Vec ManaCost:2 R Types:Creature Human Wizard PT:2/2 -A:AB$ DealDamage | Cost$ T Discard<1/Random> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ T Discard<1/Random> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/mage_il_vec.jpg -Oracle:{T}, Discard a card at random: Mage il-Vec deals 1 damage to target creature or player. +Oracle:{T}, Discard a card at random: Mage il-Vec deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/m/magma_burst.txt b/forge-gui/res/cardsfolder/m/magma_burst.txt index e8554e6f042..40ca8c421fa 100644 --- a/forge-gui/res/cardsfolder/m/magma_burst.txt +++ b/forge-gui/res/cardsfolder/m/magma_burst.txt @@ -2,8 +2,8 @@ Name:Magma Burst ManaCost:3 R Types:Instant K:Kicker:Sac<2/Land> -A:SP$ DealDamage | Cost$ 3 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | TargetMin$ X | TargetMax$ X | References$ X | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. If CARDNAME was kicked, it deals 3 damage to another target creature or player. +A:SP$ DealDamage | Cost$ 3 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | TargetMin$ X | TargetMax$ X | References$ X | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. If CARDNAME was kicked, it deals 3 damage to another target. SVar:X:Count$Kicked.2.1 SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/magma_burst.jpg -Oracle:Kicker—Sacrifice two lands. (You may sacrifice two lands in addition to any other costs as you cast this spell.)\nMagma Burst deals 3 damage to target creature or player. If Magma Burst was kicked, it deals 3 damage to another target creature or player. +Oracle:Kicker—Sacrifice two lands. (You may sacrifice two lands in addition to any other costs as you cast this spell.)\nMagma Burst deals 3 damage to any target. If Magma Burst was kicked, it deals 3 damage to another target. diff --git a/forge-gui/res/cardsfolder/m/magma_jet.txt b/forge-gui/res/cardsfolder/m/magma_jet.txt index a73dc59ed6e..738933507a7 100644 --- a/forge-gui/res/cardsfolder/m/magma_jet.txt +++ b/forge-gui/res/cardsfolder/m/magma_jet.txt @@ -1,7 +1,7 @@ Name:Magma Jet ManaCost:1 R Types:Instant -A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SubAbility$ DBScry | SpellDescription$ CARDNAME deals 2 damage to target creature or player. Scry 2. +A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SubAbility$ DBScry | SpellDescription$ CARDNAME deals 2 damage to any target. Scry 2. SVar:DBScry:DB$Scry | ScryNum$ 2 SVar:Picture:http://www.wizards.com/global/images/magic/general/magma_jet.jpg -Oracle:Magma Jet deals 2 damage to target creature or player. Scry 2. \ No newline at end of file +Oracle:Magma Jet deals 2 damage to any target. Scry 2. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/m/magma_mine.txt b/forge-gui/res/cardsfolder/m/magma_mine.txt index 471baec24de..a05c4a168b6 100644 --- a/forge-gui/res/cardsfolder/m/magma_mine.txt +++ b/forge-gui/res/cardsfolder/m/magma_mine.txt @@ -2,7 +2,7 @@ Name:Magma Mine ManaCost:1 Types:Artifact A:AB$ PutCounter | Cost$ 4 | CounterType$ PRESSURE | CounterNum$ 1 | SpellDescription$ Put a pressure counter on CARDNAME. -A:AB$ DealDamage | Cost$ T Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to the number of pressure counters on it to target creature or player. +A:AB$ DealDamage | Cost$ T Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to the number of pressure counters on it to any target. SVar:X:Count$CardCounters.PRESSURE SVar:Picture:http://www.wizards.com/global/images/magic/general/magma_mine.jpg -Oracle:{4}: Put a pressure counter on Magma Mine.\n{T}, Sacrifice Magma Mine: Magma Mine deals damage equal to the number of pressure counters on it to target creature or player. +Oracle:{4}: Put a pressure counter on Magma Mine.\n{T}, Sacrifice Magma Mine: Magma Mine deals damage equal to the number of pressure counters on it to any target. diff --git a/forge-gui/res/cardsfolder/m/magmatic_force.txt b/forge-gui/res/cardsfolder/m/magmatic_force.txt index 98be911e754..b2638f26054 100644 --- a/forge-gui/res/cardsfolder/m/magmatic_force.txt +++ b/forge-gui/res/cardsfolder/m/magmatic_force.txt @@ -2,7 +2,7 @@ Name:Magmatic Force ManaCost:5 R R R Types:Creature Elemental PT:7/7 -T:Mode$ Phase | Phase$ Upkeep | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ At the beginning of each upkeep, CARDNAME deals 3 damage to target creature or player. -SVar:TrigDamage:DB$DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 +T:Mode$ Phase | Phase$ Upkeep | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ At the beginning of each upkeep, CARDNAME deals 3 damage to any target. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 SVar:Picture:http://www.wizards.com/global/images/magic/general/magmatic_force.jpg -Oracle:At the beginning of each upkeep, Magmatic Force deals 3 damage to target creature or player. +Oracle:At the beginning of each upkeep, Magmatic Force deals 3 damage to any target. diff --git a/forge-gui/res/cardsfolder/m/magmaw.txt b/forge-gui/res/cardsfolder/m/magmaw.txt index e8edee63263..2ed2365d296 100644 --- a/forge-gui/res/cardsfolder/m/magmaw.txt +++ b/forge-gui/res/cardsfolder/m/magmaw.txt @@ -2,7 +2,7 @@ Name:Magmaw ManaCost:3 R R Types:Creature Elemental PT:4/4 -A:AB$ DealDamage | Cost$ 1 Sac<1/Permanent.nonLand/nonland permanent> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ 1 Sac<1/Permanent.nonLand/nonland permanent> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/magmaw.jpg -Oracle:{1}, Sacrifice a nonland permanent: Magmaw deals 1 damage to target creature or player. +Oracle:{1}, Sacrifice a nonland permanent: Magmaw deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/m/magus_of_the_balance.txt b/forge-gui/res/cardsfolder/m/magus_of_the_balance.txt new file mode 100644 index 00000000000..0774d768300 --- /dev/null +++ b/forge-gui/res/cardsfolder/m/magus_of_the_balance.txt @@ -0,0 +1,8 @@ +Name:Magus of the Balance +ManaCost:1 W +Types:Creature Human Wizard +PT:2/2 +A:AB$ Balance | Cost$ 4 W T Sac<1/CARDNAME> | Valid$ Land | AILogic$ BalanceCreaturesAndLands | SubAbility$ BalanceHands | SpellDescription$ Each player chooses a number of lands they control equal to the number of lands controlled by the player who controls the fewest, then sacrifices the rest. Players discard cards and sacrifice creatures the same way. +SVar:BalanceHands:DB$ Balance | Zone$ Hand | SubAbility$ BalanceCreatures +SVar:BalanceCreatures:DB$ Balance | Valid$ Creature +Oracle:{4}{W}, {T}, Sacrifice Magus of the Balance: Each player chooses a number of lands they control equal to the number of lands controlled by the player who controls the fewest, then sacrifices the rest. Players discard cards and sacrifice creatures the same way. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/m/magus_of_the_moon.txt b/forge-gui/res/cardsfolder/m/magus_of_the_moon.txt index afab5134ef3..1d0221c6984 100644 --- a/forge-gui/res/cardsfolder/m/magus_of_the_moon.txt +++ b/forge-gui/res/cardsfolder/m/magus_of_the_moon.txt @@ -2,7 +2,7 @@ Name:Magus of the Moon ManaCost:2 R Types:Creature Human Wizard PT:2/2 -S:Mode$ Continuous | Affected$ Land.nonBasic | AddType$ Mountain | RemoveSubTypes$ True | RemoveAllAbilities$ True | Description$ Nonbasic lands are Mountains. +S:Mode$ Continuous | Affected$ Land.nonBasic | AddType$ Mountain | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True | Description$ Nonbasic lands are Mountains. SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/magus_of_the_moon.jpg Oracle:Nonbasic lands are Mountains. diff --git a/forge-gui/res/cardsfolder/m/magus_of_the_scroll.txt b/forge-gui/res/cardsfolder/m/magus_of_the_scroll.txt index 1c3d23d9b86..795b6c1694f 100644 --- a/forge-gui/res/cardsfolder/m/magus_of_the_scroll.txt +++ b/forge-gui/res/cardsfolder/m/magus_of_the_scroll.txt @@ -2,10 +2,10 @@ Name:Magus of the Scroll ManaCost:R Types:Creature Human Wizard PT:1/1 -A:AB$ NameCard | Cost$ 3 T | Defined$ You | SubAbility$ DBReveal | SpellDescription$ Choose a card name, then reveal a card at random from your hand. If that card has the chosen name, CARDNAME deals 2 damage to target creature or player. +A:AB$ NameCard | Cost$ 3 T | Defined$ You | SubAbility$ DBReveal | SpellDescription$ Choose a card name, then reveal a card at random from your hand. If that card has the chosen name, CARDNAME deals 2 damage to any target. SVar:DBReveal:DB$ Reveal | Random$ True | RememberRevealed$ True | Defined$ You | SubAbility$ DBDamage -SVar:DBDamage:DB$ DealDamage | NumDmg$ 2 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | ConditionDefined$ Remembered | ConditionPresent$ Card.NamedCard | ConditionCompare$ EQ1 | SubAbility$ DBCleanup +SVar:DBDamage:DB$ DealDamage | NumDmg$ 2 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | ConditionDefined$ Remembered | ConditionPresent$ Card.NamedCard | ConditionCompare$ EQ1 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/magus_of_the_scroll.jpg -Oracle:{3}, {T}: Choose a card name, then reveal a card at random from your hand. If that card has the chosen name, Magus of the Scroll deals 2 damage to target creature or player. +Oracle:{3}, {T}: Choose a card name, then reveal a card at random from your hand. If that card has the chosen name, Magus of the Scroll deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/m/make_mischief.txt b/forge-gui/res/cardsfolder/m/make_mischief.txt index 2bee4d97937..6986907d487 100644 --- a/forge-gui/res/cardsfolder/m/make_mischief.txt +++ b/forge-gui/res/cardsfolder/m/make_mischief.txt @@ -1,9 +1,9 @@ Name:Make Mischief ManaCost:2 R Types:Sorcery -A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SubAbility$ DBToken | SpellDescription$ CARDNAME deals 1 damage to target creature or player. Create a 1/1 red Devil creature token. It has "When this creature dies, it deals 1 damage to target creature or player." +A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SubAbility$ DBToken | SpellDescription$ CARDNAME deals 1 damage to any target. Create a 1/1 red Devil creature token. It has "When this creature dies, it deals 1 damage to any target." SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenName$ Devil | TokenTypes$ Creature,Devil | TokenOwner$ You | TokenColors$ Red | TokenPower$ 1 | TokenToughness$ 1 | TokenTriggers$ DiesTrigger | TokenSVars$ DevilTrigDamage -SVar:DiesTrigger:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ DevilTrigDamage | TriggerController$ TriggeredCardController | TriggerDescription$ When this creature dies, it deals 1 damage to target creature or player. -SVar:DevilTrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 +SVar:DiesTrigger:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ DevilTrigDamage | TriggerController$ TriggeredCardController | TriggerDescription$ When this creature dies, it deals 1 damage to any target. +SVar:DevilTrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/make_mischief.jpg -Oracle:Make Mischief deals 1 damage to target creature or player. Create a 1/1 red Devil creature token. It has "When this creature dies, it deals 1 damage to target creature or player." +Oracle:Make Mischief deals 1 damage to any target. Create a 1/1 red Devil creature token. It has "When this creature dies, it deals 1 damage to any target." diff --git a/forge-gui/res/cardsfolder/m/makeshift_munitions.txt b/forge-gui/res/cardsfolder/m/makeshift_munitions.txt index b77be4ec5db..b2fe175c018 100644 --- a/forge-gui/res/cardsfolder/m/makeshift_munitions.txt +++ b/forge-gui/res/cardsfolder/m/makeshift_munitions.txt @@ -1,7 +1,7 @@ Name:Makeshift Munitions ManaCost:1 R Types:Enchantment -A:AB$ DealDamage | Cost$ 1 Sac<1/Artifact;Creature/artifact or creature> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ 1 Sac<1/Artifact;Creature/artifact or creature> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/makeshift_munitions.jpg SVar:AIPreference:SacCost$Artifact.token+nonCreature,Creature.token+powerLE1,Creature.cmcLE1+powerLE1 -Oracle:{1}, Sacrifice an artifact or creature: Makeshift Munitions deals 1 damage to target creature or player. \ No newline at end of file +Oracle:{1}, Sacrifice an artifact or creature: Makeshift Munitions deals 1 damage to any target. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/m/mangaras_equity.txt b/forge-gui/res/cardsfolder/m/mangaras_equity.txt index 9a2f3a6e9c7..9ab5cf449cc 100644 --- a/forge-gui/res/cardsfolder/m/mangaras_equity.txt +++ b/forge-gui/res/cardsfolder/m/mangaras_equity.txt @@ -5,7 +5,7 @@ K:UpkeepCost:1 W K:ETBReplacement:Other:ChooseBlackOrRed SVar:ChooseBlackOrRed:DB$ ChooseColor | Defined$ You | Choices$ black,red | AILogic$ MostProminentHumanCreatures | SpellDescription$ As CARDNAME enters the battlefield, choose black or red. T:Mode$ DamageDone | ValidSource$ Creature.ChosenColor | ValidTarget$ Creature.White+YouCtrl,You | TriggerZones$ Battlefield | Execute$ MangarasRetribution | TriggerDescription$ Whenever a creature of the chosen color deals damage to you or a white creature you control, CARDNAME deals that much damage to that creature. -SVar:MangarasRetribution:DB$ DealDamage | Defined$ TriggeredSource | NumDmg$ MangaraX | References$ MangaraX +SVar:MangarasRetribution:DB$ DealDamage | Defined$ TriggeredSourceLKICopy | NumDmg$ MangaraX | References$ MangaraX SVar:MangaraX:TriggerCount$DamageAmount SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/mangaras_equity.jpg diff --git a/forge-gui/res/cardsfolder/m/manticore_eternal.txt b/forge-gui/res/cardsfolder/m/manticore_eternal.txt index 0eb0cbaebd6..fc5eb7b3784 100644 --- a/forge-gui/res/cardsfolder/m/manticore_eternal.txt +++ b/forge-gui/res/cardsfolder/m/manticore_eternal.txt @@ -2,7 +2,7 @@ Name:Manticore Eternal ManaCost:3 R R Types:Creature Zombie Manticore PT:5/4 -K:Afflict 3 +K:Afflict:3 K:CARDNAME attacks each combat if able. SVar:Picture:http://www.wizards.com/global/images/magic/general/manticore_eternal.jpg Oracle:Afflict 3 (Whenever this creature becomes blocked, defending player loses 3 life.)\nManticore Eternal attacks each combat if able. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/m/manticore_of_the_gauntlet.txt b/forge-gui/res/cardsfolder/m/manticore_of_the_gauntlet.txt index 9f36e72e3ce..76b8cfc0efc 100644 --- a/forge-gui/res/cardsfolder/m/manticore_of_the_gauntlet.txt +++ b/forge-gui/res/cardsfolder/m/manticore_of_the_gauntlet.txt @@ -2,8 +2,8 @@ Name:Manticore of the Gauntlet ManaCost:4 R Types:Creature Manticore PT:5/4 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPutCounter | TriggerDescription$ When CARDNAME enters the battlefield, put a -1/-1 counter on target creature you control. CARDNAME deals 3 damage to target opponent. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPutCounter | TriggerDescription$ When CARDNAME enters the battlefield, put a -1/-1 counter on target creature you control. CARDNAME deals 3 damage to target opponent or planeswalker. SVar:TrigPutCounter:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | CounterType$ M1M1 | IsCurse$ True | SubAbility$ DBDealDamage | CounterNum$ 1 -SVar:DBDealDamage:DB$ DealDamage | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | NumDmg$ 3 +SVar:DBDealDamage:DB$ DealDamage | ValidTgts$ Opponent,Planeswalker | TgtPrompt$ Select target opponent or planeswalker | NumDmg$ 3 SVar:Picture:http://www.wizards.com/global/images/magic/general/manticore_of_the_gauntlet.jpg -Oracle:When Manticore of the Gauntlet enters the battlefield, put a -1/-1 counter on target creature you control. Manticore of the Gauntlet deals 3 damage to target opponent. \ No newline at end of file +Oracle:When Manticore of the Gauntlet enters the battlefield, put a -1/-1 counter on target creature you control. Manticore of the Gauntlet deals 3 damage to target opponent or planeswalker. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/m/marath_will_of_the_wild.txt b/forge-gui/res/cardsfolder/m/marath_will_of_the_wild.txt index 0f2a2e666b5..587dc3cb6f8 100644 --- a/forge-gui/res/cardsfolder/m/marath_will_of_the_wild.txt +++ b/forge-gui/res/cardsfolder/m/marath_will_of_the_wild.txt @@ -6,9 +6,9 @@ K:etbCounter:P1P1:Y:no Condition:CARDNAME enters the battlefield with a number o SVar:Y:Count$FirstSpellTotalManaSpent A:AB$ Charm | Cost$ X SubCounter | Announce$ X | XCantBe0$ True | Choices$ MarathCounters,MarathDmg,MarathToken | Defined$ You SVar:MarathCounters:DB$ PutCounter | ValidTgts$ Creature | CounterType$ P1P1 | CounterNum$ Z | References$ Z | SpellDescription$ Put X +1/+1 counters on target creature. X can't be 0. -SVar:MarathDmg:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ Z | References$ Z | SpellDescription$ CARDNAME deals X damage to target creature or player. X can't be 0. +SVar:MarathDmg:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ Z | References$ Z | SpellDescription$ CARDNAME deals X damage to any target. X can't be 0. SVar:MarathToken:DB$ Token | TokenAmount$ 1 | TokenName$ Elemental | TokenOwner$ You | TokenPower$ Z | TokenToughness$ Z | References$ Z | TokenTypes$ Creature,Elemental | TokenColors$ Green | TokenImage$ g x x elemental | SpellDescription$ Create an X/X green Elemental creature token. X can't be 0. SVar:Z:SVar$CostCountersRemoved SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/marath_will_of_the_wild.jpg -Oracle:Marath, Will of the Wild enters the battlefield with a number of +1/+1 counters on it equal to the amount of mana spent to cast it.\n{X}, Remove X +1/+1 counters from Marath: Choose one —\n• Put X +1/+1 counters on target creature. X can't be 0.\n• Marath deals X damage to target creature or player. X can't be 0.\n• Create an X/X green Elemental creature token. X can't be 0. +Oracle:Marath, Will of the Wild enters the battlefield with a number of +1/+1 counters on it equal to the amount of mana spent to cast it.\n{X}, Remove X +1/+1 counters from Marath: Choose one —\n• Put X +1/+1 counters on target creature. X can't be 0.\n• Marath deals X damage to any target. X can't be 0.\n• Create an X/X green Elemental creature token. X can't be 0. diff --git a/forge-gui/res/cardsfolder/m/mardu_heart_piercer.txt b/forge-gui/res/cardsfolder/m/mardu_heart_piercer.txt index c9b25871455..9562b63429b 100644 --- a/forge-gui/res/cardsfolder/m/mardu_heart_piercer.txt +++ b/forge-gui/res/cardsfolder/m/mardu_heart_piercer.txt @@ -2,8 +2,8 @@ Name:Mardu Heart-Piercer ManaCost:3 R Types:Creature Human Archer PT:2/3 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | CheckSVar$ RaidTest | Execute$ TrigDealDamage | TriggerDescription$ Raid — When CARDNAME enters the battlefield, if you attacked with a creature this turn, CARDNAME deals 2 damage to target creature or player. -SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | CheckSVar$ RaidTest | Execute$ TrigDealDamage | TriggerDescription$ Raid — When CARDNAME enters the battlefield, if you attacked with a creature this turn, CARDNAME deals 2 damage to any target. +SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 SVar:RaidTest:Count$AttackersDeclared SVar:Picture:http://www.wizards.com/global/images/magic/general/mardu_heart_piercer.jpg -Oracle:Raid — When Mardu Heart-Piercer enters the battlefield, if you attacked with a creature this turn, Mardu Heart-Piercer deals 2 damage to target creature or player. +Oracle:Raid — When Mardu Heart-Piercer enters the battlefield, if you attacked with a creature this turn, Mardu Heart-Piercer deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/m/marhault_elsdragon.txt b/forge-gui/res/cardsfolder/m/marhault_elsdragon.txt index 4d5e7fa6636..db6444c6de7 100644 --- a/forge-gui/res/cardsfolder/m/marhault_elsdragon.txt +++ b/forge-gui/res/cardsfolder/m/marhault_elsdragon.txt @@ -2,6 +2,6 @@ Name:Marhault Elsdragon ManaCost:3 R R G Types:Legendary Creature Elf Warrior PT:4/6 -K:Rampage 1 +K:Rampage:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/marhault_elsdragon.jpg Oracle:Rampage 1 (Whenever this creature becomes blocked, it gets +1/+1 until end of turn for each creature blocking it beyond the first.) diff --git a/forge-gui/res/cardsfolder/m/marshaling_cry.txt b/forge-gui/res/cardsfolder/m/marshaling_cry.txt index 9410725fc06..dcabea5e6ef 100644 --- a/forge-gui/res/cardsfolder/m/marshaling_cry.txt +++ b/forge-gui/res/cardsfolder/m/marshaling_cry.txt @@ -1,7 +1,7 @@ Name:Marshaling Cry ManaCost:1 W W Types:Sorcery -K:Flashback 3 W +K:Flashback:3 W A:SP$ PumpAll | Cost$ 1 W W | ValidCards$ Creature.YouCtrl | NumAtt$ +1 | NumDef$ +1 | KW$ Vigilance | SpellDescription$ Creatures you control get +1/+1 and gain vigilance until end of turn. K:Cycling:2 SVar:Picture:http://www.wizards.com/global/images/magic/general/marshaling_cry.jpg diff --git a/forge-gui/res/cardsfolder/m/martyrs_cause.txt b/forge-gui/res/cardsfolder/m/martyrs_cause.txt index 1e1df13bf3d..1ff0a31fffb 100644 --- a/forge-gui/res/cardsfolder/m/martyrs_cause.txt +++ b/forge-gui/res/cardsfolder/m/martyrs_cause.txt @@ -1,13 +1,13 @@ Name:Martyr's Cause ManaCost:2 W Types:Enchantment -A:AB$ ChooseSource | Cost$ Sac<1/Creature> | Choices$ Card,Emblem | AILogic$ NeedsPrevention | SubAbility$ DBEffect | SpellDescription$ The next time a source of your choice would deal damage to target creature or player this turn, prevent that damage. -SVar:DBEffect:DB$ Effect | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to prevent damage to | Triggers$ OutOfSight | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Targeted | SVars$ RPreventNextFromSource,OutOfSight,ExileEffect | SubAbility$ DBCleanup | ConditionDefined$ ChosenCard | ConditionPresent$ Card,Emblem | ConditionCompare$ GE1 +A:AB$ ChooseSource | Cost$ Sac<1/Creature> | Choices$ Card,Emblem | AILogic$ NeedsPrevention | SubAbility$ DBEffect | SpellDescription$ The next time a source of your choice would deal damage to any target this turn, prevent that damage. +SVar:DBEffect:DB$ Effect | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to prevent damage to | Triggers$ OutOfSight | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Targeted | SVars$ RPreventNextFromSource,OutOfSight,ExileEffect | SubAbility$ DBCleanup | ConditionDefined$ ChosenCard | ConditionPresent$ Card,Emblem | ConditionCompare$ GE1 SVar:OutOfSight:Mode$ ChangesZone | TriggerZones$ Command | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.IsRemembered | Execute$ ExileEffect | Static$ True -SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.ChosenCard,Emblem.ChosenCard | ValidTarget$ Card.IsRemembered,Player.IsRemembered | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time the chosen source deals damage to the targeted creature or player, prevent that damage. +SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.ChosenCard,Emblem.ChosenCard | ValidTarget$ Card.IsRemembered,Player.IsRemembered | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time the chosen source deals damage to the any target, prevent that damage. SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True SVar:RemAIDeck:True SVar:NonStackingEffect:True SVar:Picture:http://www.wizards.com/global/images/magic/general/martyrs_cause.jpg -Oracle:Sacrifice a creature: The next time a source of your choice would deal damage to target creature or player this turn, prevent that damage. +Oracle:Sacrifice a creature: The next time a source of your choice would deal damage to any target this turn, prevent that damage. diff --git a/forge-gui/res/cardsfolder/m/massive_raid.txt b/forge-gui/res/cardsfolder/m/massive_raid.txt index 34162563869..741db4a1e75 100644 --- a/forge-gui/res/cardsfolder/m/massive_raid.txt +++ b/forge-gui/res/cardsfolder/m/massive_raid.txt @@ -1,7 +1,7 @@ Name:Massive Raid ManaCost:1 R R Types:Instant -A:SP$ DealDamage | Cost$ 1 R R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage to target creature or player equal to the number of creatures you control. +A:SP$ DealDamage | Cost$ 1 R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage to any target equal to the number of creatures you control. SVar:X:Count$Valid Creature.YouCtrl SVar:Picture:http://www.wizards.com/global/images/magic/general/massive_raid.jpg -Oracle:Massive Raid deals damage to target creature or player equal to the number of creatures you control. +Oracle:Massive Raid deals damage to any target equal to the number of creatures you control. diff --git a/forge-gui/res/cardsfolder/m/master_apothecary.txt b/forge-gui/res/cardsfolder/m/master_apothecary.txt index 8dc6a4106cc..a69c19896d3 100644 --- a/forge-gui/res/cardsfolder/m/master_apothecary.txt +++ b/forge-gui/res/cardsfolder/m/master_apothecary.txt @@ -2,6 +2,6 @@ Name:Master Apothecary ManaCost:W W W Types:Creature Human Cleric PT:2/2 -A:AB$ PreventDamage | Cost$ tapXType<1/Cleric> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 2 | SpellDescription$ Prevent the next 2 damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ tapXType<1/Cleric> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 2 | SpellDescription$ Prevent the next 2 damage that would be dealt to any target this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/master_apothecary.jpg -Oracle:Tap an untapped Cleric you control: Prevent the next 2 damage that would be dealt to target creature or player this turn. +Oracle:Tap an untapped Cleric you control: Prevent the next 2 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/m/master_healer.txt b/forge-gui/res/cardsfolder/m/master_healer.txt index d2ee750586c..90330317f23 100644 --- a/forge-gui/res/cardsfolder/m/master_healer.txt +++ b/forge-gui/res/cardsfolder/m/master_healer.txt @@ -2,6 +2,6 @@ Name:Master Healer ManaCost:4 W Types:Creature Human Cleric PT:1/4 -A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 4 | SpellDescription$ Prevent the next 4 damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 4 | SpellDescription$ Prevent the next 4 damage that would be dealt to any target this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/master_healer.jpg -Oracle:{T}: Prevent the next 4 damage that would be dealt to target creature or player this turn. +Oracle:{T}: Prevent the next 4 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/m/master_the_way.txt b/forge-gui/res/cardsfolder/m/master_the_way.txt index c1990c3b62a..d6e17fff595 100644 --- a/forge-gui/res/cardsfolder/m/master_the_way.txt +++ b/forge-gui/res/cardsfolder/m/master_the_way.txt @@ -1,8 +1,8 @@ Name:Master the Way ManaCost:3 U R Types:Sorcery -A:SP$ Draw | Cost$ 3 U R | NumCards$ 1 | SubAbility$ DBDamage | SpellDescription$ Draw a card. CARDNAME deals damage to target creature or player equal to the number of cards in your hand. -SVar:DBDamage:DB$ DealDamage | ValidTgts$ Creature,Player | NumDmg$ X | References$ X +A:SP$ Draw | Cost$ 3 U R | NumCards$ 1 | SubAbility$ DBDamage | SpellDescription$ Draw a card. CARDNAME deals damage to any target equal to the number of cards in your hand. +SVar:DBDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | NumDmg$ X | References$ X SVar:X:Count$CardsInYourHand SVar:Picture:http://www.wizards.com/global/images/magic/general/master_the_way.jpg -Oracle:Draw a card. Master the Way deals damage to target creature or player equal to the number of cards in your hand. +Oracle:Draw a card. Master the Way deals damage to any target equal to the number of cards in your hand. diff --git a/forge-gui/res/cardsfolder/m/masterwork_of_ingenuity.txt b/forge-gui/res/cardsfolder/m/masterwork_of_ingenuity.txt index 47d7ec723dc..917c583dd38 100644 --- a/forge-gui/res/cardsfolder/m/masterwork_of_ingenuity.txt +++ b/forge-gui/res/cardsfolder/m/masterwork_of_ingenuity.txt @@ -1,8 +1,7 @@ Name:Masterwork of Ingenuity ManaCost:1 Types:Artifact Equipment -K:ETBReplacement:Copy:ChooseEquipment:Optional -SVar:ChooseEquipment:DB$ ChooseCard | Defined$ You | Amount$ 1 | Choices$ Equipment.Other | SubAbility$ DBCopy | RememberChosen$ True | AILogic$ Clone | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of any Equipment on the battlefield. -SVar:DBCopy:DB$ Clone | Defined$ Remembered +K:ETBReplacement:Copy:DBCopy:Optional +SVar:DBCopy:DB$ Clone | Choices$ Equipment.Other | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of any Equipment on the battlefield. SVar:Picture:http://www.wizards.com/global/images/magic/general/masterwork_of_ingenuity.jpg Oracle:You may have Masterwork of Ingenuity enter the battlefield as a copy of any Equipment on the battlefield. diff --git a/forge-gui/res/cardsfolder/m/maurauders_axe.txt b/forge-gui/res/cardsfolder/m/maurauders_axe.txt new file mode 100644 index 00000000000..77708569106 --- /dev/null +++ b/forge-gui/res/cardsfolder/m/maurauders_axe.txt @@ -0,0 +1,7 @@ +Name:Marauder's Axe +ManaCost:2 +Types:Artifact Equipment +K:Equip:2 +S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 2 | Description$ Equipped creature gets +2/+0. +SVar:Picture:http://www.wizards.com/global/images/magic/general/marauders_axe.jpg +Oracle:Equipped creature gets +2/+0.\nEquip {2} diff --git a/forge-gui/res/cardsfolder/m/mawcor.txt b/forge-gui/res/cardsfolder/m/mawcor.txt index 735bc2de6ca..528f066781c 100644 --- a/forge-gui/res/cardsfolder/m/mawcor.txt +++ b/forge-gui/res/cardsfolder/m/mawcor.txt @@ -3,6 +3,6 @@ ManaCost:3 U U Types:Creature Beast PT:3/3 K:Flying -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://resources.wizards.com/magic/cards/te/en-us/card4712.jpg -Oracle:Flying\n{T}: Mawcor deals 1 damage to target creature or player. +Oracle:Flying\n{T}: Mawcor deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/m/memorys_journey.txt b/forge-gui/res/cardsfolder/m/memorys_journey.txt index 2a684308739..305d106af7a 100644 --- a/forge-gui/res/cardsfolder/m/memorys_journey.txt +++ b/forge-gui/res/cardsfolder/m/memorys_journey.txt @@ -1,7 +1,7 @@ Name:Memory's Journey ManaCost:1 U Types:Instant -K:Flashback G +K:Flashback:G A:SP$ Pump | Cost$ 1 U | ValidTgts$ Player | TgtPrompt$ Select target Player | SubAbility$ DBChangeZone | IsCurse$ True | SpellDescription$ Target player shuffles up to three target cards from their graveyard into their library. SVar:DBChangeZone:DB$ ChangeZone | TargetMin$ 0 | TargetMax$ 3 | TargetsWithDefinedController$ ParentTarget | Origin$ Graveyard | Destination$ Library | Shuffle$ True | TgtPrompt$ Choose target card | ValidTgts$ Card SVar:RemAIDeck:True diff --git a/forge-gui/res/cardsfolder/m/mending_hands.txt b/forge-gui/res/cardsfolder/m/mending_hands.txt index 7a17a47d1b5..aa1c0e0d6b8 100644 --- a/forge-gui/res/cardsfolder/m/mending_hands.txt +++ b/forge-gui/res/cardsfolder/m/mending_hands.txt @@ -1,6 +1,6 @@ Name:Mending Hands ManaCost:W Types:Instant -A:SP$ PreventDamage | Cost$ W | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 4 | SpellDescription$ Prevent the next 4 damage that would be dealt to target creature or player this turn. +A:SP$ PreventDamage | Cost$ W | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 4 | SpellDescription$ Prevent the next 4 damage that would be dealt to any target this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/mending_hands.jpg -Oracle:Prevent the next 4 damage that would be dealt to target creature or player this turn. +Oracle:Prevent the next 4 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/m/merciless_eternal.txt b/forge-gui/res/cardsfolder/m/merciless_eternal.txt index 3ddd0097c66..f9dece3fbdd 100644 --- a/forge-gui/res/cardsfolder/m/merciless_eternal.txt +++ b/forge-gui/res/cardsfolder/m/merciless_eternal.txt @@ -2,7 +2,7 @@ Name:Merciless Eternal ManaCost:2 B Types:Creature Zombie Cleric PT:2/2 -K:Afflict 2 +K:Afflict:2 A:AB$ Pump | Cost$ 2 B Discard<1/Card> | NumAtt$ +2 | NumDef$ +2 | SpellDescription$ CARDNAME gets +2/+2 until end of turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/merciless_eternal.jpg Oracle:Afflict 2 (Whenever this creature becomes blocked, defending player loses 2 life.)\n{2}{B}, Discard a card: Merciless Eternal gets +2/+2 until end of turn. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/m/mercurial_pretender.txt b/forge-gui/res/cardsfolder/m/mercurial_pretender.txt index 1971a98f2cc..c6e48a645d5 100644 --- a/forge-gui/res/cardsfolder/m/mercurial_pretender.txt +++ b/forge-gui/res/cardsfolder/m/mercurial_pretender.txt @@ -2,9 +2,8 @@ Name:Mercurial Pretender ManaCost:4 U Types:Creature Shapeshifter PT:0/0 -K:ETBReplacement:Copy:ChooseCreature:Optional -SVar:ChooseCreature:DB$ ChooseCard | Defined$ You | Amount$ 1 | Choices$ Creature.YouCtrl+Other | SubAbility$ DBCopy | AILogic$ AtLeast1 | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of any creature you control except it gains "{2}{U}{U}: Return this creature to its owner's hand." -SVar:DBCopy:DB$ Clone | Defined$ ChosenCard | AddAbilities$ MercurialBounce +K:ETBReplacement:Copy:DBCopy:Optional +SVar:DBCopy:DB$ Clone | Choices$ Creature.YouCtrl+Other | AddAbilities$ MercurialBounce | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of any creature you control except it gains "{2}{U}{U}: Return this creature to its owner's hand." SVar:MercurialBounce:AB$ ChangeZone | Cost$ 2 U U | Defined$ Self | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return CARDNAME to its owner's hand. SVar:Picture:http://www.wizards.com/global/images/magic/general/mercurial_pretender.jpg Oracle:You may have Mercurial Pretender enter the battlefield as a copy of any creature you control except it gains "{2}{U}{U}: Return this creature to its owner's hand." diff --git a/forge-gui/res/cardsfolder/m/metamorphic_alteration.txt b/forge-gui/res/cardsfolder/m/metamorphic_alteration.txt new file mode 100644 index 00000000000..33f4c43c7e5 --- /dev/null +++ b/forge-gui/res/cardsfolder/m/metamorphic_alteration.txt @@ -0,0 +1,11 @@ +Name:Metamorphic Alteration +ManaCost:1 U +Types:Enchantment Aura +K:Enchant creature +A:SP$ Attach | Cost$ 1 U | ValidTgts$ Creature +K:ETBReplacement:Other:ChooseCreature +SVar:ChooseCreature:DB$ ChooseCard | Defined$ You | Amount$ 1 | Choices$ Creature.Other | SpellDescription$ As CARDNAME enters the battlefield, choose a creature. +T:Mode$ ChangesZone | ValidCard$ Card.Self | Static$ True | Origin$ Any | Destination$ Battlefield | Execute$ DBClone | TriggerDescription$ Enchanted creature is a copy of the chosen creature. +SVar:DBClone:DB$ Clone | Defined$ ChosenCard | CloneTarget$ Enchanted | Duration$ UntilUnattached | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True +Oracle:Enchant creature\nAs Metamorphic Alteration enters the battlefield, choose a creature.\nEnchanted creature is a copy of the chosen creature. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/m/meteor_blast.txt b/forge-gui/res/cardsfolder/m/meteor_blast.txt index 340324f0398..adcc0d17558 100644 --- a/forge-gui/res/cardsfolder/m/meteor_blast.txt +++ b/forge-gui/res/cardsfolder/m/meteor_blast.txt @@ -1,7 +1,7 @@ Name:Meteor Blast ManaCost:X R R R Types:Sorcery -A:SP$ DealDamage | Cost$ X R R R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | TargetMin$ 0 | TargetMax$ X | NumDmg$ 4 | References$ X | SpellDescription$ CARDNAME deals 4 damage to each of X target creatures and/or players. +A:SP$ DealDamage | Cost$ X R R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | TargetMin$ 0 | TargetMax$ X | NumDmg$ 4 | References$ X | SpellDescription$ CARDNAME deals 4 damage to each of X targets. SVar:X:Count$xPaid SVar:Picture:http://www.wizards.com/global/images/magic/general/meteor_blast.jpg -Oracle:Meteor Blast deals 4 damage to X target creatures and/or players. \ No newline at end of file +Oracle:Meteor Blast deals 4 damage to X targets. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/m/meteor_golem.txt b/forge-gui/res/cardsfolder/m/meteor_golem.txt new file mode 100644 index 00000000000..69fe55635b4 --- /dev/null +++ b/forge-gui/res/cardsfolder/m/meteor_golem.txt @@ -0,0 +1,8 @@ +Name:Meteor Golem +ManaCost:7 +Types:Artifact Creature Golem +PT:3/3 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDestroy | TriggerDescription$ When CARDNAME enters the battlefield, destroy target nonland permanent an opponent controls. +SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Permanent.OppCtrl+nonland | TgtPrompt$ Select target permanent. +SVar:Picture:http://resources.wizards.com/magic/cards/gpt/en-us/meteor_golem.jpg +Oracle:When Meteor Golem enters the battlefield, destroy target nonland permanent an opponent controls. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/m/meteor_shower.txt b/forge-gui/res/cardsfolder/m/meteor_shower.txt index 8ef6bd7a1f0..48a28a8f690 100644 --- a/forge-gui/res/cardsfolder/m/meteor_shower.txt +++ b/forge-gui/res/cardsfolder/m/meteor_shower.txt @@ -1,13 +1,13 @@ Name:Meteor Shower ManaCost:X X R Types:Sorcery -A:SP$ DealDamage | Cost$ X X R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature and/or player to distribute damage to | NumDmg$ DistroDmg | TargetMin$ 1 | TargetMax$ MaxTgts | DividedAsYouChoose$ DistroDmg | References$ DistroDmg,X,MaxTgts,NumPlayers,NumCreatures | SpellDescription$ CARDNAME deals X plus 1 damage divided as you choose among any number of target creatures and/or players. -SVar:NumPlayers:PlayerCountPlayers$Amount/Plus.NumCreatures -SVar:NumCreatures:Count$Valid Creature +A:SP$ DealDamage | Cost$ X X R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select targets to distribute damage to | NumDmg$ DistroDmg | TargetMin$ 1 | TargetMax$ MaxTgts | DividedAsYouChoose$ DistroDmg | References$ DistroDmg,X,MaxTgts,NumPlayers,NumCreaturesAndPlaneswalkers | SpellDescription$ CARDNAME deals X plus 1 damage divided as you choose among any number of targets. +SVar:NumPlayers:PlayerCountPlayers$Amount/Plus.NumCreaturesAndPlaneswalkers +SVar:NumCreaturesAndPlaneswalkers:Count$Valid Creature,Planeswalker SVar:MaxTgts:SVar$NumPlayers/Plus.1 SVar:DistroDmg:SVar$X/Plus.1 SVar:X:Count$xPaid #X Will get overwritten by Announce SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/meteor_shower.jpg -Oracle:Meteor Shower deals X plus 1 damage divided as you choose among any number of target creatures and/or players. +Oracle:Meteor Shower deals X plus 1 damage divided as you choose among any number of targets. diff --git a/forge-gui/res/cardsfolder/m/meteor_storm.txt b/forge-gui/res/cardsfolder/m/meteor_storm.txt index a43c9a4c6d6..59d6ab9c715 100644 --- a/forge-gui/res/cardsfolder/m/meteor_storm.txt +++ b/forge-gui/res/cardsfolder/m/meteor_storm.txt @@ -1,8 +1,8 @@ Name:Meteor Storm ManaCost:R G Types:Enchantment -A:AB$ DealDamage | Cost$ 2 R G Discard<2/Random> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target creature or player. +A:AB$ DealDamage | Cost$ 2 R G Discard<2/Random> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to any target. SVar:RemRandomDeck:True SVar:NonStackingEffect:True SVar:Picture:http://www.wizards.com/global/images/magic/general/meteor_storm.jpg -Oracle:{2}{R}{G}, Discard two cards at random: Meteor Storm deals 4 damage to target creature or player. +Oracle:{2}{R}{G}, Discard two cards at random: Meteor Storm deals 4 damage to any target. diff --git a/forge-gui/res/cardsfolder/m/meteorite.txt b/forge-gui/res/cardsfolder/m/meteorite.txt index 9eac95a012a..870022d95af 100644 --- a/forge-gui/res/cardsfolder/m/meteorite.txt +++ b/forge-gui/res/cardsfolder/m/meteorite.txt @@ -1,9 +1,9 @@ Name:Meteorite ManaCost:5 Types:Artifact -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 2 damage to target creature or player. -SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 2 damage to any target. +SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 A:AB$ Mana | Cost$ T | Produced$ Any | SpellDescription$ Add one mana of any color. SVar:PlayMain1:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/meteorite.jpg -Oracle:When Meteorite enters the battlefield, it deals 2 damage to target creature or player.\n{T}: Add one mana of any color. +Oracle:When Meteorite enters the battlefield, it deals 2 damage to any target.\n{T}: Add one mana of any color. diff --git a/forge-gui/res/cardsfolder/m/militant_monk.txt b/forge-gui/res/cardsfolder/m/militant_monk.txt index 52fdc8a5c76..ee7d45c0139 100644 --- a/forge-gui/res/cardsfolder/m/militant_monk.txt +++ b/forge-gui/res/cardsfolder/m/militant_monk.txt @@ -3,6 +3,6 @@ ManaCost:1 W W Types:Creature Human Monk Cleric PT:2/1 K:Vigilance -A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to any target this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/militant_monk.jpg -Oracle:Vigilance\n{T}: Prevent the next 1 damage that would be dealt to target creature or player this turn. +Oracle:Vigilance\n{T}: Prevent the next 1 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/m/militia_bugler.txt b/forge-gui/res/cardsfolder/m/militia_bugler.txt new file mode 100644 index 00000000000..4d62c8080ef --- /dev/null +++ b/forge-gui/res/cardsfolder/m/militia_bugler.txt @@ -0,0 +1,8 @@ +Name:Militia Bugler +ManaCost:2 W +Types:Creature Human Soldier +K:Vigilance +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigDig | TriggerDescription$ When CARDNAME enters the battlefield, look at the top four cards of your library. You may reveal a creature card with power 2 or less from among them and put it into your hand. Put the rest on the bottom of your library in a random order. +SVar:TrigDig:DB$ Dig | DigNum$ 4 | Optional$ True | ForceRevealToController$ True | ChangeNum$ 1 | ChangeValid$ Creature.powerLE2 | DestinationZone$ Hand | DestinationZone2$ Library | LibraryPosition$ -1 | RestRandomOrder$ True +Oracle:Vigilance (Attacking doesn't cause this creature to tap.)\nWhen Militia Bugler enters the battlefield, look at the top four cards of your library. You may reveal a creature card with power 2 or less from among them and put it into your hand. Put the rest on the bottom of your library in a random order. +PT:2/3 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/m/mimeofacture.txt b/forge-gui/res/cardsfolder/m/mimeofacture.txt index 8822c79cb9a..62676734b44 100644 --- a/forge-gui/res/cardsfolder/m/mimeofacture.txt +++ b/forge-gui/res/cardsfolder/m/mimeofacture.txt @@ -1,7 +1,7 @@ Name:Mimeofacture ManaCost:3 U Types:Sorcery -K:Replicate 3 U +K:Replicate:3 U A:SP$ Pump | Cost$ 3 U | ValidTgts$ Permanent.OppCtrl | TgtPrompt$ Choose target permanent an opponent controls | IsCurse$ True | StackDescription$ None | SubAbility$ DBChangeZone | SpellDescription$ Choose target permanent an opponent controls. Search that player's library for a card with the same name and put it onto the battlefield under your control. Then that player shuffles their library. SVar:DBChangeZone:DB$ ChangeZone | Origin$ Library | Destination$ Battlefield | DefinedPlayer$ TargetedController | Chooser$ You | ChangeType$ Targeted.sameName | ChangeNum$ 1 | GainControl$ True | Shuffle$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/mimeofacture.jpg diff --git a/forge-gui/res/cardsfolder/m/mirror_image.txt b/forge-gui/res/cardsfolder/m/mirror_image.txt new file mode 100644 index 00000000000..15deb13db7f --- /dev/null +++ b/forge-gui/res/cardsfolder/m/mirror_image.txt @@ -0,0 +1,8 @@ +Name:Mirror Image +ManaCost:2 U +Types:Creature Shapeshifter +PT:0/0 +K:ETBReplacement:Copy:DBCopy:Optional +SVar:DBCopy:DB$ Clone | Choices$ Creature.YouCtrl | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of any creature you control. +SVar:NeedsToPlay:Creature.YouCtrl +Oracle:You may have Mirror Image enter the battlefield as a copy of any creature you control. diff --git a/forge-gui/res/cardsfolder/m/mirrorwood_treefolk.txt b/forge-gui/res/cardsfolder/m/mirrorwood_treefolk.txt index 58524bcf166..41029740066 100644 --- a/forge-gui/res/cardsfolder/m/mirrorwood_treefolk.txt +++ b/forge-gui/res/cardsfolder/m/mirrorwood_treefolk.txt @@ -2,10 +2,10 @@ Name:Mirrorwood Treefolk ManaCost:3 G Types:Creature Treefolk PT:2/4 -A:AB$ Effect | Cost$ 2 R W | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to redirect the damage to | ReplacementEffects$ SelflessDamage | SVars$ SelflessDamage,SelflessDmg,ExileEffect | References$ SelflessDamage,SelflessDmg,ExileEffect | RememberObjects$ Targeted | ExileOnMoved$ Battlefield | SpellDescription$ The next time damage would be dealt to CARDNAME this turn, that damage is dealt to target creature or player instead. -SVar:SelflessDamage:Event$ DamageDone | ValidTarget$ Creature.EffectSource | ReplaceWith$ SelflessDmg | DamageTarget$ Remembered | Description$ The next time damage would be dealt to EFFECTSOURCE this turn, that damage is dealt to target creature or player instead. +A:AB$ Effect | Cost$ 2 R W | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to redirect the damage to | ReplacementEffects$ SelflessDamage | SVars$ SelflessDamage,SelflessDmg,ExileEffect | References$ SelflessDamage,SelflessDmg,ExileEffect | RememberObjects$ Targeted | ExileOnMoved$ Battlefield | SpellDescription$ The next time damage would be dealt to CARDNAME this turn, that damage is dealt to any target instead. +SVar:SelflessDamage:Event$ DamageDone | ValidTarget$ Creature.EffectSource | ReplaceWith$ SelflessDmg | DamageTarget$ Remembered | Description$ The next time damage would be dealt to EFFECTSOURCE this turn, that damage is dealt to any target instead. SVar:SelflessDmg:DB$ ReplaceEffect | VarName$ Affected | VarValue$ Remembered | VarType$ GameEntity | SubAbility$ ExileEffect SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile | Static$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/mirrorwood_treefolk.jpg -Oracle:{2}{R}{W}: The next time damage would be dealt to Mirrorwood Treefolk this turn, that damage is dealt to target creature or player instead. +Oracle:{2}{R}{W}: The next time damage would be dealt to Mirrorwood Treefolk this turn, that damage is dealt to any target instead. diff --git a/forge-gui/res/cardsfolder/m/mistcaller.txt b/forge-gui/res/cardsfolder/m/mistcaller.txt new file mode 100644 index 00000000000..a7887d7d285 --- /dev/null +++ b/forge-gui/res/cardsfolder/m/mistcaller.txt @@ -0,0 +1,8 @@ +Name:Mistcaller +ManaCost:U +Types:Creature Merfolk Wizard +A:AB$ Effect | Cost$ Sac<1/CARDNAME> | ReplacementEffects$ EffRMoved | SVars$ EffDBChangeZone | SpellDescription$ Until end of turn, if a nontoken creature would enter the battlefield and it wasn't cast, exile it instead. +SVar:EffRMoved:Event$ Moved | ActiveZones$ Command | Destination$ Battlefield | ValidCard$ Creature.nonToken+wasNotCast | ReplaceWith$ EffDBChangeZone | Description$ If a nontoken creature would enter the battlefield and it wasn't cast, exile it instead. +SVar:EffDBChangeZone:DB$ ChangeZone | Defined$ ReplacedCard | Hidden$ True | Origin$ All | Destination$ Exile +Oracle:Sacrifice Mistcaller: Until end of turn, if a nontoken creature would enter the battlefield and it wasn't cast, exile it instead. +PT:1/1 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/m/mistform_dreamer.txt b/forge-gui/res/cardsfolder/m/mistform_dreamer.txt index f1400bafb1e..02edcfb1abb 100644 --- a/forge-gui/res/cardsfolder/m/mistform_dreamer.txt +++ b/forge-gui/res/cardsfolder/m/mistform_dreamer.txt @@ -4,7 +4,7 @@ Types:Creature Illusion PT:2/1 K:Flying A:AB$ ChooseType | Cost$ 1 | Defined$ You | Type$ Creature | SubAbility$ DBAnimate | SpellDescription$ CARDNAME becomes the creature type of your choice until end of turn. -SVar:DBAnimate:DB$ Animate | Types$ ChosenType | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True +SVar:DBAnimate:DB$ Animate | Types$ ChosenType | RemoveCreatureTypes$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/mistform_dreamer.jpg Oracle:Flying\n{1}: Mistform Dreamer becomes the creature type of your choice until end of turn. diff --git a/forge-gui/res/cardsfolder/m/mistform_mask.txt b/forge-gui/res/cardsfolder/m/mistform_mask.txt index 13932fce43e..d40c5ab40e2 100644 --- a/forge-gui/res/cardsfolder/m/mistform_mask.txt +++ b/forge-gui/res/cardsfolder/m/mistform_mask.txt @@ -4,7 +4,7 @@ Types:Enchantment Aura K:Enchant creature A:SP$ Attach | Cost$ 1 U | ValidTgts$ Creature | AILogic$ Pump A:AB$ ChooseType | Cost$ 1 | Type$ Creature | AILogic$ MostProminentComputerControls | SubAbility$ DBAnimate | SpellDescription$ Enchanted creature becomes the creature type of your choice until end of turn. -SVar:DBAnimate:DB$ Animate | Defined$ Enchanted | Types$ ChosenType | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True +SVar:DBAnimate:DB$ Animate | Defined$ Enchanted | Types$ ChosenType | RemoveCreatureTypes$ True SVar:NonStackingAttachEffect:True SVar:RemAIDeck:True SVar:RemRandomDeck:True diff --git a/forge-gui/res/cardsfolder/m/mistform_mutant.txt b/forge-gui/res/cardsfolder/m/mistform_mutant.txt index 7162779391b..84206173cfa 100644 --- a/forge-gui/res/cardsfolder/m/mistform_mutant.txt +++ b/forge-gui/res/cardsfolder/m/mistform_mutant.txt @@ -3,7 +3,7 @@ ManaCost:4 U U Types:Creature Illusion Mutant PT:3/4 A:AB$ ChooseType | Cost$ 1 U | Defined$ You | Type$ Creature | InvalidTypes$ Wall | SubAbility$ DBAnimate | SpellDescription$ Choose a creature type other than Wall. Target creature becomes that type until end of turn. -SVar:DBAnimate:DB$ Animate | ValidTgts$ Creature | TgtPrompt$ Select target creature | Types$ ChosenType | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True +SVar:DBAnimate:DB$ Animate | ValidTgts$ Creature | TgtPrompt$ Select target creature | Types$ ChosenType | RemoveCreatureTypes$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/mistform_mutant.jpg Oracle:{1}{U}: Choose a creature type other than Wall. Target creature becomes that type until end of turn. diff --git a/forge-gui/res/cardsfolder/m/mistform_seaswift.txt b/forge-gui/res/cardsfolder/m/mistform_seaswift.txt index 4e0996fe855..983540f6aa7 100644 --- a/forge-gui/res/cardsfolder/m/mistform_seaswift.txt +++ b/forge-gui/res/cardsfolder/m/mistform_seaswift.txt @@ -4,7 +4,7 @@ Types:Creature Illusion PT:3/1 K:Flying A:AB$ ChooseType | Cost$ 1 | Defined$ You | Type$ Creature | SubAbility$ DBAnimate | SpellDescription$ CARDNAME becomes the creature type of your choice until end of turn. -SVar:DBAnimate:DB$ Animate | Types$ ChosenType | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True +SVar:DBAnimate:DB$ Animate | Types$ ChosenType | RemoveCreatureTypes$ True K:Morph:1 U SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/mistform_seaswift.jpg diff --git a/forge-gui/res/cardsfolder/m/mistform_shrieker.txt b/forge-gui/res/cardsfolder/m/mistform_shrieker.txt index 07f94debc58..e5c284fb1b7 100644 --- a/forge-gui/res/cardsfolder/m/mistform_shrieker.txt +++ b/forge-gui/res/cardsfolder/m/mistform_shrieker.txt @@ -4,7 +4,7 @@ Types:Creature Illusion PT:3/3 K:Flying A:AB$ ChooseType | Cost$ 1 | Defined$ You | Type$ Creature | SubAbility$ DBAnimate | SpellDescription$ CARDNAME becomes the creature type of your choice until end of turn. -SVar:DBAnimate:DB$ Animate | Defined$ Self | Types$ ChosenType | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True +SVar:DBAnimate:DB$ Animate | Types$ ChosenType | RemoveCreatureTypes$ True K:Morph:3 U U SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/mistform_shrieker.jpg diff --git a/forge-gui/res/cardsfolder/m/mistform_skyreaver.txt b/forge-gui/res/cardsfolder/m/mistform_skyreaver.txt index cabb15e2a32..72bfa22c64c 100644 --- a/forge-gui/res/cardsfolder/m/mistform_skyreaver.txt +++ b/forge-gui/res/cardsfolder/m/mistform_skyreaver.txt @@ -4,7 +4,7 @@ Types:Creature Illusion PT:6/6 K:Flying A:AB$ ChooseType | Cost$ 1 | Defined$ You | Type$ Creature | SubAbility$ DBAnimate | SpellDescription$ CARDNAME becomes the creature type of your choice until end of turn. -SVar:DBAnimate:DB$ Animate | Types$ ChosenType | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True +SVar:DBAnimate:DB$ Animate | Types$ ChosenType | RemoveCreatureTypes$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/mistform_skyreaver.jpg Oracle:Flying\n{1}: Mistform Skyreaver becomes the creature type of your choice until end of turn. diff --git a/forge-gui/res/cardsfolder/m/mistform_stalker.txt b/forge-gui/res/cardsfolder/m/mistform_stalker.txt index 02c66927a54..a8767180ee5 100644 --- a/forge-gui/res/cardsfolder/m/mistform_stalker.txt +++ b/forge-gui/res/cardsfolder/m/mistform_stalker.txt @@ -3,7 +3,7 @@ ManaCost:1 U Types:Creature Illusion PT:1/1 A:AB$ ChooseType | Cost$ 1 | Defined$ You | Type$ Creature | SubAbility$ DBAnimate | SpellDescription$ CARDNAME becomes the creature type of your choice until end of turn. -SVar:DBAnimate:DB$ Animate | Defined$ Self | Types$ ChosenType | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True +SVar:DBAnimate:DB$ Animate | Types$ ChosenType | RemoveCreatureTypes$ True A:AB$ Pump | Cost$ 2 U U | Defined$ Self | NumAtt$ +2 | NumDef$ +2 | KW$ Flying | SpellDescription$ CARDNAME gets +2/+2 and gains flying until end of turn. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/mistform_stalker.jpg diff --git a/forge-gui/res/cardsfolder/m/mistform_wakecaster.txt b/forge-gui/res/cardsfolder/m/mistform_wakecaster.txt index d55f89dfba5..c0ca68e0513 100644 --- a/forge-gui/res/cardsfolder/m/mistform_wakecaster.txt +++ b/forge-gui/res/cardsfolder/m/mistform_wakecaster.txt @@ -4,9 +4,9 @@ Types:Creature Illusion PT:2/3 K:Flying A:AB$ ChooseType | Cost$ 1 | Type$ Creature | Defined$ You | SubAbility$ DBAnimate | SpellDescription$ CARDNAME becomes the creature type of your choice until end of turn. -SVar:DBAnimate:DB$ Animate | Types$ ChosenType | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True +SVar:DBAnimate:DB$ Animate | Types$ ChosenType | RemoveCreatureTypes$ True A:AB$ ChooseType | Cost$ 2 U U T | Type$ Creature | Defined$ You | SubAbility$ DBAnimateAll | SpellDescription$ Choose a creature type. Each creature you control becomes that type until end of turn. -SVar:DBAnimateAll:DB$ AnimateAll | ValidCards$ Creature.YouCtrl | Types$ ChosenType | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True +SVar:DBAnimateAll:DB$ AnimateAll | ValidCards$ Creature.YouCtrl | Types$ ChosenType | RemoveCreatureTypes$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/mistform_wakecaster.jpg Oracle:Flying\n{1}: Mistform Wakecaster becomes the creature type of your choice until end of turn.\n{2}{U}{U}, {T}: Choose a creature type. Each creature you control becomes that type until end of turn. diff --git a/forge-gui/res/cardsfolder/m/mistform_wall.txt b/forge-gui/res/cardsfolder/m/mistform_wall.txt index 589b232546d..ef4e9369bf7 100644 --- a/forge-gui/res/cardsfolder/m/mistform_wall.txt +++ b/forge-gui/res/cardsfolder/m/mistform_wall.txt @@ -4,7 +4,7 @@ Types:Creature Illusion Wall PT:1/4 S:Mode$ Continuous | Affected$ Card.Self+Wall | AddKeyword$ Defender | Description$ CARDNAME has defender as long as it's a Wall. A:AB$ ChooseType | Cost$ 1 | Type$ Creature | AILogic$ MostProminentComputerControls | SubAbility$ DBAnimate | SpellDescription$ CARDNAME becomes the creature type of your choice until end of turn. -SVar:DBAnimate:DB$ Animate | Types$ ChosenType | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True +SVar:DBAnimate:DB$ Animate | Types$ ChosenType | RemoveCreatureTypes$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/mistform_wall.jpg Oracle:Mistform Wall has defender as long as it's a Wall.\n{1}: Mistform Wall becomes the creature type of your choice until end of turn. diff --git a/forge-gui/res/cardsfolder/m/mistform_warchief.txt b/forge-gui/res/cardsfolder/m/mistform_warchief.txt index c1c9edded0e..fc779ed9de8 100644 --- a/forge-gui/res/cardsfolder/m/mistform_warchief.txt +++ b/forge-gui/res/cardsfolder/m/mistform_warchief.txt @@ -4,7 +4,7 @@ Types:Creature Illusion PT:1/3 S:Mode$ ReduceCost | ValidCard$ Creature.sharesCreatureTypeWith | Type$ Spell | Activator$ You | Amount$ 1 | Description$ Creature spells you cast that share a creature type with CARDNAME cost {1} less to cast. A:AB$ ChooseType | Cost$ T | Defined$ You | Type$ Creature | SubAbility$ DBAnimate | SpellDescription$ CARDNAME becomes the creature type of your choice until end of turn. -SVar:DBAnimate:DB$ Animate | Types$ ChosenType | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True +SVar:DBAnimate:DB$ Animate | Types$ ChosenType | RemoveCreatureTypes$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/mistform_warchief.jpg Oracle:Creature spells you cast that share a creature type with Mistform Warchief cost {1} less to cast.\n{T}: Mistform Warchief becomes the creature type of your choice until end of turn. diff --git a/forge-gui/res/cardsfolder/m/moan_of_the_unhallowed.txt b/forge-gui/res/cardsfolder/m/moan_of_the_unhallowed.txt index b4c31df5cc9..5c55c3c6cdb 100644 --- a/forge-gui/res/cardsfolder/m/moan_of_the_unhallowed.txt +++ b/forge-gui/res/cardsfolder/m/moan_of_the_unhallowed.txt @@ -1,7 +1,7 @@ Name:Moan of the Unhallowed ManaCost:2 B B Types:Sorcery -K:Flashback 5 B B +K:Flashback:5 B B A:SP$ Token | Cost$ 2 B B | TokenImage$ b 2 2 zombie ISD | TokenAltImages$ b_2_2_zombie2_ISD,b_2_2_zombie3_ISD | TokenAmount$ 2 | TokenName$ Zombie | TokenTypes$ Creature,Zombie | TokenOwner$ You | TokenColors$ Black | TokenPower$ 2 | TokenToughness$ 2 | SpellDescription$ Create two 2/2 black Zombie creature tokens. SVar:Picture:http://www.wizards.com/global/images/magic/general/moan_of_the_unhallowed.jpg Oracle:Create two 2/2 black Zombie creature tokens.\nFlashback {5}{B}{B} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/m/mob_justice.txt b/forge-gui/res/cardsfolder/m/mob_justice.txt index 6375ea090cc..3d3216fb930 100644 --- a/forge-gui/res/cardsfolder/m/mob_justice.txt +++ b/forge-gui/res/cardsfolder/m/mob_justice.txt @@ -1,7 +1,7 @@ Name:Mob Justice ManaCost:1 R Types:Sorcery -A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage to target player equal to the number of creatures you control. +A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage to target player or planeswalker equal to the number of creatures you control. SVar:X:Count$TypeYouCtrl.Creature SVar:Picture:http://www.wizards.com/global/images/magic/general/mob_justice.jpg -Oracle:Mob Justice deals damage to target player equal to the number of creatures you control. +Oracle:Mob Justice deals damage to target player or planeswalker equal to the number of creatures you control. diff --git a/forge-gui/res/cardsfolder/m/mogg_bombers.txt b/forge-gui/res/cardsfolder/m/mogg_bombers.txt index 93068d54a6d..d3559769a7b 100644 --- a/forge-gui/res/cardsfolder/m/mogg_bombers.txt +++ b/forge-gui/res/cardsfolder/m/mogg_bombers.txt @@ -2,8 +2,8 @@ Name:Mogg Bombers ManaCost:3 R Types:Creature Goblin PT:3/4 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Other |TriggerZones$ Battlefield | Execute$ TrigSac | TriggerDescription$ When another creature enters the battlefield, sacrifice CARDNAME and it deals 3 damage to target player. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Other |TriggerZones$ Battlefield | Execute$ TrigSac | TriggerDescription$ When another creature enters the battlefield, sacrifice CARDNAME and it deals 3 damage to target player or planeswalker. SVar:TrigSac:DB$ Sacrifice | Defined$ Self | SubAbility$ DBDamage -SVar:DBDamage:DB$ DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player to deal 3 damage to | NumDmg$ 3 +SVar:DBDamage:DB$ DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker to deal 3 damage to | NumDmg$ 3 SVar:Picture:http://www.wizards.com/global/images/magic/general/mogg_bombers.jpg -Oracle:When another creature enters the battlefield, sacrifice Mogg Bombers and it deals 3 damage to target player. +Oracle:When another creature enters the battlefield, sacrifice Mogg Bombers and it deals 3 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/m/mogg_fanatic.txt b/forge-gui/res/cardsfolder/m/mogg_fanatic.txt index bd6603acf26..f392d38ffb9 100644 --- a/forge-gui/res/cardsfolder/m/mogg_fanatic.txt +++ b/forge-gui/res/cardsfolder/m/mogg_fanatic.txt @@ -2,6 +2,6 @@ Name:Mogg Fanatic ManaCost:R Types:Creature Goblin PT:1/1 -A:AB$ DealDamage | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/mogg_fanatic.jpg -Oracle:Sacrifice Mogg Fanatic: Mogg Fanatic deals 1 damage to target creature or player. +Oracle:Sacrifice Mogg Fanatic: Mogg Fanatic deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/m/mogg_maniac.txt b/forge-gui/res/cardsfolder/m/mogg_maniac.txt index 5584bd14040..63f10091a0d 100644 --- a/forge-gui/res/cardsfolder/m/mogg_maniac.txt +++ b/forge-gui/res/cardsfolder/m/mogg_maniac.txt @@ -2,9 +2,9 @@ Name:Mogg Maniac ManaCost:1 R Types:Creature Goblin PT:1/1 -T:Mode$ DamageDoneOnce | ValidTarget$ Card.Self | Execute$ TrigDamage | TriggerDescription$ Whenever CARDNAME is dealt damage, it deals that much damage to target opponent. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | NumDmg$ X | References$ X +T:Mode$ DamageDoneOnce | ValidTarget$ Card.Self | Execute$ TrigDamage | TriggerDescription$ Whenever CARDNAME is dealt damage, it deals that much damage to target opponent or planeswalker. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Opponent,Planeswalker | TgtPrompt$ Select target opponent or planeswalker | NumDmg$ X | References$ X SVar:X:TriggerCount$DamageAmount SVar:HasCombatEffect:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/mogg_maniac.jpg -Oracle:Whenever Mogg Maniac is dealt damage, it deals that much damage to target opponent. +Oracle:Whenever Mogg Maniac is dealt damage, it deals that much damage to target opponent or planeswalker. diff --git a/forge-gui/res/cardsfolder/m/moldervine_cloak.txt b/forge-gui/res/cardsfolder/m/moldervine_cloak.txt index 0c66c2775d0..0a2b38cd525 100644 --- a/forge-gui/res/cardsfolder/m/moldervine_cloak.txt +++ b/forge-gui/res/cardsfolder/m/moldervine_cloak.txt @@ -4,6 +4,6 @@ Types:Enchantment Aura K:Enchant creature A:SP$ Attach | Cost$ 2 G | ValidTgts$ Creature | AILogic$ Pump S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 3 | AddToughness$ 3 | Description$ Enchanted creature gets +3/+3. -K:Dredge 2 +K:Dredge:2 SVar:Picture:http://www.wizards.com/global/images/magic/general/moldervine_cloak.jpg Oracle:Enchant creature\nEnchanted creature gets +3/+3.\nDredge 2 (If you would draw a card, instead you may put exactly two cards from the top of your library into your graveyard. If you do, return this card from your graveyard to your hand. Otherwise, draw a card.) diff --git a/forge-gui/res/cardsfolder/m/molten_hydra.txt b/forge-gui/res/cardsfolder/m/molten_hydra.txt index 2d8f3d5c7e2..6195412b7e1 100644 --- a/forge-gui/res/cardsfolder/m/molten_hydra.txt +++ b/forge-gui/res/cardsfolder/m/molten_hydra.txt @@ -3,7 +3,7 @@ ManaCost:1 R Types:Creature Hydra PT:1/1 A:AB$ PutCounter | Cost$ 1 R R | CounterType$ P1P1 | CounterNum$ 1 | SpellDescription$ Put a +1/+1 counter on CARDNAME. -A:AB$ DealDamage | Cost$ T SubCounter | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage to target creature or player equal to the number of +1/+1 counters removed this way. +A:AB$ DealDamage | Cost$ T SubCounter | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage to any target equal to the number of +1/+1 counters removed this way. SVar:X:SVar$CostCountersRemoved SVar:Picture:http://www.wizards.com/global/images/magic/general/molten_hydra.jpg -Oracle:{1}{R}{R}: Put a +1/+1 counter on Molten Hydra.\n{T}, Remove all +1/+1 counters from Molten Hydra: Molten Hydra deals damage to target creature or player equal to the number of +1/+1 counters removed this way. +Oracle:{1}{R}{R}: Put a +1/+1 counter on Molten Hydra.\n{T}, Remove all +1/+1 counters from Molten Hydra: Molten Hydra deals damage to any target equal to the number of +1/+1 counters removed this way. diff --git a/forge-gui/res/cardsfolder/m/molten_nursery.txt b/forge-gui/res/cardsfolder/m/molten_nursery.txt index 592f6a19c00..f8ff74ea8cc 100644 --- a/forge-gui/res/cardsfolder/m/molten_nursery.txt +++ b/forge-gui/res/cardsfolder/m/molten_nursery.txt @@ -2,9 +2,9 @@ Name:Molten Nursery ManaCost:2 R Types:Enchantment K:Devoid -T:Mode$ SpellCast | ValidCard$ Card.Colorless | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever you cast a colorless spell, CARDNAME deals 1 damage to target creature or player. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 +T:Mode$ SpellCast | ValidCard$ Card.Colorless | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever you cast a colorless spell, CARDNAME deals 1 damage to any target. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 SVar:BuffedBy:Card.Colorless DeckHints:Color$Colorless & Keyword$Devoid SVar:Picture:http://www.wizards.com/global/images/magic/general/molten_nursery.jpg -Oracle:Devoid (This card has no color.)\nWhenever you cast a colorless spell, Molten Nursery deals 1 damage to target creature or player. +Oracle:Devoid (This card has no color.)\nWhenever you cast a colorless spell, Molten Nursery deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/m/molten_tail_masticore.txt b/forge-gui/res/cardsfolder/m/molten_tail_masticore.txt index 73f94d4c7e6..389d4240113 100644 --- a/forge-gui/res/cardsfolder/m/molten_tail_masticore.txt +++ b/forge-gui/res/cardsfolder/m/molten_tail_masticore.txt @@ -3,10 +3,10 @@ ManaCost:4 Types:Artifact Creature Masticore PT:4/4 K:UpkeepCost:Discard<1/Card> -A:AB$DealDamage | Cost$ 4 ExileFromGrave<1/Creature> | NumDmg$ 4 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | SpellDescription$ CARDNAME deals 4 damage to target creature or player. +A:AB$DealDamage | Cost$ 4 ExileFromGrave<1/Creature> | NumDmg$ 4 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | SpellDescription$ CARDNAME deals 4 damage to any target. A:AB$Regenerate | Cost$ 2 | SpellDescription$ Regenerate CARDNAME. SVar:NeedsToPlayVar:Z GE3 SVar:Z:Count$InYourHand SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/molten_tail_masticore.jpg -Oracle:At the beginning of your upkeep, sacrifice Molten-Tail Masticore unless you discard a card.\n{4}, Exile a creature card from your graveyard: Molten-Tail Masticore deals 4 damage to target creature or player.\n{2}: Regenerate Molten-Tail Masticore. +Oracle:At the beginning of your upkeep, sacrifice Molten-Tail Masticore unless you discard a card.\n{4}, Exile a creature card from your graveyard: Molten-Tail Masticore deals 4 damage to any target.\n{2}: Regenerate Molten-Tail Masticore. diff --git a/forge-gui/res/cardsfolder/m/molten_vortex.txt b/forge-gui/res/cardsfolder/m/molten_vortex.txt index 1f5359ab84f..90c5fb939e5 100644 --- a/forge-gui/res/cardsfolder/m/molten_vortex.txt +++ b/forge-gui/res/cardsfolder/m/molten_vortex.txt @@ -1,6 +1,6 @@ Name:Molten Vortex ManaCost:R Types:Enchantment -A:AB$ DealDamage | Cost$ R Discard<1/Land> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:AB$ DealDamage | Cost$ R Discard<1/Land> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/molten_vortex.jpg -Oracle:{R}, Discard a land card: Molten Vortex deals 2 damage to target creature or player. +Oracle:{R}, Discard a land card: Molten Vortex deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/m/momentary_blink.txt b/forge-gui/res/cardsfolder/m/momentary_blink.txt index 5fbd9d6d286..a7be276b803 100644 --- a/forge-gui/res/cardsfolder/m/momentary_blink.txt +++ b/forge-gui/res/cardsfolder/m/momentary_blink.txt @@ -1,7 +1,7 @@ Name:Momentary Blink ManaCost:1 W Types:Instant -K:Flashback 3 U +K:Flashback:3 U A:SP$ ChangeZone | Cost$ 1 W | Origin$ Battlefield | Destination$ Exile | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control. | SubAbility$ DBReturn | RememberTargets$ True | SpellDescription$ Exile target creature you control, then return it to the battlefield under its owner's control. SVar:DBReturn:DB$ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True diff --git a/forge-gui/res/cardsfolder/m/moments_peace.txt b/forge-gui/res/cardsfolder/m/moments_peace.txt index 1b88e3353dd..af2f3ebf404 100644 --- a/forge-gui/res/cardsfolder/m/moments_peace.txt +++ b/forge-gui/res/cardsfolder/m/moments_peace.txt @@ -1,7 +1,7 @@ Name:Moment's Peace ManaCost:1 G Types:Instant -K:Flashback 2 G +K:Flashback:2 G A:SP$ Fog | Cost$ 1 G | SpellDescription$ Prevent all combat damage that would be dealt this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/moments_peace.jpg Oracle:Prevent all combat damage that would be dealt this turn.\nFlashback {2}{G} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/m/moon_eating_dog.txt b/forge-gui/res/cardsfolder/m/moon_eating_dog.txt new file mode 100644 index 00000000000..5f63f6e0db5 --- /dev/null +++ b/forge-gui/res/cardsfolder/m/moon_eating_dog.txt @@ -0,0 +1,7 @@ +Name:Moon-Eating Dog +ManaCost:3 U +Types:Creature Hound +S:Mode$ Continuous | Affected$ Card.Self | AddKeyword$ Flying | IsPresent$ Planeswalker.Yanling+YouCtrl | Description$ As long as you control a Yanling planeswalker, CARDNAME has flying. +SVar:BuffedBy:Nissa +Oracle:As long as you control a Yanling planeswalker, Moon-Eating Dog has flying. (It can't be blocked except by creatures with flying or reach.) +PT:3/3 diff --git a/forge-gui/res/cardsfolder/m/moonbow_illusionist.txt b/forge-gui/res/cardsfolder/m/moonbow_illusionist.txt index 487a837d64d..aa870e5b3ba 100644 --- a/forge-gui/res/cardsfolder/m/moonbow_illusionist.txt +++ b/forge-gui/res/cardsfolder/m/moonbow_illusionist.txt @@ -4,7 +4,7 @@ Types:Creature Moonfolk Wizard PT:2/1 K:Flying A:AB$ ChooseType | Cost$ 2 Return<1/Land> | Defined$ You | Type$ Basic Land | SubAbility$ DBAnimate | SpellDescription$ Target land becomes the basic land type of your choice until end of turn. -SVar:DBAnimate:DB$ Animate | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ ChosenType | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | RemoveAllAbilities$ True +SVar:DBAnimate:DB$ Animate | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ ChosenType | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/moonbow_illusionist.jpg Oracle:Flying\n{2}, Return a land you control to its owner's hand: Target land becomes the basic land type of your choice until end of turn. diff --git a/forge-gui/res/cardsfolder/m/moonglove_extract.txt b/forge-gui/res/cardsfolder/m/moonglove_extract.txt index 419bdf6cb87..a551d482c26 100644 --- a/forge-gui/res/cardsfolder/m/moonglove_extract.txt +++ b/forge-gui/res/cardsfolder/m/moonglove_extract.txt @@ -1,6 +1,6 @@ Name:Moonglove Extract ManaCost:3 Types:Artifact -A:AB$ DealDamage | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:AB$ DealDamage | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/moonglove_extract.jpg -Oracle:Sacrifice Moonglove Extract: Moonglove Extract deals 2 damage to target creature or player. +Oracle:Sacrifice Moonglove Extract: Moonglove Extract deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/m/morbid_hunger.txt b/forge-gui/res/cardsfolder/m/morbid_hunger.txt index d3e99c0b1c8..a2287cc961c 100644 --- a/forge-gui/res/cardsfolder/m/morbid_hunger.txt +++ b/forge-gui/res/cardsfolder/m/morbid_hunger.txt @@ -1,8 +1,8 @@ Name:Morbid Hunger ManaCost:4 B B Types:Sorcery -K:Flashback 7 B B -A:SP$ DealDamage | Cost$ 4 B B | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SubAbility$ DB | SpellDescription$ CARDNAME deals 3 damage to target creature or player. You gain 3 life. +K:Flashback:7 B B +A:SP$ DealDamage | Cost$ 4 B B | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SubAbility$ DB | SpellDescription$ CARDNAME deals 3 damage to any target. You gain 3 life. SVar:DB:DB$GainLife | LifeAmount$ 3 SVar:Picture:http://www.wizards.com/global/images/magic/general/morbid_hunger.jpg -Oracle:Morbid Hunger deals 3 damage to target creature or player. You gain 3 life.\nFlashback {7}{B}{B} (You may cast this card from your graveyard for its flashback cost. Then exile it.) +Oracle:Morbid Hunger deals 3 damage to any target. You gain 3 life.\nFlashback {7}{B}{B} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/m/morgue_burst.txt b/forge-gui/res/cardsfolder/m/morgue_burst.txt index 8fd8588f167..ee71a9d712a 100644 --- a/forge-gui/res/cardsfolder/m/morgue_burst.txt +++ b/forge-gui/res/cardsfolder/m/morgue_burst.txt @@ -1,9 +1,9 @@ Name:Morgue Burst ManaCost:4 B R Types:Sorcery -A:SP$ ChangeZone | Cost$ 4 B R | Origin$ Graveyard | Destination$ Hand | TgtPrompt$ Select target creature card in your graveyard | ValidTgts$ Creature.YouCtrl | RememberChanged$ True | SubAbility$ DBDmg | SpellDescription$ Return target creature card from your graveyard to your hand. CARDNAME deals damage to target creature or player equal to the power of the card returned this way. -SVar:DBDmg:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Choose target creature or player | NumDmg$ X | References$ X | SubAbility$ DBCleanup +A:SP$ ChangeZone | Cost$ 4 B R | Origin$ Graveyard | Destination$ Hand | TgtPrompt$ Select target creature card in your graveyard | ValidTgts$ Creature.YouCtrl | RememberChanged$ True | SubAbility$ DBDmg | SpellDescription$ Return target creature card from your graveyard to your hand. CARDNAME deals damage to any target equal to the power of the card returned this way. +SVar:DBDmg:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Choose any target | NumDmg$ X | References$ X | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Remembered$CardPower SVar:Picture:http://www.wizards.com/global/images/magic/general/morgue_burst.jpg -Oracle:Return target creature card from your graveyard to your hand. Morgue Burst deals damage to target creature or player equal to the power of the card returned this way. +Oracle:Return target creature card from your graveyard to your hand. Morgue Burst deals damage to any target equal to the power of the card returned this way. diff --git a/forge-gui/res/cardsfolder/m/morgue_theft.txt b/forge-gui/res/cardsfolder/m/morgue_theft.txt index e18c3cd2e67..875bf2060dd 100644 --- a/forge-gui/res/cardsfolder/m/morgue_theft.txt +++ b/forge-gui/res/cardsfolder/m/morgue_theft.txt @@ -1,7 +1,7 @@ Name:Morgue Theft ManaCost:1 B Types:Sorcery -K:Flashback 4 B +K:Flashback:4 B A:SP$ ChangeZone | Cost$ 1 B | Origin$ Graveyard | Destination$ Hand | TgtPrompt$ Choose target creature card in a graveyard | ValidTgts$ Creature.YouCtrl | SpellDescription$ Return target creature card from your graveyard to your hand. SVar:Picture:http://www.wizards.com/global/images/magic/general/morgue_theft.jpg Oracle:Return target creature card from your graveyard to your hand.\nFlashback {4}{B} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/upcoming/morphic_pool.txt b/forge-gui/res/cardsfolder/m/morphic_pool.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/morphic_pool.txt rename to forge-gui/res/cardsfolder/m/morphic_pool.txt diff --git a/forge-gui/res/cardsfolder/m/morsel_theft.txt b/forge-gui/res/cardsfolder/m/morsel_theft.txt index e945aadaf7d..472af30e2f7 100644 --- a/forge-gui/res/cardsfolder/m/morsel_theft.txt +++ b/forge-gui/res/cardsfolder/m/morsel_theft.txt @@ -1,9 +1,10 @@ Name:Morsel Theft ManaCost:2 B B Types:Tribal Sorcery Rogue -SVar:AltCost:Cost$ 1 B | Activation$ Prowl | Description$ Prowl {1}{B} (You may cast this for its prowl cost if you dealt combat damage to a player this turn with a Rogue.) +K:Prowl:1 B A:SP$ LoseLife | Cost$ 2 B B | ValidTgts$ Player | TgtPrompt$ Select a player | LifeAmount$ 3 | SubAbility$ DBGainLife | SpellDescription$ Target player loses 3 life and you gain 3 life. If CARDNAME's prowl cost was paid, draw a card. SVar:DBGainLife:DB$GainLife | Defined$ You | LifeAmount$ 3 | SubAbility$ DBDraw -SVar:DBDraw:DB$Draw | NumCards$ 1 | Condition$ AltCost +SVar:DBDraw:DB$Draw | NumCards$ 1 | ConditionDefined$ Self | ConditionPresent$ Card.prowled +DeckNeeds:Type$Rogue SVar:Picture:http://www.wizards.com/global/images/magic/general/morsel_theft.jpg Oracle:Prowl {1}{B} (You may cast this for its prowl cost if you dealt combat damage to a player this turn with a Rogue.)\nTarget player loses 3 life and you gain 3 life. If Morsel Theft's prowl cost was paid, draw a card. diff --git a/forge-gui/res/cardsfolder/m/mothrider_samurai.txt b/forge-gui/res/cardsfolder/m/mothrider_samurai.txt index d828ea96ca8..397ae2afc1f 100644 --- a/forge-gui/res/cardsfolder/m/mothrider_samurai.txt +++ b/forge-gui/res/cardsfolder/m/mothrider_samurai.txt @@ -3,6 +3,6 @@ ManaCost:3 W Types:Creature Human Samurai PT:2/2 K:Flying -K:Bushido 1 +K:Bushido:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/mothrider_samurai.jpg Oracle:Flying\nBushido 1 (When this blocks or becomes blocked, it gets +1/+1 until end of turn.) diff --git a/forge-gui/res/cardsfolder/m/mu_yanling.txt b/forge-gui/res/cardsfolder/m/mu_yanling.txt new file mode 100644 index 00000000000..2a41f230e1d --- /dev/null +++ b/forge-gui/res/cardsfolder/m/mu_yanling.txt @@ -0,0 +1,9 @@ +Name:Mu Yanling +ManaCost:4 U U +Types:Legendary Planeswalker Yanling +Loyalty:5 +A:AB$ Pump | Cost$ AddCounter<2/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ HIDDEN Unblockable | SpellDescription$ Target creature can't be blocked this turn. +A:AB$ Draw | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | NumCards$ 2 | SpellDescription$ Draw two cards. +A:AB$ TapAll | Cost$ SubCounter<10/LOYALTY> | Planeswalker$ True | Ultimate$ True | ValidCards$ Creature.OppCtrl | AILogic$ AtLeast3 | StackDescription$ SpellDescription | SpellDescription$ Tap all creatures your opponents control. You take an extra turn after this one. +SVar:DBAddTurn:DB$ AddTurn | NumTurns$ 1 +Oracle:[+2]: Target creature can't be blocked this turn.\n[-3]: Draw two cards.\n[-10]: Tap all creatures your opponents control. You take an extra turn after this one. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/m/mudbutton_torchrunner.txt b/forge-gui/res/cardsfolder/m/mudbutton_torchrunner.txt index 34232797db0..3f3602162ac 100644 --- a/forge-gui/res/cardsfolder/m/mudbutton_torchrunner.txt +++ b/forge-gui/res/cardsfolder/m/mudbutton_torchrunner.txt @@ -2,7 +2,7 @@ Name:Mudbutton Torchrunner ManaCost:2 R Types:Creature Goblin Warrior PT:1/1 -T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, it deals 3 damage to target creature or player. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, it deals 3 damage to any target. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 SVar:Picture:http://www.wizards.com/global/images/magic/general/mudbutton_torchrunner.jpg -Oracle:When Mudbutton Torchrunner dies, it deals 3 damage to target creature or player. +Oracle:When Mudbutton Torchrunner dies, it deals 3 damage to any target. diff --git a/forge-gui/res/cardsfolder/m/murderous_redcap.txt b/forge-gui/res/cardsfolder/m/murderous_redcap.txt index eb7575e0cf7..54ce4522ec2 100644 --- a/forge-gui/res/cardsfolder/m/murderous_redcap.txt +++ b/forge-gui/res/cardsfolder/m/murderous_redcap.txt @@ -3,9 +3,9 @@ ManaCost:2 BR BR Types:Creature Goblin Assassin PT:2/2 K:Persist -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals damage equal to its power to target creature or player. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals damage equal to its power to any target. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X SVar:X:Count$CardPower SVar:PlayMain1:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/murderous_redcap.jpg -Oracle:When Murderous Redcap enters the battlefield, it deals damage equal to its power to target creature or player.\nPersist (When this creature dies, if it had no -1/-1 counters on it, return it to the battlefield under its owner's control with a -1/-1 counter on it.) +Oracle:When Murderous Redcap enters the battlefield, it deals damage equal to its power to any target.\nPersist (When this creature dies, if it had no -1/-1 counters on it, return it to the battlefield under its owner's control with a -1/-1 counter on it.) diff --git a/forge-gui/res/cardsfolder/m/murderous_redcap_avatar.txt b/forge-gui/res/cardsfolder/m/murderous_redcap_avatar.txt index f055524bce6..31af6f17653 100644 --- a/forge-gui/res/cardsfolder/m/murderous_redcap_avatar.txt +++ b/forge-gui/res/cardsfolder/m/murderous_redcap_avatar.txt @@ -2,8 +2,8 @@ Name:Murderous Redcap Avatar ManaCost:no cost Types:Vanguard HandLifeModifier:+0/-2 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.YouCtrl+HasCounters | TriggerZones$ Command | Execute$ TrigDamage | TriggerDescription$ Whenever a creature enters the battlefield under your control with a counter on it, you may have it deal damage equal to its power to target creature or player. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | DamageSource$ TriggeredCard | NumDmg$ Damage | References$ Damage +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.YouCtrl+HasCounters | TriggerZones$ Command | Execute$ TrigDamage | TriggerDescription$ Whenever a creature enters the battlefield under your control with a counter on it, you may have it deal damage equal to its power to any target. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | DamageSource$ TriggeredCard | NumDmg$ Damage | References$ Damage SVar:Damage:TriggeredCard$CardPower SVar:Picture:https://downloads.cardforge.org/images/cards/VAN/Murderous Redcap Avatar.full.jpg -Oracle:Hand +0, life -2\nWhenever a creature enters the battlefield under your control with a counter on it, you may have it deal damage equal to its power to target creature or player. +Oracle:Hand +0, life -2\nWhenever a creature enters the battlefield under your control with a counter on it, you may have it deal damage equal to its power to any target. diff --git a/forge-gui/res/cardsfolder/m/mystic_archaeologist.txt b/forge-gui/res/cardsfolder/m/mystic_archaeologist.txt new file mode 100644 index 00000000000..3515347d06b --- /dev/null +++ b/forge-gui/res/cardsfolder/m/mystic_archaeologist.txt @@ -0,0 +1,6 @@ +Name:Mystic Archaeologist +ManaCost:1 U +Types:Creature Human Wizard +A:AB$ Draw | Cost$ 3 U U | Defined$ You | NumCards$ 2 | SpellDescription$ Draw two cards. +Oracle:{3}{U}{U}: Draw two cards. +PT:2/1 diff --git a/forge-gui/res/cardsfolder/m/mystic_compass.txt b/forge-gui/res/cardsfolder/m/mystic_compass.txt index a673b9c63e3..227f5c8f874 100644 --- a/forge-gui/res/cardsfolder/m/mystic_compass.txt +++ b/forge-gui/res/cardsfolder/m/mystic_compass.txt @@ -2,7 +2,7 @@ Name:Mystic Compass ManaCost:2 Types:Artifact A:AB$ ChooseType | Cost$ 1 T | Defined$ You | Type$ Basic Land | SubAbility$ DBAnimate | SpellDescription$ Target land becomes the basic land type of your choice until end of turn. -SVar:DBAnimate:DB$ Animate | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ ChosenType | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | RemoveAllAbilities$ True +SVar:DBAnimate:DB$ Animate | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ ChosenType | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/mystic_compass.jpg Oracle:{1}, {T}: Target land becomes the basic land type of your choice until end of turn. diff --git a/forge-gui/res/cardsfolder/m/mystic_retrieval.txt b/forge-gui/res/cardsfolder/m/mystic_retrieval.txt index 46adec07be1..ed57ec139b1 100644 --- a/forge-gui/res/cardsfolder/m/mystic_retrieval.txt +++ b/forge-gui/res/cardsfolder/m/mystic_retrieval.txt @@ -1,7 +1,7 @@ Name:Mystic Retrieval ManaCost:3 U Types:Sorcery -K:Flashback 2 R +K:Flashback:2 R A:SP$ ChangeZone | Cost$ 3 U | Origin$ Graveyard | Destination$ Hand | TgtPrompt$ Choose target instant or sorcery card in your graveyard | ValidTgts$ Instant.YouCtrl,Sorcery.YouCtrl | SpellDescription$ Return target instant or sorcery card from your graveyard to your hand. SVar:RemRandomDeck:True DeckNeeds:Color$Red diff --git a/forge-gui/res/cardsfolder/m/mystical_teachings.txt b/forge-gui/res/cardsfolder/m/mystical_teachings.txt index fc0ffed3168..6960b18a871 100644 --- a/forge-gui/res/cardsfolder/m/mystical_teachings.txt +++ b/forge-gui/res/cardsfolder/m/mystical_teachings.txt @@ -1,7 +1,7 @@ Name:Mystical Teachings ManaCost:3 U Types:Instant -K:Flashback 5 B +K:Flashback:5 B A:SP$ ChangeZone | Cost$ 3 U | ChangeType$ Instant,Card.hasKeywordFlash | ChangeNum$ 1 | Origin$ Library | Destination$ Hand | Shuffle$ True | SpellDescription$ Search your library for an instant card or a card with flash, reveal it, put it into your hand, then shuffle your library. #TODO: The AI will currently search for the most expensive valid card in the library. This can be used to the AI's advantage with #careful deck design (which is why this card only works in properly designed AI decks). Consider improving tutoring logic with priorities. diff --git a/forge-gui/res/cardsfolder/m/myth_unbound.txt b/forge-gui/res/cardsfolder/m/myth_unbound.txt new file mode 100644 index 00000000000..c304efb05e6 --- /dev/null +++ b/forge-gui/res/cardsfolder/m/myth_unbound.txt @@ -0,0 +1,9 @@ +Name:Myth Unbound +ManaCost:2 G +Types:Enchantment +S:Mode$ ReduceCost | ValidCard$ Card.IsCommander | Type$ Spell | Amount$ X | EffectZone$ Command | Description$ Your commander costs {1} less to cast for each time it's been cast from the command zone this game. +T:Mode$ ChangesZone | ValidCard$ Card.IsCommander+YouOwn | TriggerZones$ Command | Origin$ Any | Destination$ Command | Execute$ TrigDraw | TriggerDescription$ Whenever your commander is put into the command zone from anywhere, draw a card. +SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1 +SVar:X:Count$CommanderCastFromCommandZone +SVar:RemRandomDeck:True +Oracle:Your commander costs {1} less to cast for each time it's been cast from the command zone this game.\nWhenever your commander is put into the command zone from anywhere, draw a card. diff --git a/forge-gui/res/cardsfolder/n/naar_isle.txt b/forge-gui/res/cardsfolder/n/naar_isle.txt index f221884941f..83f96809583 100644 --- a/forge-gui/res/cardsfolder/n/naar_isle.txt +++ b/forge-gui/res/cardsfolder/n/naar_isle.txt @@ -5,8 +5,8 @@ T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Command | Execu SVar:TrigPutCounter:DB$ PutCounter | CounterType$ FLAME | CounterNum$ 1 | SubAbility$ DBDmg SVar:DBDmg:DB$ DealDamage | Defined$ You | NumDmg$ Y | References$ Y SVar:Y:Count$CardCounters.FLAME -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, CARDNAME deals 3 damage to target player. -SVar:RolledChaos:DB$ DealDamage | ValidTgts$ Player | NumDmg$ 3 +T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, CARDNAME deals 3 damage to target player or planeswalker. +SVar:RolledChaos:DB$ DealDamage | ValidTgts$ Player,Planeswalker | NumDmg$ 3 SVar:Picture:http://www.wizards.com/global/images/magic/general/naar_isle.jpg SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:At the beginning of your upkeep, put a flame counter on Naar Isle, then Naar Isle deals damage to you equal to the number of flame counters on it.\nWhenever you roll {CHAOS}, Naar Isle deals 3 damage to target player. +Oracle:At the beginning of your upkeep, put a flame counter on Naar Isle, then Naar Isle deals damage to you equal to the number of flame counters on it.\nWhenever you roll {CHAOS}, Naar Isle deals 3 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/n/nagao_bound_by_honor.txt b/forge-gui/res/cardsfolder/n/nagao_bound_by_honor.txt index 682dd65811a..5c6cfa7efca 100644 --- a/forge-gui/res/cardsfolder/n/nagao_bound_by_honor.txt +++ b/forge-gui/res/cardsfolder/n/nagao_bound_by_honor.txt @@ -2,7 +2,7 @@ Name:Nagao, Bound by Honor ManaCost:3 W Types:Legendary Creature Human Samurai PT:3/3 -K:Bushido 1 +K:Bushido:1 T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigPumpAll | TriggerDescription$ Whenever CARDNAME attacks, Samurai creatures you control get +1/+1 until end of turn. SVar:TrigPumpAll:DB$PumpAll | ValidCards$ Creature.Samurai+YouCtrl | NumAtt$ +1 | NumDef$ +1 SVar:RemRandomDeck:True diff --git a/forge-gui/res/cardsfolder/n/najeela_the_blade_blossom.txt b/forge-gui/res/cardsfolder/n/najeela_the_blade_blossom.txt new file mode 100644 index 00000000000..873d0619519 --- /dev/null +++ b/forge-gui/res/cardsfolder/n/najeela_the_blade_blossom.txt @@ -0,0 +1,14 @@ +Name:Najeela, the Blade-Blossom +ManaCost:2 R +Types:Legendary Creature Human Warrior +PT:3/2 +T:Mode$ Attacks | ValidCard$ Warrior | TriggerZones$ Battlefield | Execute$ TrigToken | OptionalDecider$ You | TriggerController$ You | TriggerDescription$ Whenever a Warrior attacks, you may have its controller create a 1/1 white Warrior creature token that's tapped and attacking. +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenName$ Warrior | TokenTypes$ Creature,Warrior | TokenOwner$ TriggeredAttackerController | TokenColors$ White | TokenPower$ 1 | TokenToughness$ 1 | TokenTapped$ True | TokenAttacking$ True | TokenImage$ w 1 1 warrior | AILogic$ OnlyOnAlliedAttack +A:AB$ UntapAll | Cost$ W U B R G | ValidCards$ Creature.attacking | ActivationPhases$ BeginCombat->EndCombat | SubAbility$ DBAddCombat | SpellDescription$ Untap all attacking creatures. They gain trample, lifelink, and haste until end of turn. After this phase, there is an additional combat phase. Activate this ability only during combat. +SVar:DBAddCombat:DB$ AddPhase | ExtraPhase$ BeginCombat | AfterPhase$ EndCombat | SubAbility$ DBPumpAll +SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Creature.attacking | KW$ Trample & Lifelink & Haste +SVar:PlayMain1:TRUE +DeckHints:Type$Warrior +DeckHas:Ability$Token +SVar:Picture:http://www.wizards.com/global/images/magic/general/najeela_the_blade_blossom.jpg +Oracle:Whenever a Warrior attacks, you may have its controller create a 1/1 white Warrior creature token that's tapped and attacking.\n{W}{U}{B}{R}{G}: Untap all attacking creatures. They gain trample, lifelink, and haste until end of turn. After this phase, there is an additional combat phase. Activate this ability only during combat. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/n/necra_disciple.txt b/forge-gui/res/cardsfolder/n/necra_disciple.txt index 8098edca1e7..5a3df2ddaff 100644 --- a/forge-gui/res/cardsfolder/n/necra_disciple.txt +++ b/forge-gui/res/cardsfolder/n/necra_disciple.txt @@ -2,7 +2,7 @@ Name:Necra Disciple ManaCost:B Types:Creature Human Wizard PT:1/1 -A:AB$ PreventDamage | Cost$ W T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ W T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to any target this turn. A:AB$ Mana | Cost$ G T | Produced$ Any | SpellDescription$ Add one mana of any color. SVar:Picture:http://www.wizards.com/global/images/magic/general/necra_disciple.jpg -Oracle:{G}, {T}: Add one mana of any color.\n{W}, {T}: Prevent the next 1 damage that would be dealt to target creature or player this turn. +Oracle:{G}, {T}: Add one mana of any color.\n{W}, {T}: Prevent the next 1 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/n/necroplasm.txt b/forge-gui/res/cardsfolder/n/necroplasm.txt index 98e78915697..3d8662c1f90 100644 --- a/forge-gui/res/cardsfolder/n/necroplasm.txt +++ b/forge-gui/res/cardsfolder/n/necroplasm.txt @@ -2,7 +2,7 @@ Name:Necroplasm ManaCost:1 B B Types:Creature Ooze PT:1/1 -K:Dredge 2 +K:Dredge:2 T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of your upkeep, put a +1/+1 counter on CARDNAME. T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDestroy | TriggerDescription$ At the beginning of your end step, destroy each creature with converted mana cost equal to the number of +1/+1 counters on CARDNAME. SVar:TrigPutCounter:DB$PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 diff --git a/forge-gui/res/cardsfolder/n/neheb_the_eternal.txt b/forge-gui/res/cardsfolder/n/neheb_the_eternal.txt index cb04673050c..54dbff82591 100644 --- a/forge-gui/res/cardsfolder/n/neheb_the_eternal.txt +++ b/forge-gui/res/cardsfolder/n/neheb_the_eternal.txt @@ -2,7 +2,7 @@ Name:Neheb, the Eternal ManaCost:3 R R Types:Legendary Creature Zombie Minotaur Warrior PT:4/6 -K:Afflict 3 +K:Afflict:3 T:Mode$ Phase | Phase$ Main2 | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigMana | TriggerDescription$ At the beginning of your postcombat main phase, add {R} for each 1 life your opponents have lost this turn. SVar:TrigMana:DB$Mana | Produced$ R | Amount$ X | References$ X SVar:X:Count$LifeOppsLostThisTurn diff --git a/forge-gui/res/cardsfolder/n/nest_of_scarabs.txt b/forge-gui/res/cardsfolder/n/nest_of_scarabs.txt index 8ef46e2da80..b53230e10d4 100644 --- a/forge-gui/res/cardsfolder/n/nest_of_scarabs.txt +++ b/forge-gui/res/cardsfolder/n/nest_of_scarabs.txt @@ -1,7 +1,7 @@ Name:Nest of Scarabs ManaCost:2 B Types:Enchantment -T:Mode$ CounterAddedOnce | ValidCard$ Creature | ValidSource$ Card.YouCtrl | CounterType$ M1M1 | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Whenever you put one or more -1/-1 counters on a creature, create that many 1/1 black Insect creature tokens. +T:Mode$ CounterAddedOnce | ValidCard$ Creature | ValidSource$ You | CounterType$ M1M1 | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Whenever you put one or more -1/-1 counters on a creature, create that many 1/1 black Insect creature tokens. SVar:TrigToken:DB$ Token | TokenAmount$ X | References$ X | TokenName$ Insect | TokenTypes$ Creature,Insect | TokenOwner$ You | TokenColors$ Black | TokenPower$ 1 | TokenToughness$ 1 | TokenImage$ b 1 1 insect AKH SVar:X:TriggerCount$Amount DeckHints:Ability$Counters diff --git a/forge-gui/res/cardsfolder/n/nesting_dragon.txt b/forge-gui/res/cardsfolder/n/nesting_dragon.txt new file mode 100644 index 00000000000..c72018dc457 --- /dev/null +++ b/forge-gui/res/cardsfolder/n/nesting_dragon.txt @@ -0,0 +1,11 @@ +Name:Nesting Dragon +ManaCost:3 R R +Types:Creature Dragon +PT:5/4 +K:Flying +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Land.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Landfall Whenever a land enters the battlefield under your control, create a 0/2 red Dragon creature token with defender and "When this creature dies, create a 2/2 red Dragon creature token with flying and '{R}: This creature gets +1/+0 until end of turn.'" +SVar:TrigToken:DB$ Token | TokenImage$ r 0 2 dragon egg | TokenAmount$ 1 | TokenName$ Dragon Egg | TokenTypes$ Creature,Dragon,Egg | TokenOwner$ You | TokenColors$ Red | TokenPower$ 0 | TokenToughness$ 2 | TokenKeywords$ Defender | TokenTriggers$ TriggerDies | TokenSVars$ TrigToken2,DragonPump +SVar:TriggerDies:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigToken2 | TriggerController$ TriggeredCardController | TriggerDescription$ When this creature dies, create a 2/2 red Dragon creature token with flying and "{R}: This creature gets +1/+0 until end of turn." +SVar:TrigToken2:DB$Token | TokenImage$ r 2 2 dragon c18 | TokenAmount$ 1 | TokenName$ Dragon | TokenTypes$ Creature,Dragon | TokenOwner$ You | TokenColors$ Red | TokenPower$ 2 | TokenToughness$ 2 | TokenKeywords$ Flying | TokenAbilities$ DragonPump +SVar:DragonPump:AB$ Pump | Cost$ R | NumAtt$ +1 | SpellDescription$ CARDNAME gets +1/+0 until end of turn. +Oracle:Flying\nLandfall — Whenever a land enters the battlefield under your control, create a 0/2 red Dragon Egg creature token with defender and "When this creature dies, create a 2/2 red Dragon creature token with flying and '{R}: This creature gets +1/+0 until end of turn.'" \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/n/nexus_of_fate.txt b/forge-gui/res/cardsfolder/n/nexus_of_fate.txt new file mode 100644 index 00000000000..2a42becdd8f --- /dev/null +++ b/forge-gui/res/cardsfolder/n/nexus_of_fate.txt @@ -0,0 +1,6 @@ +Name:Nexus of Fate +ManaCost:5 U U +Types:Instant +A:SP$ AddTurn | Cost$ 5 U U | NumTurns$ 1 | SpellDescription$ Take an extra turn after this one. +K:If CARDNAME would be put into a graveyard from anywhere, reveal CARDNAME and shuffle it into its owner's library instead. +Oracle:Take an extra turn after this one.\nIf Nexus of Fate would be put into a graveyard from anywhere, reveal Nexus of Fate and shuffle it into its owner's library instead. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/n/nezumi_ronin.txt b/forge-gui/res/cardsfolder/n/nezumi_ronin.txt index 3715059912a..8754dd24b79 100644 --- a/forge-gui/res/cardsfolder/n/nezumi_ronin.txt +++ b/forge-gui/res/cardsfolder/n/nezumi_ronin.txt @@ -2,6 +2,6 @@ Name:Nezumi Ronin ManaCost:2 B Types:Creature Rat Samurai PT:3/1 -K:Bushido 1 +K:Bushido:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/nezumi_ronin.jpg Oracle:Bushido 1 (When this blocks or becomes blocked, it gets +1/+1 until end of turn.) diff --git a/forge-gui/res/cardsfolder/n/nicol_bolas_god_pharaoh.txt b/forge-gui/res/cardsfolder/n/nicol_bolas_god_pharaoh.txt index 1a268cafe08..fc854f02220 100644 --- a/forge-gui/res/cardsfolder/n/nicol_bolas_god_pharaoh.txt +++ b/forge-gui/res/cardsfolder/n/nicol_bolas_god_pharaoh.txt @@ -8,7 +8,7 @@ SVar:NicolBolasPlay:Mode$ Continuous | MayPlay$ True | MayPlayWithoutManaCost$ T SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | SubAbility$ DBCleanupEffect SVar:DBCleanupEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile A:AB$ ChangeZone | Cost$ AddCounter<1/LOYALTY> | DefinedPlayer$ Player.Opponent | Origin$ Hand | Destination$ Exile | ChangeType$ Card | ChangeNum$ 2 | Hidden$ True | Mandatory$ True | Planeswalker$ True | SpellDescription$ Each opponent exiles two cards from their hand. -A:AB$ DealDamage | Cost$ SubCounter<4/LOYALTY> | NumDmg$ 7 | ValidTgts$ Opponent,Creature.OppCtrl | TgtPrompt$ Select target opponent or creature an opponent controls | Planeswalker$ True | SpellDescription$ CARDNAME deals deals 7 damage to target opponent or creature an opponent controls. +A:AB$ DealDamage | Cost$ SubCounter<4/LOYALTY> | NumDmg$ 7 | ValidTgts$ Opponent,Creature.OppCtrl,Planeswalker.OppCtrl | TgtPrompt$ Select target opponent, creature an opponent controls, or planeswalker an opponent controls | Planeswalker$ True | SpellDescription$ CARDNAME deals deals 7 damage to target opponent, creature an opponent controls, or planeswalker an opponent controls. A:AB$ ChangeZoneAll | Cost$ SubCounter<12/LOYALTY> | ChangeType$ Permanent.OppCtrl+nonLand | Origin$ Battlefield | Destination$ Exile | StackDescription$ SpellDescription | Planeswalker$ True | Ultimate$ True | SpellDescription$ Exile each nonland permanent your opponents control. SVar:Picture:http://www.wizards.com/global/images/magic/general/nicol_bolas_god_pharaoh.jpg -Oracle:[+2]: Target opponent exiles cards from the top of their library until they exile a nonland card. Until end of turn, you may cast that card without paying its mana cost.\n[+1]: Each opponent exiles two cards from their hand.\n[-4]: Nicol Bolas, God-Pharaoh deals 7 damage to target opponent or creature an opponent controls.\n[-12]: Exile each nonland permanent your opponents control. +Oracle:[+2]: Target opponent exiles cards from the top of their library until they exile a nonland card. Until end of turn, you may cast that card without paying its mana cost.\n[+1]: Each opponent exiles two cards from their hand.\n[-4]: Nicol Bolas, God-Pharaoh deals 7 damage to target opponent, creature an opponent controls, or planeswalker an opponent controls.\n[-12]: Exile each nonland permanent your opponents control. diff --git a/forge-gui/res/cardsfolder/n/nicol_bolas_planeswalker.txt b/forge-gui/res/cardsfolder/n/nicol_bolas_planeswalker.txt index 30333570082..0d249f9de2f 100644 --- a/forge-gui/res/cardsfolder/n/nicol_bolas_planeswalker.txt +++ b/forge-gui/res/cardsfolder/n/nicol_bolas_planeswalker.txt @@ -4,8 +4,8 @@ Types:Legendary Planeswalker Bolas Loyalty:5 A:AB$ Destroy | Cost$ AddCounter<3/LOYALTY> | ValidTgts$ Permanent.nonCreature | TgtPrompt$ Select a noncreature permanent. | Planeswalker$ True | SpellDescription$ Destroy target noncreature permanent. A:AB$ GainControl | Cost$ SubCounter<2/LOYALTY> | ValidTgts$ Creature | Planeswalker$ True | SpellDescription$ Gain control of target creature. -A:AB$ DealDamage | Cost$ SubCounter<9/LOYALTY> | NumDmg$ 7 | ValidTgts$ Player | Planeswalker$ True | Ultimate$ True | SubAbility$ DBDiscard | SpellDescription$ CARDNAME deals 7 damage to target player. That player discards seven cards, then sacrifices seven permanents. -SVar:DBDiscard:DB$Discard | Defined$ Targeted | NumCards$ 7 | Mode$ TgtChoose | SubAbility$ DBSac -SVar:DBSac:DB$Sacrifice | Defined$ Targeted | SacValid$ Permanent | Amount$ 7 +A:AB$ DealDamage | Cost$ SubCounter<9/LOYALTY> | NumDmg$ 7 | ValidTgts$ Player,Planeswalker | Planeswalker$ True | Ultimate$ True | SubAbility$ DBDiscard | SpellDescription$ CARDNAME deals 7 damage to target player or planeswalker. That player or that planeswalker's controller discards seven cards, then sacrifices seven permanents. +SVar:DBDiscard:DB$Discard | Defined$ TargetedOrController | NumCards$ 7 | Mode$ TgtChoose | SubAbility$ DBSac +SVar:DBSac:DB$Sacrifice | Defined$ TargetedOrController | SacValid$ Permanent | Amount$ 7 SVar:Picture:http://www.wizards.com/global/images/magic/general/nicol_bolas_planeswalker.jpg -Oracle:[+3]: Destroy target noncreature permanent.\n[-2]: Gain control of target creature.\n[-9]: Nicol Bolas, Planeswalker deals 7 damage to target player. That player discards seven cards, then sacrifices seven permanents. +Oracle:[+3]: Destroy target noncreature permanent.\n[-2]: Gain control of target creature.\n[-9]: Nicol Bolas, Planeswalker deals 7 damage to target player or planeswalker. That player or that planeswalker's controller discards seven cards, then sacrifices seven permanents. diff --git a/forge-gui/res/cardsfolder/n/nicol_bolas_the_ravager.txt b/forge-gui/res/cardsfolder/n/nicol_bolas_the_ravager.txt new file mode 100644 index 00000000000..87e5a973a1b --- /dev/null +++ b/forge-gui/res/cardsfolder/n/nicol_bolas_the_ravager.txt @@ -0,0 +1,26 @@ +Name:Nicol Bolas, the Ravager +ManaCost:1 U B R +Types:Legendary Creature Elder Dragon +PT:4/4 +K:Flying +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDiscard | TriggerDescription$ When CARDNAME enters the battlefield, each opponent discards a card. +SVar:TrigDiscard:DB$ Discard | Defined$ Player.Opponent | NumCards$ 1 | Mode$ TgtChoose +A:AB$ ChangeZone | Cost$ 4 U B R | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | SubAbility$ DBReturn | StackDescription$ SpellDescription | SpellDescription$ Exile CARDNAME, then return him to the battlefield transformed under his owner’s control. Activate this ability only any time you could cast a sorcery. +SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | Transformed$ True | ForgetOtherRemembered$ True | SubAbility$ DBCleanup | StackDescription$ None +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +AlternateMode:DoubleFaced +Oracle:Flying\nWhen Nicol Bolas, the Ravager enters the battlefield, each opponent discards a card.\n{4}{U}{B}{R}: Exile Nicol Bolas, the Ravager, then return him to the battlefield transformed under his owner’s control. Activate this ability only any time you could cast a sorcery. + +ALTERNATE + +Name:Nicol Bolas, the Arisen +ManaCost:no cost +Colors:blue,black,red +Types:Legendary Planeswalker Bolas +Loyalty:7 +A:AB$ Draw | Cost$ AddCounter<2/LOYALTY> | NumCards$ 2 | Planeswalker$ True | SpellDescription$ Draw two cards. +A:AB$ DealDamage | Cost$ SubCounter<3/LOYALTY> | ValidTgts$ Creature,Planeswalker | TgtPrompt$ Select target | Planeswalker$ True | NumDmg$ 10 | SpellDescription$ CARDNAME deals 10 damage to target creature or planeswalker. +A:AB$ ChangeZone | Cost$ SubCounter<4/LOYALTY> | Origin$ Graveyard | Destination$ Battlefield | Planeswalker$ True | GainControl$ True | ValidTgts$ Creature,Planeswalker | TgtPrompt$ Choose target creature or planeswalker card in a graveyard | SpellDescription$ Put target creature or planeswalker card from a graveyard onto the battlefield under your control. +A:AB$ Mill | Cost$ SubCounter<12/LOYALTY> | NumCards$ X | Destination$ Exile | ValidTgts$ Player | TgtPrompt$ Choose a player | Planeswalker$ True | Ultimate$ True | References$ X | SpellDescription$ Exile all but the bottom card of target player’s library. +SVar:X:Count$InTargetedLibrary.Card/Minus.1 +Oracle:+2: Draw two cards.\n−3: Nicol Bolas, the Arisen deals 10 damage to target creature or planeswalker.\n−4: Put target creature or planeswalker card from a graveyard onto the battlefield under your control.\n−12: Exile all but the bottom card of target player’s library. diff --git a/forge-gui/res/cardsfolder/n/night_incarnate.txt b/forge-gui/res/cardsfolder/n/night_incarnate.txt new file mode 100644 index 00000000000..d2ac8cec734 --- /dev/null +++ b/forge-gui/res/cardsfolder/n/night_incarnate.txt @@ -0,0 +1,9 @@ +Name:Night Incarnate +ManaCost:4 B +Types:Creature Elemental +PT:3/4 +K:Deathtouch +K:Evoke:3 B +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ TrigPumpAll | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME leaves the battlefield, all creatures get -3/-3 until end of turn. +SVar:TrigPumpAll:DB$PumpAll | ValidCards$ Creature | NumAtt$ -3 | NumDef$ -3 | IsCurse$ True +Oracle:Deathtouch\nWhen Night Incarnate leaves the battlefield, all creatures get -3/-3 until end of turn.\nEvoke {3}{B} (You may cast this spell for its evoke cost. If you do, it's sacrifices when it enters the battlefield.) diff --git a/forge-gui/res/cardsfolder/n/nightbirds_clutches.txt b/forge-gui/res/cardsfolder/n/nightbirds_clutches.txt index 73025bcf1f8..91e4fd8a297 100644 --- a/forge-gui/res/cardsfolder/n/nightbirds_clutches.txt +++ b/forge-gui/res/cardsfolder/n/nightbirds_clutches.txt @@ -1,7 +1,7 @@ Name:Nightbird's Clutches ManaCost:1 R Types:Sorcery -K:Flashback 3 R +K:Flashback:3 R A:SP$ Pump | Cost$ 1 R | ValidTgts$ Creature | KW$ HIDDEN CARDNAME can't block. | IsCurse$ True | TargetMin$ 0 | TargetMax$ 2 | TgtPrompt$ Select up to two target creatures | SpellDescription$ Up to two target creatures can't block this turn. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/nightbirds_clutches.jpg diff --git a/forge-gui/res/cardsfolder/n/nightcreep.txt b/forge-gui/res/cardsfolder/n/nightcreep.txt index 464e1bb9818..b5f07727975 100644 --- a/forge-gui/res/cardsfolder/n/nightcreep.txt +++ b/forge-gui/res/cardsfolder/n/nightcreep.txt @@ -2,7 +2,7 @@ Name:Nightcreep ManaCost:B B Types:Instant A:SP$ AnimateAll | Cost$ B B | ValidCards$ Creature | Colors$ Black | OverwriteColors$ True | SubAbility$ AnimateSwamp | SpellDescription$ Until end of turn, all creatures become black and all lands become Swamps. -SVar:AnimateSwamp:DB$AnimateAll | ValidCards$ Land | Types$ Swamp | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True +SVar:AnimateSwamp:DB$AnimateAll | ValidCards$ Land | Types$ Swamp | RemoveLandTypes$ True SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/nightcreep.jpg Oracle:Until end of turn, all creatures become black and all lands become Swamps. diff --git a/forge-gui/res/cardsfolder/n/nightfire_giant.txt b/forge-gui/res/cardsfolder/n/nightfire_giant.txt index ddf09b1b2cb..f62700bcdbe 100644 --- a/forge-gui/res/cardsfolder/n/nightfire_giant.txt +++ b/forge-gui/res/cardsfolder/n/nightfire_giant.txt @@ -4,7 +4,7 @@ Types:Creature Zombie Giant PT:4/3 S:Mode$ Continuous | Affected$ Card.Self | AddPower$ 1 | AddToughness$ 1 | CheckSVar$ X | SVarCompare$ GE1 | Description$ CARDNAME gets +1/+1 as long as you control a Mountain. SVar:X:Count$Valid Mountain.YouCtrl -A:AB$ DealDamage | Cost$ 4 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:AB$ DealDamage | Cost$ 4 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:BuffedBy:Mountain SVar:Picture:http://www.wizards.com/global/images/magic/general/nightfire_giant.jpg -Oracle:Nightfire Giant gets +1/+1 as long as you control a Mountain.\n{4}{R}: Nightfire Giant deals 2 damage to target creature or player. +Oracle:Nightfire Giant gets +1/+1 as long as you control a Mountain.\n{4}{R}: Nightfire Giant deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/n/nightmare_void.txt b/forge-gui/res/cardsfolder/n/nightmare_void.txt index 740316ff24f..b56a17765ea 100644 --- a/forge-gui/res/cardsfolder/n/nightmare_void.txt +++ b/forge-gui/res/cardsfolder/n/nightmare_void.txt @@ -1,7 +1,7 @@ Name:Nightmare Void ManaCost:3 B Types:Sorcery -K:Dredge 2 +K:Dredge:2 A:SP$ Discard | Cost$ 3 B | ValidTgts$ Player | Mode$ RevealYouChoose | NumCards$ 1 | SpellDescription$ Target player reveals their hand. You choose a card from it. That player discards that card. SVar:Picture:http://www.wizards.com/global/images/magic/general/nightmare_void.jpg Oracle:Target player reveals their hand. You choose a card from it. That player discards that card.\nDredge 2 (If you would draw a card, instead you may put exactly two cards from the top of your library into your graveyard. If you do, return this card from your graveyard to your hand. Otherwise, draw a card.) diff --git a/forge-gui/res/cardsfolder/n/nightmares_thirst.txt b/forge-gui/res/cardsfolder/n/nightmares_thirst.txt new file mode 100644 index 00000000000..c8a46e12d6f --- /dev/null +++ b/forge-gui/res/cardsfolder/n/nightmares_thirst.txt @@ -0,0 +1,8 @@ +Name:Nightmare's Thirst +ManaCost:B +Types:Instant +A:SP$ GainLife | Cost$ B | LifeAmount$ 1 | SubAbility$ DBLifeCurse | SpellDescription$ You gain 1 life. Target creature gets -X/-X until end of turn, where X is the amount of life you gained this turn. +SVar:DBLifeCurse:DB$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | References$ X | NumAtt$ -X | NumDef$ -X | IsCurse$ True +SVar:X:Count$LifeYouGainedThisTurn +DeckHas:Ability$LifeGain +Oracle:You gain 1 life. Target creature gets -X/-X until end of turn, where X is the amount of life you gained this turn. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/n/nine_tail_white_fox.txt b/forge-gui/res/cardsfolder/n/nine_tail_white_fox.txt new file mode 100644 index 00000000000..f0465b10a6b --- /dev/null +++ b/forge-gui/res/cardsfolder/n/nine_tail_white_fox.txt @@ -0,0 +1,7 @@ +Name:Nine-Tail White Fox +ManaCost:2 U +Types:Creature Fox Spirit +T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigDraw | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, draw a card. +SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1 +Oracle:Whenever Nine-Tail White Fox deals combat damage to a player, draw a card. +PT:2/2 diff --git a/forge-gui/res/cardsfolder/n/nissa_vastwood_seer.txt b/forge-gui/res/cardsfolder/n/nissa_vastwood_seer.txt index 7554b7301fa..d38df6ad07b 100644 --- a/forge-gui/res/cardsfolder/n/nissa_vastwood_seer.txt +++ b/forge-gui/res/cardsfolder/n/nissa_vastwood_seer.txt @@ -6,7 +6,7 @@ T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creatu SVar:TrigChange:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Forest.Basic | ChangeNum$ 1 | ShuffleNonMandatory$ True T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Land.YouCtrl | TriggerZones$ Battlefield | IsPresent$ Land.YouCtrl | PresentCompare$ GE7 | Execute$ TrigExile | TriggerDescription$ Whenever a land enters the battlefield under your control, if you control seven or more lands, exile CARDNAME, then return her to the battlefield transformed under her owner's control. SVar:TrigExile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | SubAbility$ DBReturn -SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | Transformed$ True | WithCounters$ LOYALTY_3 | ForgetOtherRemembered$ True | SubAbility$ DBCleanup +SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | Transformed$ True | ForgetOtherRemembered$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/nissa_vastwood_seer.jpg AlternateMode:DoubleFaced diff --git a/forge-gui/res/cardsfolder/n/niv_mizzet_dracogenius.txt b/forge-gui/res/cardsfolder/n/niv_mizzet_dracogenius.txt index ac314fd87e1..70f0b62677d 100644 --- a/forge-gui/res/cardsfolder/n/niv_mizzet_dracogenius.txt +++ b/forge-gui/res/cardsfolder/n/niv_mizzet_dracogenius.txt @@ -5,6 +5,6 @@ PT:5/5 K:Flying T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | Execute$ TrigDraw | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME deals damage to a player, you may draw a card. SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1 -A:AB$ DealDamage | Cost$ U R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ U R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/niv_mizzet_dracogenius.jpg -Oracle:Flying\nWhenever Niv-Mizzet, Dracogenius deals damage to a player, you may draw a card.\n{U}{R}: Niv-Mizzet, Dracogenius deals 1 damage to target creature or player. +Oracle:Flying\nWhenever Niv-Mizzet, Dracogenius deals damage to a player, you may draw a card.\n{U}{R}: Niv-Mizzet, Dracogenius deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/n/niv_mizzet_the_firemind.txt b/forge-gui/res/cardsfolder/n/niv_mizzet_the_firemind.txt index 0f5708ce6e4..dc4b6d315ad 100644 --- a/forge-gui/res/cardsfolder/n/niv_mizzet_the_firemind.txt +++ b/forge-gui/res/cardsfolder/n/niv_mizzet_the_firemind.txt @@ -4,7 +4,7 @@ Types:Legendary Creature Dragon Wizard PT:4/4 K:Flying A:AB$ Draw | Cost$ T | NumCards$ 1 | SpellDescription$ Draw a card. -T:Mode$ Drawn | ValidCard$ Card.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever you draw a card, CARDNAME deals 1 damage to target creature or player. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 +T:Mode$ Drawn | ValidCard$ Card.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever you draw a card, CARDNAME deals 1 damage to any target. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/niv_mizzet_the_firemind.jpg -Oracle:Flying\nWhenever you draw a card, Niv-Mizzet, the Firemind deals 1 damage to target creature or player.\n{T}: Draw a card. +Oracle:Flying\nWhenever you draw a card, Niv-Mizzet, the Firemind deals 1 damage to any target.\n{T}: Draw a card. diff --git a/forge-gui/res/cardsfolder/n/noble_vestige.txt b/forge-gui/res/cardsfolder/n/noble_vestige.txt index ebf5bf01cc9..f1106626954 100644 --- a/forge-gui/res/cardsfolder/n/noble_vestige.txt +++ b/forge-gui/res/cardsfolder/n/noble_vestige.txt @@ -3,6 +3,6 @@ ManaCost:2 W Types:Creature Spirit PT:1/2 K:Flying -A:AB$ PreventDamage | Cost$ T | ValidTgts$ Player | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to target player this turn. +A:AB$ PreventDamage | Cost$ T | ValidTgts$ Player,Planeswalker | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to target player or planeswalker this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/noble_vestige.jpg -Oracle:Flying\n{T}: Prevent the next 1 damage that would be dealt to target player this turn. +Oracle:Flying\n{T}: Prevent the next 1 damage that would be dealt to target player or planeswalker this turn. diff --git a/forge-gui/res/cardsfolder/n/noggin_whack.txt b/forge-gui/res/cardsfolder/n/noggin_whack.txt index ffdcf9be914..8c8d25aea4d 100644 --- a/forge-gui/res/cardsfolder/n/noggin_whack.txt +++ b/forge-gui/res/cardsfolder/n/noggin_whack.txt @@ -1,8 +1,8 @@ Name:Noggin Whack ManaCost:2 B B Types:Tribal Sorcery Rogue +K:Prowl:1 B A:SP$ Discard | Cost$ 2 B B | ValidTgts$ Player | Mode$ RevealYouChoose | RevealNumber$ 3 | NumCards$ 2 | SpellDescription$ Target player reveals three cards from their hand. You choose two of them. That player discards those cards. -A:SP$ Discard | Cost$ 1 B | Activation$ Prowl | PrecostDesc$ Prowl {1}{B} | ValidTgts$ Player | Mode$ RevealYouChoose | RevealNumber$ 3 | NumCards$ 2 | SpellDescription$ (You may cast this for its prowl cost if you dealt combat damage to a player this turn withRogue.) DeckNeeds:Type$Rogue SVar:Picture:http://www.wizards.com/global/images/magic/general/noggin_whack.jpg -Oracle:Prowl {1}{B} (You may cast this for its prowl cost if you dealt combat damage to a player this turn with a Rogue.)\nTarget player reveals three cards from their hand. You choose two of them. That player discards those cards. \ No newline at end of file +Oracle:Prowl {1}{B} (You may cast this for its prowl cost if you dealt combat damage to a player this turn with a Rogue.)\nTarget player reveals three cards from their hand. You choose two of them. That player discards those cards. diff --git a/forge-gui/res/cardsfolder/n/noggle_hedge_mage.txt b/forge-gui/res/cardsfolder/n/noggle_hedge_mage.txt index 17ee886c76f..c0fb74d5c2a 100644 --- a/forge-gui/res/cardsfolder/n/noggle_hedge_mage.txt +++ b/forge-gui/res/cardsfolder/n/noggle_hedge_mage.txt @@ -3,8 +3,8 @@ ManaCost:2 UR Types:Creature Noggle Wizard PT:2/2 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | IsPresent$ Island.YouCtrl | PresentCompare$ GE2 | Execute$ TrigTap | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters the battlefield, if you control two or more Islands, you may tap two target permanents. -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | IsPresent$ Mountain.YouCtrl | PresentCompare$ GE2 | Execute$ TrigDamage | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters the battlefield, if you control two or more Mountains, you may have CARDNAME deal 2 damage to target player. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | IsPresent$ Mountain.YouCtrl | PresentCompare$ GE2 | Execute$ TrigDamage | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters the battlefield, if you control two or more Mountains, you may have CARDNAME deal 2 damage to target player or planeswalker. SVar:TrigTap:DB$Tap | TargetMin$ 2 | TargetMax$ 2 | ValidTgts$ Permanent -SVar:TrigDamage:DB$DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 2 +SVar:TrigDamage:DB$DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 2 SVar:Picture:http://www.wizards.com/global/images/magic/general/noggle_hedge_mage.jpg -Oracle:When Noggle Hedge-Mage enters the battlefield, if you control two or more Islands, you may tap two target permanents.\nWhen Noggle Hedge-Mage enters the battlefield, if you control two or more Mountains, you may have Noggle Hedge-Mage deal 2 damage to target player. +Oracle:When Noggle Hedge-Mage enters the battlefield, if you control two or more Islands, you may tap two target permanents.\nWhen Noggle Hedge-Mage enters the battlefield, if you control two or more Mountains, you may have Noggle Hedge-Mage deal 2 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/n/notorious_throng.txt b/forge-gui/res/cardsfolder/n/notorious_throng.txt index 135de9fc72e..fa47b5e6f1b 100644 --- a/forge-gui/res/cardsfolder/n/notorious_throng.txt +++ b/forge-gui/res/cardsfolder/n/notorious_throng.txt @@ -1,9 +1,9 @@ Name:Notorious Throng ManaCost:3 U Types:Tribal Sorcery Rogue -SVar:AltCost:Cost$ 5 U | Activation$ Prowl | Description$ Prowl {5}{U} (You may cast this for its prowl cost if you dealt combat damage to a player this turn with a Rogue.) +K:Prowl:5 U A:SP$ Token | Cost$ 3 U | TokenAmount$ X | References$ X | TokenColors$ Black | TokenTypes$ Faerie,Rogue,Creature | TokenName$ Faerie Rogue | TokenOwner$ You | TokenPower$ 1 | TokenToughness$ 1 | TokenKeywords$ Flying | SubAbility$ DBTakeTurn | SpellDescription$ Create X 1/1 black Faerie Rogue creature tokens with flying, where X is the damage dealt to your opponents this turn. If CARDNAME's prowl cost was paid, take an extra turn after this one. -SVar:DBTakeTurn:DB$ AddTurn | NumTurns$ 1 | Condition$ AltCost +SVar:DBTakeTurn:DB$ AddTurn | NumTurns$ 1 | ConditionDefined$ Self | ConditionPresent$ Card.prowled SVar:X:Count$TotalOppDamageThisTurn DeckNeeds:Type$Rogue SVar:Picture:http://www.wizards.com/global/images/magic/general/notorious_throng.jpg diff --git a/forge-gui/res/cardsfolder/n/novice_knight.txt b/forge-gui/res/cardsfolder/n/novice_knight.txt new file mode 100644 index 00000000000..7ff798220dc --- /dev/null +++ b/forge-gui/res/cardsfolder/n/novice_knight.txt @@ -0,0 +1,8 @@ +Name:Novice Knight +ManaCost:W +Types:Creature Human Knight +K:Defender +S:Mode$ Continuous | Affected$ Card.Self+enchanted,Card.Self+equipped | AddHiddenKeyword$ CARDNAME can attack as though it didn't have defender. | Description$ As long as CARDNAME is enchanted or equipped, it can attack as though it didn't have defender. +SVar:EnchantMe:Once +Oracle:Defender (This creature can't attack.)\nAs long as Novice Knight is enchanted or equipped, it can attack as though it didn't have defender. +PT:2/3 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/n/numai_outcast.txt b/forge-gui/res/cardsfolder/n/numai_outcast.txt index bab3a5a89c3..6aa216a4b57 100644 --- a/forge-gui/res/cardsfolder/n/numai_outcast.txt +++ b/forge-gui/res/cardsfolder/n/numai_outcast.txt @@ -2,7 +2,7 @@ Name:Numai Outcast ManaCost:3 B Types:Creature Human Samurai PT:1/1 -K:Bushido 2 +K:Bushido:2 A:AB$ Regenerate | Cost$ B PayLife<5> | SpellDescription$ Regenerate CARDNAME. SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/numai_outcast.jpg diff --git a/forge-gui/res/cardsfolder/n/nurturing_licid.txt b/forge-gui/res/cardsfolder/n/nurturing_licid.txt index 04715862ed1..4aa4b948ef7 100644 --- a/forge-gui/res/cardsfolder/n/nurturing_licid.txt +++ b/forge-gui/res/cardsfolder/n/nurturing_licid.txt @@ -2,7 +2,7 @@ Name:Nurturing Licid ManaCost:1 G Types:Creature Licid PT:1/1 -A:AB$ Animate | Cost$ G T | Defined$ Self | RemoveThisAbility$ True | Permanent$ True | RevertCost$ G | Keywords$ Enchant creature | Abilities$ SPAttach | Types$ Enchantment,Aura | RemoveCardTypes$ True | RemoveSubTypes$ True | SubAbility$ DBAttach | SpellDescription$ CARDNAME loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {G} to end this effect. +A:AB$ Animate | Cost$ G T | Defined$ Self | RemoveThisAbility$ True | Permanent$ True | RevertCost$ G | Keywords$ Enchant creature | Abilities$ SPAttach | Types$ Enchantment,Aura | RemoveCardTypes$ True | RemoveEnchantmentTypes$ True | SubAbility$ DBAttach | SpellDescription$ CARDNAME loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {G} to end this effect. SVar:DBAttach:DB$ Attach | ValidTgts$ Creature | AILogic$ Pump SVar:SPAttach:SP$ Attach | Cost$ 0 | ValidTgts$ Creature A:AB$ Regenerate | Cost$ G | Defined$ Enchanted | SpellDescription$ Regenerate enchanted creature. diff --git a/forge-gui/res/cardsfolder/n/nyleas_colossus.txt b/forge-gui/res/cardsfolder/n/nyleas_colossus.txt new file mode 100644 index 00000000000..497b5b6022c --- /dev/null +++ b/forge-gui/res/cardsfolder/n/nyleas_colossus.txt @@ -0,0 +1,11 @@ +Name:Nylea's Colossus +ManaCost:6 G +Types:Enchantment Creature Giant +PT:6/6 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPump | TriggerDescription$ Constellation Whenever CARDNAME or another enchantment enters the battlefield under your control, double target creature's power and toughness until end of turn. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Enchantment.Other+YouCtrl | TriggerZones$ Battlefield | Secondary$ True | Execute$ TrigPump | TriggerDescription$ Constellation Whenever CARDNAME or another enchantment enters the battlefield under your control, double target creature's power and toughness until end of turn. +SVar:TrigPump:DB$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +X | NumDef$ +Y | References$ X,Y | RememberTargets$ True | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:Remembered$CardPower +SVar:Y:Remembered$CardToughness +Oracle:Constellation — Whenever Nylea's Colossus or another enchantment enters the battlefield under your control, double target creature's power and toughness until end of turn. diff --git a/forge-gui/res/cardsfolder/o/obelisk_of_alara.txt b/forge-gui/res/cardsfolder/o/obelisk_of_alara.txt index cd3fae49eac..532307dc96b 100644 --- a/forge-gui/res/cardsfolder/o/obelisk_of_alara.txt +++ b/forge-gui/res/cardsfolder/o/obelisk_of_alara.txt @@ -5,7 +5,7 @@ A:AB$ GainLife | Cost$ 1 W T | LifeAmount$ 5 | SpellDescription$ You gain 5 life A:AB$ Draw | Cost$ 1 U T | NumCards$ 1 | SpellDescription$ Draw a card, then discard a card. | SubAbility$ DBDiscard SVar:DBDiscard:DB$Discard | Defined$ You | NumCards$ 1 | Mode$ TgtChoose A:AB$ Pump | Cost$ 1 B T | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ -2 | NumDef$ -2 | IsCurse$ True | SpellDescription$ Target creature gets -2/-2 until end of turn. -A:AB$ DealDamage | Cost$ 1 R T | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target player. +A:AB$ DealDamage | Cost$ 1 R T | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target player or planeswalker. A:AB$ Pump | Cost$ 1 G T | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +4 | NumDef$ +4 | SpellDescription$ Target creature gets +4/+4 until end of turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/obelisk_of_alara.jpg -Oracle:{1}{W}, {T}: You gain 5 life.\n{1}{U}, {T}: Draw a card, then discard a card.\n{1}{B}, {T}: Target creature gets -2/-2 until end of turn.\n{1}{R}, {T}: Obelisk of Alara deals 3 damage to target player.\n{1}{G}, {T}: Target creature gets +4/+4 until end of turn. +Oracle:{1}{W}, {T}: You gain 5 life.\n{1}{U}, {T}: Draw a card, then discard a card.\n{1}{B}, {T}: Target creature gets -2/-2 until end of turn.\n{1}{R}, {T}: Obelisk of Alara deals 3 damage to target player or planeswalker.\n{1}{G}, {T}: Target creature gets +4/+4 until end of turn. diff --git a/forge-gui/res/cardsfolder/o/obelisk_spider.txt b/forge-gui/res/cardsfolder/o/obelisk_spider.txt index 89b2df21f08..6d67d82d05c 100644 --- a/forge-gui/res/cardsfolder/o/obelisk_spider.txt +++ b/forge-gui/res/cardsfolder/o/obelisk_spider.txt @@ -5,7 +5,7 @@ PT:1/4 K:Reach T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Creature | CombatDamage$ True | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever CARDNAME deals combat damage to a creature, put a -1/-1 counter on that creature. SVar:TrigPutCounter:DB$PutCounter | Defined$ TriggeredTargetLKICopy | CounterType$ M1M1 | CounterNum$ 1 -T:Mode$ CounterAddedOnce | ValidCard$ Creature | ValidSource$ Card.YouCtrl | CounterType$ M1M1 | TriggerZones$ Battlefield | Execute$ TrigDrain | TriggerDescription$ Whenever you put one or more -1/-1 counters on a creature, each opponent loses 1 life and you gain 1 life. +T:Mode$ CounterAddedOnce | ValidCard$ Creature | ValidSource$ You | CounterType$ M1M1 | TriggerZones$ Battlefield | Execute$ TrigDrain | TriggerDescription$ Whenever you put one or more -1/-1 counters on a creature, each opponent loses 1 life and you gain 1 life. SVar:TrigDrain:DB$ LoseLife | Defined$ Player.Opponent | LifeAmount$ 1 | SubAbility$ DBGainLife SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 1 DeckHas:Ability$Counters diff --git a/forge-gui/res/cardsfolder/o/octopus_umbra.txt b/forge-gui/res/cardsfolder/o/octopus_umbra.txt new file mode 100644 index 00000000000..8d4ac4615ee --- /dev/null +++ b/forge-gui/res/cardsfolder/o/octopus_umbra.txt @@ -0,0 +1,10 @@ +Name:Octopus Umbra +ManaCost:3 U U +Types:Enchantment Aura +K:Totem Armor +K:Enchant creature +A:SP$ Attach | Cost$ 3 U U | ValidTgts$ Creature | AILogic$ Animate +S:Mode$ Continuous | Affected$ Card.EnchantedBy | SetPower$ 8 | SetToughness$ 8 | AddTrigger$ AttackTrigger | AddSVar$ TrigTap | Description$ Enchanted creature has "Whenever this creature attacks, you may tap or untap target permanent. +SVar:AttackTrigger:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigTap | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME attacks, you may tap target creature with power 8 or less. +SVar:TrigTap:DB$ Tap | ValidTgts$ Creature.powerLE8 | TgtPrompt$ Select target creature +Oracle:Enchant creature\n Enchanted creature has base power and toughness 8/8 and has “Whenever this creature attacks, you may tap target creature with power 8 or less.”\nTotem armor (If enchanted creature would be destroyed, instead remove all damage from it and destroy this Aura.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/o/ogre_shaman.txt b/forge-gui/res/cardsfolder/o/ogre_shaman.txt index 0efb3f3345f..38f413eb301 100644 --- a/forge-gui/res/cardsfolder/o/ogre_shaman.txt +++ b/forge-gui/res/cardsfolder/o/ogre_shaman.txt @@ -2,6 +2,6 @@ Name:Ogre Shaman ManaCost:3 R R Types:Creature Ogre Shaman PT:3/3 -A:AB$ DealDamage | Cost$ 2 Discard<1/Random> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:AB$ DealDamage | Cost$ 2 Discard<1/Random> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/ogre_shaman.jpg -Oracle:{2}, Discard a card at random: Ogre Shaman deals 2 damage to target creature or player. +Oracle:{2}, Discard a card at random: Ogre Shaman deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/o/okaun_eye_of_chaos.txt b/forge-gui/res/cardsfolder/o/okaun_eye_of_chaos.txt new file mode 100644 index 00000000000..904a4141037 --- /dev/null +++ b/forge-gui/res/cardsfolder/o/okaun_eye_of_chaos.txt @@ -0,0 +1,13 @@ +Name:Okaun, Eye of Chaos +ManaCost:4 R +Types:Legendary Creature Cyclops Berserker +PT:3/3 +K:Partner:Zndrsplt, Eye of Wisdom:Zndrsplt +T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigFlip | TriggerDescription$ At the beginning of combat on your turn, flip a coin until you lose a flip. +SVar:TrigFlip:DB$ FlipACoin | FlipUntilYouLose$ True +T:Mode$ FlippedCoin | ValidResult$ Win | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever a player wins a coin flip, double CARDNAME's power and toughness until end of turn. +SVar:TrigPump:DB$ Pump | Defined$ Self | NumAtt$ +X | NumDef$ +Y | References$ X,Y +SVar:X:Count$CardPower +SVar:Y:Count$CardToughness +SVar:Picture:http://www.wizards.com/global/images/magic/general/okaun_eye_of_chaos.jpg +Oracle:Partner with Zndrsplt, Eye of Wisdom (When this creature enters the battlefield, target player may put Zndrsplt into their hand from their library, then shuffle.)\nAt the beginning of combat on your turn, flip a coin until you lose a flip.\nWhenever a player wins a coin flip, double Okaun's power and toughness until end of turn. diff --git a/forge-gui/res/cardsfolder/o/omnath_locus_of_rage.txt b/forge-gui/res/cardsfolder/o/omnath_locus_of_rage.txt index 027285c5c7a..418b4f06421 100644 --- a/forge-gui/res/cardsfolder/o/omnath_locus_of_rage.txt +++ b/forge-gui/res/cardsfolder/o/omnath_locus_of_rage.txt @@ -4,8 +4,8 @@ Types:Legendary Creature Elemental PT:5/5 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Land.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Landfall — Whenever a land enters the battlefield under your control, create a 5/5 red and green Elemental creature token. SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenName$ Elemental | TokenTypes$ Creature,Elemental | TokenOwner$ You | TokenColors$ Red,Green | TokenPower$ 5 | TokenToughness$ 5 -T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerController$ TriggeredCardController | TriggerDescription$ Whenever CARDNAME or another Elemental you control dies, CARDNAME deals 3 damage to target creature or player. -T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Elemental.Other+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerController$ TriggeredCardController | Secondary$ True | TriggerDescription$ Whenever CARDNAME or another Elemental you control dies, CARDNAME deals 3 damage to target creature or player. -SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerController$ TriggeredCardController | TriggerDescription$ Whenever CARDNAME or another Elemental you control dies, CARDNAME deals 3 damage to any target. +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Elemental.Other+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerController$ TriggeredCardController | Secondary$ True | TriggerDescription$ Whenever CARDNAME or another Elemental you control dies, CARDNAME deals 3 damage to any target. +SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 SVar:Picture:http://www.wizards.com/global/images/magic/general/omnath_locus_of_rage.jpg -Oracle:Landfall — Whenever a land enters the battlefield under your control, create a 5/5 red and green Elemental creature token.\nWhenever Omnath, Locus of Rage or another Elemental you control dies, Omnath deals 3 damage to target creature or player. \ No newline at end of file +Oracle:Landfall — Whenever a land enters the battlefield under your control, create a 5/5 red and green Elemental creature token.\nWhenever Omnath, Locus of Rage or another Elemental you control dies, Omnath deals 3 damage to any target. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/o/onakke_ogre.txt b/forge-gui/res/cardsfolder/o/onakke_ogre.txt new file mode 100644 index 00000000000..6e8dd5ad18d --- /dev/null +++ b/forge-gui/res/cardsfolder/o/onakke_ogre.txt @@ -0,0 +1,5 @@ +Name:Onakke Ogre +ManaCost:2 R +Types:Creature Ogre Warrior +PT:4/2 +Oracle: diff --git a/forge-gui/res/cardsfolder/o/one_with_the_machine.txt b/forge-gui/res/cardsfolder/o/one_with_the_machine.txt new file mode 100644 index 00000000000..7541a36f281 --- /dev/null +++ b/forge-gui/res/cardsfolder/o/one_with_the_machine.txt @@ -0,0 +1,6 @@ +Name:One with the Machine +ManaCost:3 U +Types:Sorcery +A:SP$ Draw | Cost$ 3 U | Defined$ You | NumCards$ X | References$ X | SpellDescription$ Draw cards equal to the highest converted mana cost among artifacts you control. +SVar:X:Count$HighestCMC_Artifact.YouCtrl+inZoneBattlefield +Oracle:Draw cards equal to the highest converted mana cost among artifacts you control. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/o/opal_acrolith.txt b/forge-gui/res/cardsfolder/o/opal_acrolith.txt index 8ce112d9392..2cd8af16773 100644 --- a/forge-gui/res/cardsfolder/o/opal_acrolith.txt +++ b/forge-gui/res/cardsfolder/o/opal_acrolith.txt @@ -2,8 +2,8 @@ Name:Opal Acrolith ManaCost:2 W Types:Enchantment T:Mode$ SpellCast | ValidCard$ Creature | ValidActivatingPlayer$ Opponent | TriggerZones$ Battlefield | IsPresent$ Card.Self+Enchantment | Execute$ TrigAnimate | TriggerDescription$ When an opponent casts a creature spell, if CARDNAME is an enchantment, CARDNAME becomes a 2/4 Soldier creature. -A:AB$ Animate | Cost$ 0 | Defined$ Self | Types$ Enchantment | OverwriteTypes$ True | Permanent$ True | SpellDescription$ CARDNAME becomes an enchantment. -SVar:TrigAnimate:DB$Animate | Defined$ Self | Power$ 2 | Toughness$ 4 | Types$ Creature,Soldier | OverwriteTypes$ True | Permanent$ True +A:AB$ Animate | Cost$ 0 | Defined$ Self | Types$ Enchantment | RemoveCardTypes$ True | Permanent$ True | SpellDescription$ CARDNAME becomes an enchantment. +SVar:TrigAnimate:DB$Animate | Defined$ Self | Power$ 2 | Toughness$ 4 | Types$ Creature,Soldier | RemoveCardTypes$ True | Permanent$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/opal_acrolith.jpg Oracle:Whenever an opponent casts a creature spell, if Opal Acrolith is an enchantment, Opal Acrolith becomes a 2/4 Soldier creature.\n{0}: Opal Acrolith becomes an enchantment. diff --git a/forge-gui/res/cardsfolder/o/opal_archangel.txt b/forge-gui/res/cardsfolder/o/opal_archangel.txt index 110e51f7d0b..9de95dd2bb9 100644 --- a/forge-gui/res/cardsfolder/o/opal_archangel.txt +++ b/forge-gui/res/cardsfolder/o/opal_archangel.txt @@ -1,7 +1,7 @@ Name:Opal Archangel ManaCost:4 W Types:Enchantment -T:Mode$ SpellCast | ValidCard$ Creature | ValidActivatingPlayer$ Opponent | TriggerZones$ Battlefield | IsPresent$ Card.Self+Enchantment| Execute$ TrigAnimate | TriggerDescription$ When an opponent casts a creature spell, if CARDNAME is an enchantment, CARDNAME becomes a 5/5 Angel creature with flying and vigilance. -SVar:TrigAnimate:DB$Animate | Defined$ Self | Power$ 5 | Toughness$ 5 | Keywords$ Flying & Vigilance | Types$ Creature,Angel | OverwriteTypes$ True | Permanent$ True +T:Mode$ SpellCast | ValidCard$ Creature | ValidActivatingPlayer$ Opponent | TriggerZones$ Battlefield | IsPresent$ Card.Self+Enchantment | Execute$ TrigAnimate | TriggerDescription$ When an opponent casts a creature spell, if CARDNAME is an enchantment, CARDNAME becomes a 5/5 Angel creature with flying and vigilance. +SVar:TrigAnimate:DB$Animate | Defined$ Self | Power$ 5 | Toughness$ 5 | Keywords$ Flying & Vigilance | Types$ Creature,Angel | RemoveCardTypes$ True | Permanent$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/opal_archangel.jpg Oracle:When an opponent casts a creature spell, if Opal Archangel is an enchantment, Opal Archangel becomes a 5/5 Angel creature with flying and vigilance. diff --git a/forge-gui/res/cardsfolder/o/opal_avenger.txt b/forge-gui/res/cardsfolder/o/opal_avenger.txt index 680ff2548b0..9916889f5e9 100644 --- a/forge-gui/res/cardsfolder/o/opal_avenger.txt +++ b/forge-gui/res/cardsfolder/o/opal_avenger.txt @@ -2,6 +2,6 @@ Name:Opal Avenger ManaCost:2 W Types:Enchantment T:Mode$ Always | LifeTotal$ You | LifeAmount$ LE10 | TriggerZones$ Battlefield | Execute$ TrigOpalAvengerAnimate | IsPresent$ Card.Self+Enchantment | ResolvingCheck$ IsPresent | TriggerDescription$ When you have 10 or less life, if CARDNAME is an enchantment, CARDNAME becomes a 3/5 Soldier creature. -SVar:TrigOpalAvengerAnimate:DB$ Animate | Types$ Creature,Soldier | Power$ 3 | Toughness$ 5 | OverwriteTypes$ True | Permanent$ True +SVar:TrigOpalAvengerAnimate:DB$ Animate | Types$ Creature,Soldier | Power$ 3 | Toughness$ 5 | RemoveCardTypes$ True | Permanent$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/opal_avenger.jpg Oracle:When you have 10 or less life, if Opal Avenger is an enchantment, Opal Avenger becomes a 3/5 Soldier creature. diff --git a/forge-gui/res/cardsfolder/o/opal_caryatid.txt b/forge-gui/res/cardsfolder/o/opal_caryatid.txt index e9138279898..59c6bd9e4a1 100644 --- a/forge-gui/res/cardsfolder/o/opal_caryatid.txt +++ b/forge-gui/res/cardsfolder/o/opal_caryatid.txt @@ -2,6 +2,6 @@ Name:Opal Caryatid ManaCost:W Types:Enchantment T:Mode$ SpellCast | ValidCard$ Creature | ValidActivatingPlayer$ Opponent | TriggerZones$ Battlefield | IsPresent$ Card.Self+Enchantment | Execute$ TrigAnimate | TriggerDescription$ When an opponent casts a creature spell, if CARDNAME is an enchantment, CARDNAME becomes a 2/2 Soldier creature. -SVar:TrigAnimate:DB$Animate | Defined$ Self | Power$ 2 | Toughness$ 2 | Types$ Creature,Soldier | OverwriteTypes$ True | Permanent$ True +SVar:TrigAnimate:DB$Animate | Defined$ Self | Power$ 2 | Toughness$ 2 | Types$ Creature,Soldier | RemoveCardTypes$ True | Permanent$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/opal_caryatid.jpg Oracle:When an opponent casts a creature spell, if Opal Caryatid is an enchantment, Opal Caryatid becomes a 2/2 Soldier creature. diff --git a/forge-gui/res/cardsfolder/o/opal_champion.txt b/forge-gui/res/cardsfolder/o/opal_champion.txt index 24d4facd393..dcb23572af4 100644 --- a/forge-gui/res/cardsfolder/o/opal_champion.txt +++ b/forge-gui/res/cardsfolder/o/opal_champion.txt @@ -2,6 +2,6 @@ Name:Opal Champion ManaCost:2 W Types:Enchantment T:Mode$ SpellCast | ValidCard$ Creature | ValidActivatingPlayer$ Opponent | TriggerZones$ Battlefield | IsPresent$ Card.Self+Enchantment| Execute$ TrigAnimate | TriggerDescription$ When an opponent casts a creature spell, if CARDNAME is an enchantment, CARDNAME becomes a 3/3 Knight creature with first strike. -SVar:TrigAnimate:DB$Animate | Defined$ Self | Power$ 3 | Toughness$ 3 | Keywords$ First Strike | Types$ Creature,Knight | OverwriteTypes$ True | Permanent$ True +SVar:TrigAnimate:DB$Animate | Defined$ Self | Power$ 3 | Toughness$ 3 | Keywords$ First Strike | Types$ Creature,Knight | RemoveCardTypes$ True | Permanent$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/opal_champion.jpg Oracle:When an opponent casts a creature spell, if Opal Champion is an enchantment, Opal Champion becomes a 3/3 Knight creature with first strike. diff --git a/forge-gui/res/cardsfolder/o/opal_eye_kondas_yojimbo.txt b/forge-gui/res/cardsfolder/o/opal_eye_kondas_yojimbo.txt index 6d55248d7ec..104bd5b35c0 100644 --- a/forge-gui/res/cardsfolder/o/opal_eye_kondas_yojimbo.txt +++ b/forge-gui/res/cardsfolder/o/opal_eye_kondas_yojimbo.txt @@ -3,7 +3,7 @@ ManaCost:1 W W Types:Legendary Creature Fox Samurai PT:1/4 K:Defender -K:Bushido 1 +K:Bushido:1 A:AB$ ChooseSource | Cost$ T | Choices$ Card,Emblem | AILogic$ NeedsPrevention | SubAbility$ DBEffect | SpellDescription$ The next time a source of your choice would deal damage this turn, that damage is dealt to CARDNAME instead. SVar:DBEffect:DB$ Effect | ReplacementEffects$ SelflessDamage | Triggers$ OutOfSight | SVars$ SelflessDmg,OutOfSight | References$ SelflessDamage,OutOfSight,SelflessDmg,ExileEffect | Duration$ HostLeavesOrEOT | SubAbility$ DBCleanup | ConditionDefined$ ChosenCard | ConditionPresent$ Card,Emblem | ConditionCompare$ GE1 SVar:SelflessDamage:Event$ DamageDone | ValidTarget$ You | ValidSource$ Card.ChosenCard,Emblem.ChosenCard | ReplaceWith$ SelflessDmg | DamageTarget$ EffectSource | Description$ The next time a source of your choice would deal damage to you this turn, that damage is dealt to EFFECTSOURCE instead. diff --git a/forge-gui/res/cardsfolder/o/opal_gargoyle.txt b/forge-gui/res/cardsfolder/o/opal_gargoyle.txt index 5b8649c9e5a..483a7c8a319 100644 --- a/forge-gui/res/cardsfolder/o/opal_gargoyle.txt +++ b/forge-gui/res/cardsfolder/o/opal_gargoyle.txt @@ -2,6 +2,6 @@ Name:Opal Gargoyle ManaCost:1 W Types:Enchantment T:Mode$ SpellCast | ValidCard$ Creature | ValidActivatingPlayer$ Opponent | TriggerZones$ Battlefield | IsPresent$ Card.Self+Enchantment | Execute$ TrigAnimate | TriggerDescription$ When an opponent casts a creature spell, if CARDNAME is an enchantment, CARDNAME becomes a 2/2 Gargoyle creature with flying. -SVar:TrigAnimate:DB$Animate | Defined$ Self | Power$ 2 | Toughness$ 2 | Types$ Creature,Gargoyle | Keywords$ Flying | OverwriteTypes$ True | Permanent$ True +SVar:TrigAnimate:DB$Animate | Defined$ Self | Power$ 2 | Toughness$ 2 | Types$ Creature,Gargoyle | Keywords$ Flying | RemoveCardTypes$ True | Permanent$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/opal_gargoyle.jpg Oracle:When an opponent casts a creature spell, if Opal Gargoyle is an enchantment, Opal Gargoyle becomes a 2/2 Gargoyle creature with flying. diff --git a/forge-gui/res/cardsfolder/o/opal_guardian.txt b/forge-gui/res/cardsfolder/o/opal_guardian.txt index 469c65030a2..c1f83d8bff3 100644 --- a/forge-gui/res/cardsfolder/o/opal_guardian.txt +++ b/forge-gui/res/cardsfolder/o/opal_guardian.txt @@ -2,6 +2,6 @@ Name:Opal Guardian ManaCost:W W W Types:Enchantment T:Mode$ SpellCast | ValidCard$ Creature | ValidActivatingPlayer$ Opponent | TriggerZones$ Battlefield | IsPresent$ Card.Self+Enchantment | Execute$ TrigAnimate | TriggerDescription$ When an opponent casts a creature spell, if CARDNAME is an enchantment, CARDNAME becomes a 3/4 Gargoyle creature with flying and protection from red. -SVar:TrigAnimate:DB$Animate | Defined$ Self | Power$ 3 | Toughness$ 4 | Types$ Creature,Gargoyle | Keywords$ Flying & Protection from red | OverwriteTypes$ True | Permanent$ True +SVar:TrigAnimate:DB$Animate | Defined$ Self | Power$ 3 | Toughness$ 4 | Types$ Creature,Gargoyle | Keywords$ Flying & Protection from red | RemoveCardTypes$ True | Permanent$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/opal_guardian.jpg Oracle:When an opponent casts a creature spell, if Opal Guardian is an enchantment, Opal Guardian becomes a 3/4 Gargoyle creature with flying and protection from red. diff --git a/forge-gui/res/cardsfolder/o/opal_titan.txt b/forge-gui/res/cardsfolder/o/opal_titan.txt index c05dd46aa2d..e049870e00f 100644 --- a/forge-gui/res/cardsfolder/o/opal_titan.txt +++ b/forge-gui/res/cardsfolder/o/opal_titan.txt @@ -2,7 +2,7 @@ Name:Opal Titan ManaCost:2 W W Types:Enchantment T:Mode$ SpellCast | ValidCard$ Creature | ValidActivatingPlayer$ Opponent | Execute$ TrigOpalTitanAnimate | IsPresent$ Card.Self+Enchantment | TriggerZones$ Battlefield | TriggerDescription$ When an opponent casts a creature spell, if CARDNAME is an enchantment, CARDNAME becomes a 4/4 Giant creature with protection from each of that spell's colors. -SVar:TrigOpalTitanAnimate:DB$ Animate | Defined$ Self | Types$ Creature,Giant | Power$ 4 | Toughness$ 4 | OverwriteTypes$ True | Permanent$ True | SubAbility$ DBOpalTitanProtectionWhite | Permanent$ True +SVar:TrigOpalTitanAnimate:DB$ Animate | Defined$ Self | Types$ Creature,Giant | Power$ 4 | Toughness$ 4 | RemoveCardTypes$ True | Permanent$ True | SubAbility$ DBOpalTitanProtectionWhite | Permanent$ True SVar:DBOpalTitanProtectionWhite:DB$ Protection | Gains$ white | ConditionDefined$ TriggeredCard | ConditionPresent$ Card.White | ConditionCompare$ GE1 | SubAbility$ DBOpalTitanProtectionBlue | Permanent$ True SVar:DBOpalTitanProtectionBlue:DB$ Protection | Gains$ blue | ConditionDefined$ TriggeredCard | ConditionPresent$ Card.Blue | ConditionCompare$ GE1 | SubAbility$ DBOpalTitanProtectionBlack | Permanent$ True SVar:DBOpalTitanProtectionBlack:DB$ Protection | Gains$ black | ConditionDefined$ TriggeredCard | ConditionPresent$ Card.Black | ConditionCompare$ GE1 | SubAbility$ DBOpalTitanProtectionGreen | Permanent$ True diff --git a/forge-gui/res/cardsfolder/o/open_fire.txt b/forge-gui/res/cardsfolder/o/open_fire.txt index ca69d5b79e9..fc69ec45cd8 100644 --- a/forge-gui/res/cardsfolder/o/open_fire.txt +++ b/forge-gui/res/cardsfolder/o/open_fire.txt @@ -1,6 +1,6 @@ Name:Open Fire ManaCost:2 R Types:Instant -A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. +A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/open_fire.jpg -Oracle:Open Fire deals 3 damage to target creature or player. +Oracle:Open Fire deals 3 damage to any target. diff --git a/forge-gui/res/cardsfolder/o/open_the_graves.txt b/forge-gui/res/cardsfolder/o/open_the_graves.txt new file mode 100644 index 00000000000..b7576b6cb08 --- /dev/null +++ b/forge-gui/res/cardsfolder/o/open_the_graves.txt @@ -0,0 +1,7 @@ +Name:Open the Graves +ManaCost:3 B B +Types:Enchantment +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.YouCtrl+nonToken | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Whenever a nontoken creature you control dies, create a 2/2 black zombie creature token. +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenName$ Zombie | TokenTypes$ Creature,Zombie | TokenOwner$ You | TokenColors$ Black | TokenPower$ 2 | TokenToughness$ 2 | TokenImage$ b 2 2 zombie M19 +DeckHas:Ability$Token +Oracle:Whenever a nontoken creature you control dies, create a 2/2 black Zombie creature token. diff --git a/forge-gui/res/cardsfolder/o/orcish_artillery.txt b/forge-gui/res/cardsfolder/o/orcish_artillery.txt index 31ee2584962..0fcc5f1c35b 100644 --- a/forge-gui/res/cardsfolder/o/orcish_artillery.txt +++ b/forge-gui/res/cardsfolder/o/orcish_artillery.txt @@ -2,9 +2,10 @@ Name:Orcish Artillery ManaCost:1 R R Types:Creature Orc Warrior PT:1/3 -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | AILogic$ SelfDamage | SubAbility$ DBDealDamage | SpellDescription$ CARDNAME deals 2 damage to target creature or player and 3 damage to you. -SVar:DBDealDamage:DB$DealDamage | Defined$ You | NumDmg$ 3 +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | DamageMap$ True | AILogic$ SelfDamage | SubAbility$ DBDealDamage | SpellDescription$ CARDNAME deals 2 damage to any target and 3 damage to you. +SVar:DBDealDamage:DB$DealDamage | Defined$ You | NumDmg$ 3 | SubAbility$ DBDamageResolve +SVar:DBDamageResolve:DB$ DamageResolve SVar:SelfDamageAmount:3 SVar:RemRandomDeck:True SVar:Picture:http://resources.wizards.com/magic/cards/9ed/en-us/card83193.jpg -Oracle:{T}: Orcish Artillery deals 2 damage to target creature or player and 3 damage to you. +Oracle:{T}: Orcish Artillery deals 2 damage to any target and 3 damage to you. diff --git a/forge-gui/res/cardsfolder/o/orcish_bloodpainter.txt b/forge-gui/res/cardsfolder/o/orcish_bloodpainter.txt index 359397afaa9..75b92e2fbbf 100644 --- a/forge-gui/res/cardsfolder/o/orcish_bloodpainter.txt +++ b/forge-gui/res/cardsfolder/o/orcish_bloodpainter.txt @@ -2,7 +2,7 @@ Name:Orcish Bloodpainter ManaCost:2 R Types:Creature Orc Shaman PT:2/1 -A:AB$ DealDamage | Cost$ T Sac<1/Creature> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ T Sac<1/Creature> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/orcish_bloodpainter.jpg -Oracle:{T}, Sacrifice a creature: Orcish Bloodpainter deals 1 damage to target creature or player. +Oracle:{T}, Sacrifice a creature: Orcish Bloodpainter deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/o/orcish_cannonade.txt b/forge-gui/res/cardsfolder/o/orcish_cannonade.txt index 7a7bb0fded0..7d47bf73ba6 100644 --- a/forge-gui/res/cardsfolder/o/orcish_cannonade.txt +++ b/forge-gui/res/cardsfolder/o/orcish_cannonade.txt @@ -1,9 +1,11 @@ Name:Orcish Cannonade ManaCost:1 R R Types:Instant -A:SP$ DealDamage | Cost$ 1 R R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SubAbility$ DB1 | SpellDescription$ CARDNAME deals 2 damage to target creature or player and 3 damage to you. Draw a card. -SVar:DB1:DB$DealDamage | NumDmg$ 3 | Defined$ You | SubAbility$ DB2 +A:SP$ DealDamage | Cost$ 1 R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | DamageMap$ True | AILogic$ SelfDamage | SubAbility$ DB1 | SpellDescription$ CARDNAME deals 2 damage to any target and 3 damage to you. Draw a card. +SVar:DB1:DB$DealDamage | NumDmg$ 3 | Defined$ You | SubAbility$ DBDamageResolve +SVar:DBDamageResolve:DB$ DamageResolve | SubAbility$ DB2 SVar:DB2:DB$Draw | NumCards$ 1 -SVar:RemAIDeck:True +SVar:SelfDamageAmount:3 +SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/orcish_cannonade.jpg -Oracle:Orcish Cannonade deals 2 damage to target creature or player and 3 damage to you.\nDraw a card. +Oracle:Orcish Cannonade deals 2 damage to any target and 3 damage to you.\nDraw a card. diff --git a/forge-gui/res/cardsfolder/o/orcish_cannoneers.txt b/forge-gui/res/cardsfolder/o/orcish_cannoneers.txt index d11b6edb926..143a1facb97 100644 --- a/forge-gui/res/cardsfolder/o/orcish_cannoneers.txt +++ b/forge-gui/res/cardsfolder/o/orcish_cannoneers.txt @@ -2,8 +2,10 @@ Name:Orcish Cannoneers ManaCost:1 R R Types:Creature Orc Warrior PT:1/3 -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SubAbility$ DBDealDamage | SpellDescription$ CARDNAME deals 2 damage to target creature or player and 3 damage to you. -SVar:DBDealDamage:DB$DealDamage | Defined$ You | NumDmg$ 3 -SVar:RemAIDeck:True +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | DamageMap$ True | AILogic$ SelfDamage | SubAbility$ DBDealDamage | SpellDescription$ CARDNAME deals 2 damage to any target and 3 damage to you. +SVar:DBDealDamage:DB$DealDamage | Defined$ You | NumDmg$ 3 | SubAbility$ DBDamageResolve +SVar:DBDamageResolve:DB$ DamageResolve +SVar:SelfDamageAmount:3 +SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/orcish_cannoneers.jpg -Oracle:{T}: Orcish Cannoneers deals 2 damage to target creature or player and 3 damage to you. +Oracle:{T}: Orcish Cannoneers deals 2 damage to any target and 3 damage to you. diff --git a/forge-gui/res/cardsfolder/o/orcish_farmer.txt b/forge-gui/res/cardsfolder/o/orcish_farmer.txt index 5f6e59532b8..87254748702 100644 --- a/forge-gui/res/cardsfolder/o/orcish_farmer.txt +++ b/forge-gui/res/cardsfolder/o/orcish_farmer.txt @@ -2,7 +2,7 @@ Name:Orcish Farmer ManaCost:1 R R Types:Creature Orc PT:2/2 -A:AB$ Animate | Cost$ T | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ Swamp | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | RemoveAllAbilities$ True | UntilControllerNextUntap$ True | SpellDescription$ Target land becomes a Swamp until its controller's next untap step. +A:AB$ Animate | Cost$ T | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ Swamp | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True | UntilControllerNextUntap$ True | SpellDescription$ Target land becomes a Swamp until its controller's next untap step. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/orcish_farmer.jpg Oracle:{T}: Target land becomes a Swamp until its controller's next untap step. diff --git a/forge-gui/res/cardsfolder/o/orcish_mechanics.txt b/forge-gui/res/cardsfolder/o/orcish_mechanics.txt index 64b40f29db8..78da41fad95 100644 --- a/forge-gui/res/cardsfolder/o/orcish_mechanics.txt +++ b/forge-gui/res/cardsfolder/o/orcish_mechanics.txt @@ -2,7 +2,7 @@ Name:Orcish Mechanics ManaCost:2 R Types:Creature Orc PT:1/1 -A:AB$ DealDamage | Cost$ T Sac<1/Artifact> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:AB$ DealDamage | Cost$ T Sac<1/Artifact> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/orcish_mechanics.jpg -Oracle:{T}, Sacrifice an artifact: Orcish Mechanics deals 2 damage to target creature or player. +Oracle:{T}, Sacrifice an artifact: Orcish Mechanics deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/o/orcish_vandal.txt b/forge-gui/res/cardsfolder/o/orcish_vandal.txt index 497ba33b83c..9c76bab4367 100644 --- a/forge-gui/res/cardsfolder/o/orcish_vandal.txt +++ b/forge-gui/res/cardsfolder/o/orcish_vandal.txt @@ -2,7 +2,7 @@ Name:Orcish Vandal ManaCost:1 R Types:Creature Orc Warrior PT:1/1 -A:AB$ DealDamage | Cost$ T Sac<1/Artifact> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target. +A:AB$ DealDamage | Cost$ T Sac<1/Artifact> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:AIPreference:SacCost$Artifact.token+nonCreature,Artifact.token+powerLE1,Artifact.cmcEQ1,Artifact.cmcEQ2 SVar:RemRandomDeck:True -Oracle:{T}, Sacrifice an artifact: Orcish Vandal deals 2 damage to target. \ No newline at end of file +Oracle:{T}, Sacrifice an artifact: Orcish Vandal deals 2 damage to any target. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/o/ordeal_of_purphoros.txt b/forge-gui/res/cardsfolder/o/ordeal_of_purphoros.txt index d843b73653c..af76302255a 100644 --- a/forge-gui/res/cardsfolder/o/ordeal_of_purphoros.txt +++ b/forge-gui/res/cardsfolder/o/ordeal_of_purphoros.txt @@ -7,9 +7,9 @@ T:Mode$ Attacks | ValidCard$ Card.AttachedBy | Execute$ TrigPutCounter | Trigger SVar:TrigPutCounter:DB$ PutCounter | Defined$ Enchanted | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBSac SVar:DBSac:DB$ Sacrifice | SacValid$ Self | ConditionCheckSVar$ EnchantedCounters | ConditionSVarCompare$ GE3 | References$ EnchantedCounters SVar:EnchantedCounters:Enchanted$CardCounters.P1P1 -T:Mode$ Sacrificed | ValidPlayer$ You | ValidCard$ Card.Self | Execute$ TrigDmg | TriggerDescription$ When you sacrifice CARDNAME, it deals 3 damage to target creature or player. -SVar:TrigDmg:DB$ DealDamage | NumDmg$ 3 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player +T:Mode$ Sacrificed | ValidPlayer$ You | ValidCard$ Card.Self | Execute$ TrigDmg | TriggerDescription$ When you sacrifice CARDNAME, it deals 3 damage to any target. +SVar:TrigDmg:DB$ DealDamage | NumDmg$ 3 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target S:Mode$ Continuous | Affected$ Creature.AttachedBy | AddSVar$ AE SVar:AE:SVar:HasAttackEffect:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/ordeal_of_purphoros.jpg -Oracle:Enchant creature\nWhenever enchanted creature attacks, put a +1/+1 counter on it. Then if it has three or more +1/+1 counters on it, sacrifice Ordeal of Purphoros.\nWhen you sacrifice Ordeal of Purphoros, it deals 3 damage to target creature or player. +Oracle:Enchant creature\nWhenever enchanted creature attacks, put a +1/+1 counter on it. Then if it has three or more +1/+1 counters on it, sacrifice Ordeal of Purphoros.\nWhen you sacrifice Ordeal of Purphoros, it deals 3 damage to any target. diff --git a/forge-gui/res/cardsfolder/o/orim_samite_healer.txt b/forge-gui/res/cardsfolder/o/orim_samite_healer.txt index 017dee140de..fd9e196e06a 100644 --- a/forge-gui/res/cardsfolder/o/orim_samite_healer.txt +++ b/forge-gui/res/cardsfolder/o/orim_samite_healer.txt @@ -2,7 +2,7 @@ Name:Orim, Samite Healer ManaCost:1 W W Types:Legendary Creature Human Cleric PT:1/3 -A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 3 | SpellDescription$ Prevent the next 3 damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 3 | SpellDescription$ Prevent the next 3 damage that would be dealt to any target this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/orim_samite_healer.jpg SVar:NonCombatPriority:1 -Oracle:{T}: Prevent the next 3 damage that would be dealt to target creature or player this turn. +Oracle:{T}: Prevent the next 3 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/o/orims_cure.txt b/forge-gui/res/cardsfolder/o/orims_cure.txt index f618bd1a257..d9ae9004d8b 100644 --- a/forge-gui/res/cardsfolder/o/orims_cure.txt +++ b/forge-gui/res/cardsfolder/o/orims_cure.txt @@ -1,7 +1,7 @@ Name:Orim's Cure ManaCost:1 W Types:Instant -A:SP$ PreventDamage | Cost$ tapXType<1/Creature> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 4 | IsPresent$ Plains.YouCtrl | CostDesc$ If you control a Plains, | SpellDescription$ you may tap an untapped creature you control rather than pay CARDNAME's mana cost. -A:SP$ PreventDamage | Cost$ 1 W | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 4 | SpellDescription$ Prevent the next 4 damage that would be dealt to target creature or player this turn. +A:SP$ PreventDamage | Cost$ tapXType<1/Creature> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 4 | IsPresent$ Plains.YouCtrl | CostDesc$ Tap an untapped creature you control | SpellDescription$ Prevent the next 4 damage that would be dealt to any target this turn. +A:SP$ PreventDamage | Cost$ 1 W | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 4 | SpellDescription$ Prevent the next 4 damage that would be dealt to any target this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/orims_cure.jpg -Oracle:If you control a Plains, you may tap an untapped creature you control rather than pay Orim's Cure's mana cost.\nPrevent the next 4 damage that would be dealt to target creature or player this turn. +Oracle:If you control a Plains, you may tap an untapped creature you control rather than pay Orim's Cure's mana cost.\nPrevent the next 4 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/o/orims_touch.txt b/forge-gui/res/cardsfolder/o/orims_touch.txt index 6ec65b9e08e..fc473e68c76 100644 --- a/forge-gui/res/cardsfolder/o/orims_touch.txt +++ b/forge-gui/res/cardsfolder/o/orims_touch.txt @@ -2,7 +2,7 @@ Name:Orim's Touch ManaCost:W Types:Instant K:Kicker:1 -A:SP$ PreventDamage | Cost$ W | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ X | References$ X | SpellDescription$ Prevent the next 2 damage that would be dealt to target creature or player this turn. If CARDNAME was kicked, prevent the next 4 damage that would be dealt to that creature or player this turn instead. +A:SP$ PreventDamage | Cost$ W | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ X | References$ X | SpellDescription$ Prevent the next 2 damage that would be dealt to any target this turn. If CARDNAME was kicked, prevent the next 4 damage that would be dealt to that permanent or player this turn instead. SVar:X:Count$Kicked.4.2 SVar:Picture:http://www.wizards.com/global/images/magic/general/orims_touch.jpg -Oracle:Kicker {1} (You may pay an additional {1} as you cast this spell.)\nPrevent the next 2 damage that would be dealt to target creature or player this turn. If Orim's Touch was kicked, prevent the next 4 damage that would be dealt to that creature or player this turn instead. +Oracle:Kicker {1} (You may pay an additional {1} as you cast this spell.)\nPrevent the next 2 damage that would be dealt to any target this turn. If Orim's Touch was kicked, prevent the next 4 damage that would be dealt to that permanent or player this turn instead. diff --git a/forge-gui/res/cardsfolder/o/outpost_siege.txt b/forge-gui/res/cardsfolder/o/outpost_siege.txt index cccd987d5c1..eaec775c612 100644 --- a/forge-gui/res/cardsfolder/o/outpost_siege.txt +++ b/forge-gui/res/cardsfolder/o/outpost_siege.txt @@ -1,7 +1,7 @@ Name:Outpost Siege ManaCost:3 R Types:Enchantment -T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ SiegeChoice | Static$ True | TriggerDescription$ As CARDNAME enters the battlefield, choose Khans or Dragons. Khans — At the beginning of your upkeep, exile the top card of your library. Until end of turn, you may play that card. Dragons — Whenever a creature you control leaves the battlefield, CARDNAME deals 1 damage to target creature or player. +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ SiegeChoice | Static$ True | TriggerDescription$ As CARDNAME enters the battlefield, choose Khans or Dragons. Khans — At the beginning of your upkeep, exile the top card of your library. Until end of turn, you may play that card. Dragons — Whenever a creature you control leaves the battlefield, CARDNAME deals 1 damage to any target. SVar:SiegeChoice:DB$ GenericChoice | Choices$ Khans,Dragons | Defined$ You | SetChosenMode$ True | AILogic$ Khans | ShowChoice$ ExceptSelf SVar:Khans:DB$ Animate | Defined$ Self | Triggers$ KhansTrigger | Permanent$ True | SpellDescription$ Khans SVar:KhansTrigger:Mode$ Phase | Phase$ Upkeep | TriggerZones$ Battlefield | ValidPlayer$ You | Execute$ PseudoDraw | TriggerDescription$ At the beginning of your upkeep, exile the top card of your library. Until end of turn, you may play that card. @@ -10,7 +10,7 @@ SVar:DBEffect:DB$ Effect | RememberObjects$ RememberedCard | StaticAbilities$ Pl SVar:Play:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ You may play remembered card. SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Dragons:DB$ Animate | Defined$ Self | Triggers$ DragonsTrigger | Permanent$ True | SpellDescription$ Dragons -SVar:DragonsTrigger:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Creature.YouCtrl | TriggerZones$ Battlefield | Execute$ SmallBurnination | TriggerDescription$ Whenever a creature you control leaves the battlefield, CARDNAME deals 1 damage to target creature or player. -SVar:SmallBurnination:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 +SVar:DragonsTrigger:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Creature.YouCtrl | TriggerZones$ Battlefield | Execute$ SmallBurnination | TriggerDescription$ Whenever a creature you control leaves the battlefield, CARDNAME deals 1 damage to any target. +SVar:SmallBurnination:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/outpost_siege.jpg -Oracle:As Outpost Siege enters the battlefield, choose Khans or Dragons.\n• Khans — At the beginning of your upkeep, exile the top card of your library. Until end of turn, you may play that card.\n• Dragons — Whenever a creature you control leaves the battlefield, Outpost Siege deals 1 damage to target creature or player. +Oracle:As Outpost Siege enters the battlefield, choose Khans or Dragons.\n• Khans — At the beginning of your upkeep, exile the top card of your library. Until end of turn, you may play that card.\n• Dragons — Whenever a creature you control leaves the battlefield, Outpost Siege deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/o/overblaze.txt b/forge-gui/res/cardsfolder/o/overblaze.txt index 7482538bd4f..666d4275e16 100644 --- a/forge-gui/res/cardsfolder/o/overblaze.txt +++ b/forge-gui/res/cardsfolder/o/overblaze.txt @@ -2,8 +2,8 @@ Name:Overblaze ManaCost:3 R Types:Instant Arcane K:Splice:Arcane:2 R R -A:SP$ Effect | Cost$ 3 R | Name$ Overblaze Effect | ValidTgts$ Permanent | RememberObjects$ Targeted | ReplacementEffects$ OverblazeEvent | SVars$ DmgTwice,X | References$ OverblazeEvent,DmgTwice,X | SpellDescription$ Each time target permanent would deal damage to a creature or player this turn, it deals double that damage to that creature or player instead. -SVar:OverblazeEvent:Event$ DamageDone | ValidSource$ Permanent.IsRemembered | ValidTarget$ Creature,Player | ReplaceWith$ DmgTwice | Description$ Each time target permanent would deal noncombat damage to a creature or player this turn, it deals double that damage to that creature or player instead. +A:SP$ Effect | Cost$ 3 R | Name$ Overblaze Effect | ValidTgts$ Permanent,Player | RememberObjects$ Targeted | ReplacementEffects$ OverblazeEvent | SVars$ DmgTwice,X | References$ OverblazeEvent,DmgTwice,X | SpellDescription$ Each time target permanent would deal damage to a permanent or player this turn, it deals double that damage to that permanent or player instead. +SVar:OverblazeEvent:Event$ DamageDone | ValidSource$ Permanent.IsRemembered | ValidTarget$ Permanent,Player | ReplaceWith$ DmgTwice | Description$ Each time target permanent would deal noncombat damage to a permanent or player this turn, it deals double that damage to that permanent or player instead. SVar:DmgTwice:DB$ ReplaceEffect | VarName$ DamageAmount | VarValue$ X | References$ X SVar:X:ReplaceCount$DamageAmount/Twice SVar:PlayMain1:TRUE @@ -11,4 +11,4 @@ SVar:RemAIDeck:True SVar:RemRandomDeck:True DeckHints:Type$Arcane SVar:Picture:http://www.wizards.com/global/images/magic/general/overblaze.jpg -Oracle:Each time target permanent would deal damage to a creature or player this turn, it deals double that damage to that creature or player instead.\nSplice onto Arcane {2}{R}{R} (As you cast an Arcane spell, you may reveal this card from your hand and pay its splice cost. If you do, add this card's effects to that spell.) +Oracle:Each time target permanent would deal damage to a permanent or player this turn, it deals double that damage to that permanent or player instead.\nSplice onto Arcane {2}{R}{R} (As you cast an Arcane spell, you may reveal this card from your hand and pay its splice cost. If you do, add this card's effects to that spell.) diff --git a/forge-gui/res/cardsfolder/p/palladia_mors_the_ruiner.txt b/forge-gui/res/cardsfolder/p/palladia_mors_the_ruiner.txt new file mode 100644 index 00000000000..8eca67277f0 --- /dev/null +++ b/forge-gui/res/cardsfolder/p/palladia_mors_the_ruiner.txt @@ -0,0 +1,9 @@ +Name:Palladia-Mors, the Ruiner +ManaCost:3 W R G +Types:Legendary Creature Elder Dragon +PT:6/6 +K:Flying +K:Vigilance +K:Trample +S:Mode$ Continuous | Affected$ Card.Self | AddKeyword$ Hexproof | IsPresent$ Card.Self+dealtDamageThisTurn | PresentCompare$ EQ0 | Description$ CARDNAME has hexproof if it hasn’t dealt damage yet. +Oracle:Flying, vigilance, trample\nPalladia-Mors, the Ruiner has hexproof if it hasn’t dealt damage yet. diff --git a/forge-gui/res/cardsfolder/p/panacea.txt b/forge-gui/res/cardsfolder/p/panacea.txt index 1cdbf05a333..9ce5f214f65 100644 --- a/forge-gui/res/cardsfolder/p/panacea.txt +++ b/forge-gui/res/cardsfolder/p/panacea.txt @@ -1,8 +1,8 @@ Name:Panacea ManaCost:4 Types:Artifact -A:AB$ PreventDamage | Cost$ X X T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ X | References$ X | SpellDescription$ Prevent the next X damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ X X T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ X | References$ X | SpellDescription$ Prevent the next X damage that would be dealt to any target this turn. SVar:X:Count$xPaid SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/panacea.jpg -Oracle:{X}{X}, {T}: Prevent the next X damage that would be dealt to target creature or player this turn. +Oracle:{X}{X}, {T}: Prevent the next X damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/p/pandemonium.txt b/forge-gui/res/cardsfolder/p/pandemonium.txt index b93a1d02664..ed58f7ceadc 100644 --- a/forge-gui/res/cardsfolder/p/pandemonium.txt +++ b/forge-gui/res/cardsfolder/p/pandemonium.txt @@ -1,9 +1,9 @@ Name:Pandemonium ManaCost:3 R Types:Enchantment -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature | TriggerZones$ Battlefield | Execute$ TrigDamage | OptionalDecider$ TriggeredCardController | TriggerDescription$ Whenever a creature enters the battlefield, that creature's controller may have it deal damage equal to its power to target creature or player of their choice. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | DamageSource$ TriggeredCard | TargetingPlayer$ TriggeredCardController +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature | TriggerZones$ Battlefield | Execute$ TrigDamage | OptionalDecider$ TriggeredCardController | TriggerDescription$ Whenever a creature enters the battlefield, that creature's controller may have it deal damage equal to its power to any target of their choice. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | DamageSource$ TriggeredCard | TargetingPlayer$ TriggeredCardController SVar:X:TriggeredCard$CardPower SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/pandemonium.jpg -Oracle:Whenever a creature enters the battlefield, that creature's controller may have it deal damage equal to its power to target creature or player of their choice. +Oracle:Whenever a creature enters the battlefield, that creature's controller may have it deal damage equal to its power to any target of their choice. diff --git a/forge-gui/res/cardsfolder/p/paradoxical_outcome.txt b/forge-gui/res/cardsfolder/p/paradoxical_outcome.txt index a63e1b6280a..046e3c0a450 100644 --- a/forge-gui/res/cardsfolder/p/paradoxical_outcome.txt +++ b/forge-gui/res/cardsfolder/p/paradoxical_outcome.txt @@ -2,7 +2,7 @@ Name:Paradoxical Outcome ManaCost:3 U Types:Instant A:SP$ ChangeZone | Cost$ 3 U | ValidTgts$ Permanent.nonLand+nonToken+YouCtrl | TgtPrompt$ Select target nonland, nontoken permanent you control | TargetMin$ 0 | TargetMax$ X | Origin$ Battlefield | Destination$ Hand | References$ X | RememberChanged$ True | SubAbility$ DBDraw | SpellDescription$ Return any number of target nonland, nontoken permanents you control to their owners' hands. Draw a card for each card returned to your hand this way. -SVar:DBDraw:DB$Draw | NumCards$ Y | SubAbility$ DBCleanup +SVar:DBDraw:DB$Draw | NumCards$ Y | References$ Y | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Count$Valid Permanent.nonLand+nonToken+YouCtrl SVar:Y:Remembered$Valid Card.YouOwn diff --git a/forge-gui/res/cardsfolder/p/parallel_evolution.txt b/forge-gui/res/cardsfolder/p/parallel_evolution.txt index 71492fd943b..cc1b93069e9 100644 --- a/forge-gui/res/cardsfolder/p/parallel_evolution.txt +++ b/forge-gui/res/cardsfolder/p/parallel_evolution.txt @@ -1,7 +1,7 @@ Name:Parallel Evolution ManaCost:3 G G Types:Sorcery -K:Flashback 4 G G G +K:Flashback:4 G G G A:SP$ RepeatEach | Cost$ 3 G G | RepeatSubAbility$ DBClone | RepeatCards$ Creature.token | AILogic$ CloneAllTokens | SpellDescription$ For each creature token on the battlefield, its controller creates a token that's a copy of that creature. SVar:DBClone:DB$ CopyPermanent | Defined$ Remembered | Controller$ RememberedController SVar:RemRandomDeck:True diff --git a/forge-gui/res/cardsfolder/p/parch.txt b/forge-gui/res/cardsfolder/p/parch.txt index 6d02aa431b7..945dd9546ad 100644 --- a/forge-gui/res/cardsfolder/p/parch.txt +++ b/forge-gui/res/cardsfolder/p/parch.txt @@ -2,7 +2,7 @@ Name:Parch ManaCost:1 R Types:Instant A:SP$ Charm | Cost$ 1 R | Choices$ DBDmg1,DBDmg2 | CharmNum$ 1 -SVar:DBDmg1:DB$ DealDamage | NumDmg$ 2 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +SVar:DBDmg1:DB$ DealDamage | NumDmg$ 2 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:DBDmg2:DB$ DealDamage | NumDmg$ 4 | ValidTgts$ Creature.Blue | TgtPrompt$ Select target blue creature. | SpellDescription$ CARDNAME deals 4 damage to target blue creature. SVar:Picture:http://www.wizards.com/global/images/magic/general/parch.jpg -Oracle:Choose one —\n• Parch deals 2 damage to target creature or player.\n• Parch deals 4 damage to target blue creature. +Oracle:Choose one —\n• Parch deals 2 damage to any target.\n• Parch deals 4 damage to target blue creature. diff --git a/forge-gui/res/cardsfolder/p/pardic_arsonist.txt b/forge-gui/res/cardsfolder/p/pardic_arsonist.txt index 91634d435d1..4b925a48264 100644 --- a/forge-gui/res/cardsfolder/p/pardic_arsonist.txt +++ b/forge-gui/res/cardsfolder/p/pardic_arsonist.txt @@ -2,7 +2,7 @@ Name:Pardic Arsonist ManaCost:2 R R Types:Creature Human Barbarian PT:3/3 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | Threshold$ True | TriggerDescription$ Threshold — As long as seven or more cards are in your graveyard, CARDNAME has "When CARDNAME enters the battlefield, it deals 3 damage to target creature or player." -SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | Threshold$ True | TriggerDescription$ Threshold — As long as seven or more cards are in your graveyard, CARDNAME has "When CARDNAME enters the battlefield, it deals 3 damage to any target." +SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 SVar:Picture:http://www.wizards.com/global/images/magic/general/pardic_arsonist.jpg -Oracle:Threshold — As long as seven or more cards are in your graveyard, Pardic Arsonist has "When Pardic Arsonist enters the battlefield, it deals 3 damage to target creature or player." +Oracle:Threshold — As long as seven or more cards are in your graveyard, Pardic Arsonist has "When Pardic Arsonist enters the battlefield, it deals 3 damage to any target." diff --git a/forge-gui/res/cardsfolder/p/past_in_flames.txt b/forge-gui/res/cardsfolder/p/past_in_flames.txt index d545ac4a5ff..dcc2b810131 100644 --- a/forge-gui/res/cardsfolder/p/past_in_flames.txt +++ b/forge-gui/res/cardsfolder/p/past_in_flames.txt @@ -1,7 +1,7 @@ Name:Past in Flames ManaCost:3 R Types:Sorcery -K:Flashback 4 R +K:Flashback:4 R A:SP$PumpAll | Cost$ 3 R | ValidCards$ Instant.YouCtrl,Sorcery.YouCtrl | KW$ Flashback | PumpZone$ Graveyard | SpellDescription$ Each instant and sorcery card in your graveyard gains flashback until end of turn. The flashback cost is equal to its mana cost. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/past_in_flames.jpg diff --git a/forge-gui/res/cardsfolder/p/patient_rebuilding.txt b/forge-gui/res/cardsfolder/p/patient_rebuilding.txt new file mode 100644 index 00000000000..1f42ab66a6b --- /dev/null +++ b/forge-gui/res/cardsfolder/p/patient_rebuilding.txt @@ -0,0 +1,9 @@ +Name:Patient Rebuilding +ManaCost:3 U U +Types:Enchantment +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigMill | TriggerDescription$ At the beginning of your upkeep, target opponent puts the top three cards of their library into their graveyard, then you draw a card for each land card put into that graveyard this way. +SVar:TrigMill:DB$ Mill | NumCards$ 3 | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | RememberMilled$ True | SubAbility$ DBDraw +SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ X | References$ X | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:Count$ValidGraveyard Land.IsRemembered +Oracle:At the beginning of your upkeep, target opponent puts the top three cards of their library into their graveyard, then you draw a card for each land card put into that graveyard this way. diff --git a/forge-gui/res/cardsfolder/p/pearl_shard.txt b/forge-gui/res/cardsfolder/p/pearl_shard.txt index 7d191fd31c0..f2d5b5727f3 100644 --- a/forge-gui/res/cardsfolder/p/pearl_shard.txt +++ b/forge-gui/res/cardsfolder/p/pearl_shard.txt @@ -1,7 +1,7 @@ Name:Pearl Shard ManaCost:3 Types:Artifact -A:AB$ PreventDamage | Cost$ 3 T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 2 | SpellDescription$ Prevent the next 2 damage that would be dealt to target creature or player this turn. -A:AB$ PreventDamage | Cost$ W T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 2 | SpellDescription$ Prevent the next 2 damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ 3 T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 2 | SpellDescription$ Prevent the next 2 damage that would be dealt to any target this turn. +A:AB$ PreventDamage | Cost$ W T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 2 | SpellDescription$ Prevent the next 2 damage that would be dealt to any target this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/pearl_shard.jpg -Oracle:{3}, {T} or {W}, {T}: Prevent the next 2 damage that would be dealt to target creature or player this turn. +Oracle:{3}, {T} or {W}, {T}: Prevent the next 2 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/p/pegasus_courser.txt b/forge-gui/res/cardsfolder/p/pegasus_courser.txt index 8f1c531c2da..a47160340bf 100644 --- a/forge-gui/res/cardsfolder/p/pegasus_courser.txt +++ b/forge-gui/res/cardsfolder/p/pegasus_courser.txt @@ -3,6 +3,6 @@ ManaCost:2 W Types:Creature Pegasus PT:1/3 K:Flying -T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever CARDNAME attacks, another target creature you control gains flying until end of turn. +T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever CARDNAME attacks, another target creature gains flying until end of turn. SVar:TrigPump:DB$ Pump | ValidTgts$ Creature.Other+attacking | TgtPrompt$ Select another target attacking creature | KW$ Flying -Oracle:Flying\nWhenever Pegasus Courser attacks, another target attacking creature gains flying until end of turn. \ No newline at end of file +Oracle:Flying\nWhenever Pegasus Courser attacks, another target attacking creature gains flying until end of turn. diff --git a/forge-gui/res/cardsfolder/p/pendulum_of_patterns.txt b/forge-gui/res/cardsfolder/p/pendulum_of_patterns.txt index 97ac6ef7bea..28fcfc6dd07 100644 --- a/forge-gui/res/cardsfolder/p/pendulum_of_patterns.txt +++ b/forge-gui/res/cardsfolder/p/pendulum_of_patterns.txt @@ -5,4 +5,4 @@ T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.S SVar:TrigGainLife:DB$ GainLife | LifeAmount$ 3 A:AB$ Draw | Cost$ 5 T Sac<1/CARDNAME> | NumCards$ 1 | SpellDescription$ Draw a card. SVar:Picture:http://www.wizards.com/global/images/magic/general/pendulum_of_patterns.jpg -Oracle:When Arashin Cleric enters the battlefield, you gain 3 life.\n{5}, {T}, Sacrifice Pendulum of Patters: Draw a card. +Oracle:When Pendulum of Patterns enters the battlefield, you gain 3 life.\n{5}, {T}, Sacrifice Pendulum of Patters: Draw a card. diff --git a/forge-gui/res/cardsfolder/p/perilous_myr.txt b/forge-gui/res/cardsfolder/p/perilous_myr.txt index 1b80484fbcf..a061b5685ee 100644 --- a/forge-gui/res/cardsfolder/p/perilous_myr.txt +++ b/forge-gui/res/cardsfolder/p/perilous_myr.txt @@ -2,7 +2,7 @@ Name:Perilous Myr ManaCost:2 Types:Artifact Creature Myr PT:1/1 -T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, it deals 2 damage to target creature or player. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, it deals 2 damage to any target. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 SVar:Picture:http://www.wizards.com/global/images/magic/general/perilous_myr.jpg -Oracle:When Perilous Myr dies, it deals 2 damage to target creature or player. +Oracle:When Perilous Myr dies, it deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/p/phantasmal_image.txt b/forge-gui/res/cardsfolder/p/phantasmal_image.txt index 571fe08898a..7c110e6016e 100644 --- a/forge-gui/res/cardsfolder/p/phantasmal_image.txt +++ b/forge-gui/res/cardsfolder/p/phantasmal_image.txt @@ -3,9 +3,8 @@ ManaCost:1 U Types:Creature Illusion PT:0/0 # Make Svars for granting abilities and triggers on clones distinct to avoid SVars getting overwritten when cloning a clone -K:ETBReplacement:Copy:ChooseCreature:Optional -SVar:ChooseCreature:DB$ ChooseCard | Defined$ You | Amount$ 1 | Choices$ Creature.Other | SubAbility$ DBCopy | RememberChosen$ True | AILogic$ AtLeast1 | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of any creature on the battlefield, except it's an Illusion in addition to its other types and it gains "When this creature becomes the target of a spell or ability, sacrifice it." -SVar:DBCopy:DB$ Clone | Defined$ Remembered | AddTypes$ Illusion | AddTriggers$ PhantasmalImageTgtTrig | AddSVars$ PhantasmalImageSac,Targeting +K:ETBReplacement:Copy:DBCopy:Optional +SVar:DBCopy:DB$ Clone | Choices$ Creature.Other | AddTypes$ Illusion | AddTriggers$ PhantasmalImageTgtTrig | AddSVars$ PhantasmalImageSac,Targeting | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of any creature on the battlefield, except it's an Illusion in addition to its other types and it gains "When this creature becomes the target of a spell or ability, sacrifice it." SVar:PhantasmalImageTgtTrig:Mode$ BecomesTarget | ValidTarget$ Card.Self | Execute$ PhantasmalImageSac | TriggerDescription$ When this creature becomes the target of a spell or ability, sacrifice it. SVar:PhantasmalImageSac:DB$Sacrifice | Defined$ Self SVar:Targeting:Dies diff --git a/forge-gui/res/cardsfolder/p/phantasmal_terrain.txt b/forge-gui/res/cardsfolder/p/phantasmal_terrain.txt index 06081b05e6a..5aea46a0d21 100644 --- a/forge-gui/res/cardsfolder/p/phantasmal_terrain.txt +++ b/forge-gui/res/cardsfolder/p/phantasmal_terrain.txt @@ -5,7 +5,7 @@ K:Enchant land A:SP$ Attach | Cost$ U U | ValidTgts$ Land | AILogic$ ChangeType K:ETBReplacement:Other:DBChooseBasic SVar:DBChooseBasic:DB$ ChooseType | Type$ Basic Land | SpellDescription$ As CARDNAME enters the battlefield, choose a basic land type. -S:Mode$ Continuous | Affected$ Card.EnchantedBy | AddType$ ChosenType | RemoveSubTypes$ True | RemoveAllAbilities$ True | Description$ Enchanted land is the chosen type. +S:Mode$ Continuous | Affected$ Card.EnchantedBy | AddType$ ChosenType | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True | Description$ Enchanted land is the chosen type. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/phantasmal_terrain.jpg Oracle:Enchant land\nAs Phantasmal Terrain enters the battlefield, choose a basic land type.\nEnchanted land is the chosen type. diff --git a/forge-gui/res/cardsfolder/p/pillar_of_flame.txt b/forge-gui/res/cardsfolder/p/pillar_of_flame.txt index 0312f0f3d39..e129fef52ac 100644 --- a/forge-gui/res/cardsfolder/p/pillar_of_flame.txt +++ b/forge-gui/res/cardsfolder/p/pillar_of_flame.txt @@ -1,7 +1,7 @@ Name:Pillar of Flame ManaCost:R Types:Sorcery -A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | RememberDamaged$ True | ReplaceDyingDefined$ Remembered | SubAbility$ DBCleanup | SpellDescription$ CARDNAME deals 2 damage to target creature or player. If a creature dealt damage this way would die this turn, exile it instead. +A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | RememberDamaged$ True | ReplaceDyingDefined$ Remembered | SubAbility$ DBCleanup | SpellDescription$ CARDNAME deals 2 damage to any target. If a creature dealt damage this way would die this turn, exile it instead. SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/pillar_of_flame.jpg -Oracle:Pillar of Flame deals 2 damage to target creature or player. If a creature dealt damage this way would die this turn, exile it instead. +Oracle:Pillar of Flame deals 2 damage to any target. If a creature dealt damage this way would die this turn, exile it instead. diff --git a/forge-gui/res/cardsfolder/p/pinnacle_of_rage.txt b/forge-gui/res/cardsfolder/p/pinnacle_of_rage.txt index 7335ecd2e17..d9290c7d92a 100644 --- a/forge-gui/res/cardsfolder/p/pinnacle_of_rage.txt +++ b/forge-gui/res/cardsfolder/p/pinnacle_of_rage.txt @@ -1,6 +1,6 @@ Name:Pinnacle of Rage ManaCost:4 R R Types:Sorcery -A:SP$ DealDamage | Cost$ 4 R R | TargetMin$ 2 | TargetMax$ 2 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to each of two target creatures and/or players. +A:SP$ DealDamage | Cost$ 4 R R | TargetMin$ 2 | TargetMax$ 2 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to each of two targets. SVar:Picture:http://www.wizards.com/global/images/magic/general/pinnacle_of_rage.jpg -Oracle:Pinnacle of Rage deals 3 damage to each of two target creatures and/or players. +Oracle:Pinnacle of Rage deals 3 damage to each of two targets. diff --git a/forge-gui/res/cardsfolder/p/pir_imaginative_rascal.txt b/forge-gui/res/cardsfolder/p/pir_imaginative_rascal.txt new file mode 100644 index 00000000000..36a6ff7ce03 --- /dev/null +++ b/forge-gui/res/cardsfolder/p/pir_imaginative_rascal.txt @@ -0,0 +1,11 @@ +Name:Pir, Imaginative Rascal +ManaCost:2 G +Types:Legendary Creature Human +PT:1/1 +K:Partner:Toothy, Imaginary Friend:Toothy +R:Event$ AddCounter | ActiveZones$ Battlefield | ValidCard$ Permanent.YourTeamCtrl | ReplaceWith$ AddOneMoreCounters | Description$ If one or more counters would be put on a permanent your team controls, that many plus one of each of those kinds of counters are put on that permanent instead. +SVar:AddOneMoreCounters:DB$ ReplaceEffect | VarName$ CounterNum | VarValue$ X | References$ X +SVar:X:ReplaceCount$CounterNum/Plus.1 +DeckNeeds:Ability$Counters +SVar:Picture:http://www.wizards.com/global/images/magic/general/pir_imaginative_rascal.jpg +Oracle:Partner with Toothy, Imaginary Friend (When this creature enters the battlefield, target player may put Toothy into their hand from their library, then shuffle.)\nIf one or more counters would be put on a permanent your team controls, that many plus one of each of those kinds of counters are put on that permanent instead. diff --git a/forge-gui/res/cardsfolder/p/pirate_ship.txt b/forge-gui/res/cardsfolder/p/pirate_ship.txt index 4f13b43a40a..d4efa60c4f6 100644 --- a/forge-gui/res/cardsfolder/p/pirate_ship.txt +++ b/forge-gui/res/cardsfolder/p/pirate_ship.txt @@ -5,7 +5,7 @@ PT:4/3 S:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Island | Description$ CARDNAME can't attack unless defending player controls an Island. T:Mode$ Always | TriggerZones$ Battlefield | IsPresent$ Island.YouCtrl | PresentCompare$ EQ0 | Execute$ TrigSac | TriggerDescription$ When you control no Islands, sacrifice CARDNAME. SVar:TrigSac:DB$Sacrifice | Defined$ Self -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:NeedsToPlay:Island.YouCtrl SVar:Picture:http://www.wizards.com/global/images/magic/general/pirate_ship.jpg -Oracle:Pirate Ship can't attack unless defending player controls an Island.\n{T}: Pirate Ship deals 1 damage to target creature or player.\nWhen you control no Islands, sacrifice Pirate Ship. +Oracle:Pirate Ship can't attack unless defending player controls an Island.\n{T}: Pirate Ship deals 1 damage to any target.\nWhen you control no Islands, sacrifice Pirate Ship. diff --git a/forge-gui/res/cardsfolder/p/pirs_whim.txt b/forge-gui/res/cardsfolder/p/pirs_whim.txt new file mode 100644 index 00000000000..fcaceefbbc0 --- /dev/null +++ b/forge-gui/res/cardsfolder/p/pirs_whim.txt @@ -0,0 +1,14 @@ +Name:Pir's Whim +ManaCost:3 G +Types:Sorcery +A:SP$ AssignGroup | Cost$ 3 G | Defined$ Player | Choices$ DBSearch,DBSacrifice | AILogic$ FriendOrFoe | SpellDescription$ For each player, choose friend or foe. Each friend searches their library for a land card, puts it onto the battlefield tapped, then shuffles their library. Each foe sacrifices an artifact or enchantment they control. +SVar:DBSearch:DB$ChangeZone | Origin$ Library | Destination$ Battlefield | DefinedPlayer$ Remembered | ChangeType$ Land | ChangeNum$ 1 | StackDescription$ Each friend searches their library for a land card, puts it onto the battlefield tapped, then shuffles their library. | SpellDescription$ Friend searches their library for a land card, puts it onto the battlefield tapped, then shuffles their library. +SVar:DBSacrifice:DB$Sacrifice | Defined$ Remembered | SacValid$ Artifact,Enchantment | SacMessage$ artifact or enchantment | StackDescription$ Each foe sacrifices an artifact or enchantment they control. | SpellDescription$ Foe sacrifices an artifact or enchantment they control. +SVar:NeedsToPlayVar:Z GE1 +SVar:Z:SVar$Z1/Plus.C1 +SVar:Z1:SVar$C2/Plus.C3 +SVar:C1:Count$Valid Land.YourTeamCtrl+inZoneLibrary +SVar:C2:Count$Valid Enchantment.OppCtrl+inZoneBattlefield +SVar:C3:Count$Valid Artifact.OppCtrl+inZoneBattlefield +SVar:Picture:http://www.wizards.com/global/images/magic/general/pirs_whim.jpg +Oracle:For each player, choose friend or foe. Each friend searches their library for a land card, puts it onto the battlefield tapped, then shuffles their library. Each foe sacrifices an artifact or enchantment they control. diff --git a/forge-gui/res/cardsfolder/p/pitchburn_devils.txt b/forge-gui/res/cardsfolder/p/pitchburn_devils.txt index b782e6be4ba..1195b0dd36c 100644 --- a/forge-gui/res/cardsfolder/p/pitchburn_devils.txt +++ b/forge-gui/res/cardsfolder/p/pitchburn_devils.txt @@ -2,7 +2,7 @@ Name:Pitchburn Devils ManaCost:4 R Types:Creature Devil PT:3/3 -T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigDamage | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, it deals 3 damage to target creature or player. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigDamage | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, it deals 3 damage to any target. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 SVar:Picture:http://www.wizards.com/global/images/magic/general/pitchburn_devils.jpg -Oracle:When Pitchburn Devils dies, it deals 3 damage to target creature or player. +Oracle:When Pitchburn Devils dies, it deals 3 damage to any target. diff --git a/forge-gui/res/cardsfolder/p/plague_mare.txt b/forge-gui/res/cardsfolder/p/plague_mare.txt new file mode 100644 index 00000000000..56ca06fd4bb --- /dev/null +++ b/forge-gui/res/cardsfolder/p/plague_mare.txt @@ -0,0 +1,8 @@ +Name:Plague Mare +ManaCost:1 B B +Types:Creature Nightmare Horse +PT:2/2 +K:CantBeBlockedBy Creature.White +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPumpAll | TriggerDescription$ When CARDNAME enters the battlefield, creatures your opponents control get -1/-1 until end of turn. +SVar:TrigPumpAll:DB$ PumpAll | ValidCards$ Creature.OppCtrl | NumAtt$ -1 | NumDef$ -1 | IsCurse$ True +Oracle:Plague Mare can’t be blocked by white creatures.\nWhen Plague Mare enters the battlefield, creatures your opponents control get -1/-1 until end of turn. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/p/plated_pegasus.txt b/forge-gui/res/cardsfolder/p/plated_pegasus.txt index 2d6633002ca..9929068ed00 100644 --- a/forge-gui/res/cardsfolder/p/plated_pegasus.txt +++ b/forge-gui/res/cardsfolder/p/plated_pegasus.txt @@ -4,6 +4,6 @@ Types:Creature Pegasus PT:1/2 K:Flash K:Flying -S:Mode$ PreventDamage | Target$ Creature,Player | Source$ Spell | Amount$ 1 | Description$ If a spell would deal damage to a creature or player, prevent 1 damage that spell would deal to that creature or player. +S:Mode$ PreventDamage | Target$ Permanent,Player | Source$ Spell | Amount$ 1 | Description$ If a spell would deal damage to a permanent or player, prevent 1 damage that spell would deal to that permanent or player. SVar:Picture:http://www.wizards.com/global/images/magic/general/plated_pegasus.jpg -Oracle:Flash (You may cast this spell any time you could cast an instant.)\nFlying\nIf a spell would deal damage to a creature or player, prevent 1 damage that spell would deal to that creature or player. +Oracle:Flash (You may cast this spell any time you could cast an instant.)\nFlying\nIf a spell would deal damage to a permanent or player, prevent 1 damage that spell would deal to that permanent or player. diff --git a/forge-gui/res/cardsfolder/p/poison-tip_archer.txt b/forge-gui/res/cardsfolder/p/poison-tip_archer.txt new file mode 100644 index 00000000000..d94f75535e3 --- /dev/null +++ b/forge-gui/res/cardsfolder/p/poison-tip_archer.txt @@ -0,0 +1,10 @@ +Name:Poison-Tip Archer +ManaCost:2 B G +Types:Creature Elf Archer +PT:2/3 +K:Reach +K:Deathtouch +T:Mode$ ChangesZone | Origin$ Battlefield | ValidCard$ Creature.Other | Destination$ Graveyard | TriggerZones$ Battlefield | Execute$ TrigLoseLife | TriggerDescription$ Whenever another creature dies, each opponent loses 1 life. +SVar:TrigLoseLife:DB$ LoseLife | Defined$ Player.Opponent | LifeAmount$ 1 +SVar:Picture:http://www.wizards.com/global/images/magic/general/poison-tip_archer.jpg +Oracle:Reach (This creature can block creatures with flying.)\nDeathtouch (Any amount of damage this deals to a creature is enough to destroy it.)\nWhenever another creature dies, each opponent loses 1 life. diff --git a/forge-gui/res/cardsfolder/p/pollen_remedy.txt b/forge-gui/res/cardsfolder/p/pollen_remedy.txt index 993989083cf..a6689cc48ad 100644 --- a/forge-gui/res/cardsfolder/p/pollen_remedy.txt +++ b/forge-gui/res/cardsfolder/p/pollen_remedy.txt @@ -2,8 +2,8 @@ Name:Pollen Remedy ManaCost:W Types:Instant K:Kicker:Sac<1/Land> -A:SP$ PreventDamage | Cost$ W | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to prevent damage to | Amount$ 5 | TargetMin$ 1 | TargetMax$ X | References$ X | DividedAsYouChoose$ X | SpellDescription$ Prevent the next 3 damage that would be dealt this turn to any number of target creatures and/or players, divided as you choose. If CARDNAME was kicked, prevent the next 6 damage this way instead. +A:SP$ PreventDamage | Cost$ W | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to prevent damage to | Amount$ 5 | TargetMin$ 1 | TargetMax$ X | References$ X | DividedAsYouChoose$ X | SpellDescription$ Prevent the next 3 damage that would be dealt this turn to any number of targets, divided as you choose. If CARDNAME was kicked, prevent the next 6 damage this way instead. SVar:X:Count$Kicked.6.3 SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/pollen_remedy.jpg -Oracle:Kicker—Sacrifice a land. (You may sacrifice a land in addition to any other costs as you cast this spell.)\nPrevent the next 3 damage that would be dealt this turn to any number of target creatures and/or players, divided as you choose. If Pollen Remedy was kicked, prevent the next 6 damage this way instead. +Oracle:Kicker—Sacrifice a land. (You may sacrifice a land in addition to any other costs as you cast this spell.)\nPrevent the next 3 damage that would be dealt this turn to any number of targets, divided as you choose. If Pollen Remedy was kicked, prevent the next 6 damage this way instead. diff --git a/forge-gui/res/cardsfolder/p/power_of_fire.txt b/forge-gui/res/cardsfolder/p/power_of_fire.txt index de80b64c881..fbd6714dc24 100644 --- a/forge-gui/res/cardsfolder/p/power_of_fire.txt +++ b/forge-gui/res/cardsfolder/p/power_of_fire.txt @@ -3,8 +3,8 @@ ManaCost:1 R Types:Enchantment Aura K:Enchant creature A:SP$ Attach | Cost$ 1 R | ValidTgts$ Creature | AILogic$ Pump -S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddAbility$ Damage | Description$ Enchanted creature has "{T}: This creature deals 1 damage to target creature or player." -SVar:Damage:AB$DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddAbility$ Damage | Description$ Enchanted creature has "{T}: This creature deals 1 damage to any target." +SVar:Damage:AB$DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:NonStackingAttachEffect:True SVar:Picture:http://www.wizards.com/global/images/magic/general/power_of_fire.jpg -Oracle:Enchant creature\nEnchanted creature has "{T}: This creature deals 1 damage to target creature or player." +Oracle:Enchant creature\nEnchanted creature has "{T}: This creature deals 1 damage to any target." diff --git a/forge-gui/res/cardsfolder/p/powerstone_minefield.txt b/forge-gui/res/cardsfolder/p/powerstone_minefield.txt index 5cfbeb3b293..cf64d69912c 100644 --- a/forge-gui/res/cardsfolder/p/powerstone_minefield.txt +++ b/forge-gui/res/cardsfolder/p/powerstone_minefield.txt @@ -3,8 +3,8 @@ ManaCost:2 R W Types:Enchantment T:Mode$ Attacks | ValidCard$ Creature | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever a creature attacks or blocks, CARDNAME deals 2 damage to it. T:Mode$ Blocks | ValidCard$ Creature | TriggerZones$ Battlefield | Execute$ TrigDamage2 | Secondary$ True | TriggerDescription$ Whenever a creature attacks or blocks, CARDNAME deals 2 damage to it. -SVar:TrigDamage:DB$DealDamage | Defined$ TriggeredAttacker | NumDmg$ 2 -SVar:TrigDamage2:DB$DealDamage | Defined$ TriggeredBlocker | NumDmg$ 2 +SVar:TrigDamage:DB$DealDamage | Defined$ TriggeredAttackerLKICopy | NumDmg$ 2 +SVar:TrigDamage2:DB$DealDamage | Defined$ TriggeredBlockerLKICopy | NumDmg$ 2 SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/powerstone_minefield.jpg Oracle:Whenever a creature attacks or blocks, Powerstone Minefield deals 2 damage to it. diff --git a/forge-gui/res/cardsfolder/p/preyseizer_dragon.txt b/forge-gui/res/cardsfolder/p/preyseizer_dragon.txt index 1adfce80061..ce308537e73 100644 --- a/forge-gui/res/cardsfolder/p/preyseizer_dragon.txt +++ b/forge-gui/res/cardsfolder/p/preyseizer_dragon.txt @@ -4,8 +4,8 @@ Types:Creature Dragon PT:4/4 K:Flying K:Devour:2 -T:Mode$ Attacks | ValidCard$ Card.Self | OptionalDecider$ You | Execute$ TrigDealDamage | TriggerDescription$ Whenever CARDNAME attacks, it deals damage to target creature or player equal to the number of +1/+1 counters on CARDNAME. -SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X +T:Mode$ Attacks | ValidCard$ Card.Self | OptionalDecider$ You | Execute$ TrigDealDamage | TriggerDescription$ Whenever CARDNAME attacks, it deals damage to any target equal to the number of +1/+1 counters on CARDNAME. +SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X SVar:X:Count$CardCounters.P1P1 SVar:Picture:http://www.wizards.com/global/images/magic/general/preyseizer_dragon.jpg -Oracle:Flying\nDevour 2 (As this enters the battlefield, you may sacrifice any number of creatures. This creature enters the battlefield with twice that many +1/+1 counters on it.)\nWhenever Preyseizer Dragon attacks, it deals damage to target creature or player equal to the number of +1/+1 counters on Preyseizer Dragon. +Oracle:Flying\nDevour 2 (As this enters the battlefield, you may sacrifice any number of creatures. This creature enters the battlefield with twice that many +1/+1 counters on it.)\nWhenever Preyseizer Dragon attacks, it deals damage to any target equal to the number of +1/+1 counters on Preyseizer Dragon. diff --git a/forge-gui/res/cardsfolder/p/primal_forcemage.txt b/forge-gui/res/cardsfolder/p/primal_forcemage.txt index 5a41e541177..7845a017319 100644 --- a/forge-gui/res/cardsfolder/p/primal_forcemage.txt +++ b/forge-gui/res/cardsfolder/p/primal_forcemage.txt @@ -3,7 +3,7 @@ ManaCost:2 G Types:Creature Elf Shaman PT:2/2 T:Mode$ ChangesZone | ValidCard$ Creature.Other+YouCtrl | Origin$ Any | Destination$ Battlefield | Execute$ TrigPump | TriggerZones$ Battlefield | TriggerDescription$ Whenever another creature enters the battlefield under your control, that creature gets +3/+3 until end of turn. -SVar:TrigPump:DB$ Pump | Defined$ TriggeredCard | NumAtt$ +3 | NumDef$ +3 +SVar:TrigPump:DB$ Pump | Defined$ TriggeredCardLKICopy | NumAtt$ +3 | NumDef$ +3 SVar:PlayMain1:ALWAYS SVar:Picture:http://www.wizards.com/global/images/magic/general/primal_forcemage.jpg Oracle:Whenever another creature enters the battlefield under your control, that creature gets +3/+3 until end of turn. diff --git a/forge-gui/res/cardsfolder/p/prismatic_lace.txt b/forge-gui/res/cardsfolder/p/prismatic_lace.txt index 8b0b515bcbc..2937bb39f87 100644 --- a/forge-gui/res/cardsfolder/p/prismatic_lace.txt +++ b/forge-gui/res/cardsfolder/p/prismatic_lace.txt @@ -1,7 +1,7 @@ Name:Prismatic Lace ManaCost:U Types:Instant -A:SP$ ChooseColor | Cost$ 1 U | Defined$ You | OrColors$ True | SubAbility$ Animate | SpellDescription$ Target permanent becomes the color or colors of your choice. (This effect lasts indefinitely.) +A:SP$ ChooseColor | Cost$ U | Defined$ You | OrColors$ True | SubAbility$ Animate | SpellDescription$ Target permanent becomes the color or colors of your choice. (This effect lasts indefinitely.) SVar:Animate:DB$ Animate | ValidTgts$ Permanent | TgtPrompt$ Select target permanent | Colors$ ChosenColor | OverwriteColors$ True | Permanent$ True SVar:RemAIDeck:True SVar:RemRandomDeck:True diff --git a/forge-gui/res/cardsfolder/p/prismatic_strands.txt b/forge-gui/res/cardsfolder/p/prismatic_strands.txt index 5045f06db83..c2afd51e403 100644 --- a/forge-gui/res/cardsfolder/p/prismatic_strands.txt +++ b/forge-gui/res/cardsfolder/p/prismatic_strands.txt @@ -1,7 +1,7 @@ Name:Prismatic Strands ManaCost:2 W Types:Instant -K:Flashback tapXType<1/Creature.White/white creature> +K:Flashback:tapXType<1/Creature.White/white creature> A:SP$ ChooseColor | Cost$ 2 W | Defined$ You | AILogic$ MostProminentInHumanDeck | SubAbility$ DBEffect SVar:DBEffect:DB$ Effect | Name$ Prismatic Strands Effect | ReplacementEffects$ RPrevent | SpellDescription$ Prevent all damage that sources of the color of your choice would deal this turn. SVar:RPrevent:Event$ DamageDone | Prevent$ True | ActiveZones$ Command | ValidSource$ Card.ChosenColor | Description$ Prevent all damage that sources of the chosen color would deal this turn. diff --git a/forge-gui/res/cardsfolder/p/prodigal_pyromancer.txt b/forge-gui/res/cardsfolder/p/prodigal_pyromancer.txt index 5b5347404ee..719f215e7d0 100644 --- a/forge-gui/res/cardsfolder/p/prodigal_pyromancer.txt +++ b/forge-gui/res/cardsfolder/p/prodigal_pyromancer.txt @@ -2,7 +2,7 @@ Name:Prodigal Pyromancer ManaCost:2 R Types:Creature Human Wizard PT:1/1 -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://resources.wizards.com/magic/cards/plc/en-us/card122338.jpg SVar:NonCombatPriority:1 -Oracle:{T}: Prodigal Pyromancer deals 1 damage to target creature or player. +Oracle:{T}: Prodigal Pyromancer deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/p/prodigal_sorcerer.txt b/forge-gui/res/cardsfolder/p/prodigal_sorcerer.txt index 140175ae010..b98a0e648d9 100644 --- a/forge-gui/res/cardsfolder/p/prodigal_sorcerer.txt +++ b/forge-gui/res/cardsfolder/p/prodigal_sorcerer.txt @@ -2,7 +2,7 @@ Name:Prodigal Sorcerer ManaCost:2 U Types:Creature Human Wizard PT:1/1 -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://resources.wizards.com/magic/cards/tsb/en-us/card108906.jpg SVar:NonCombatPriority:1 -Oracle:{T}: Prodigal Sorcerer deals 1 damage to target creature or player. +Oracle:{T}: Prodigal Sorcerer deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/p/prodigious_growth.txt b/forge-gui/res/cardsfolder/p/prodigious_growth.txt new file mode 100644 index 00000000000..6d0c19031b5 --- /dev/null +++ b/forge-gui/res/cardsfolder/p/prodigious_growth.txt @@ -0,0 +1,7 @@ +Name:Prodigious Growth +ManaCost:4 G G +Types:Enchantment Aura +K:Enchant creature +A:SP$ Attach | Cost$ 4 G G | ValidTgts$ Creature | AILogic$ Pump +S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 7 | AddToughness$ 7 | AddKeyword$ Trample | Description$ Enchanted creature gets +7/+7 and has trample. +Oracle:Enchant creature\nEnchanted creature gets +7/+7 and has trample. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/p/profane_prayers.txt b/forge-gui/res/cardsfolder/p/profane_prayers.txt index dff732752f6..54accc586c7 100644 --- a/forge-gui/res/cardsfolder/p/profane_prayers.txt +++ b/forge-gui/res/cardsfolder/p/profane_prayers.txt @@ -1,9 +1,9 @@ Name:Profane Prayers ManaCost:2 B B Types:Sorcery -A:SP$ DealDamage | Cost$ 2 B B | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SubAbility$ DBGainLife | SpellDescription$ Profane Prayers deals X damage to target creature or player and you gain X life, where X is the number of Clerics on the battlefield. +A:SP$ DealDamage | Cost$ 2 B B | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SubAbility$ DBGainLife | SpellDescription$ Profane Prayers deals X damage to any target and you gain X life, where X is the number of Clerics on the battlefield. SVar:DBGainLife:DB$GainLife | Defined$ You | LifeAmount$ X | References$ X SVar:X:Count$TypeOnBattlefield.Cleric SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/profane_prayers.jpg -Oracle:Profane Prayers deals X damage to target creature or player and you gain X life, where X is the number of Clerics on the battlefield. +Oracle:Profane Prayers deals X damage to any target and you gain X life, where X is the number of Clerics on the battlefield. diff --git a/forge-gui/res/cardsfolder/p/progenitor_mimic.txt b/forge-gui/res/cardsfolder/p/progenitor_mimic.txt index 57034b74c49..19553c0e0ed 100644 --- a/forge-gui/res/cardsfolder/p/progenitor_mimic.txt +++ b/forge-gui/res/cardsfolder/p/progenitor_mimic.txt @@ -2,9 +2,8 @@ Name:Progenitor Mimic ManaCost:4 G U Types:Creature Shapeshifter PT:0/0 -K:ETBReplacement:Copy:ChooseCreature:Optional -SVar:ChooseCreature:DB$ ChooseCard | Defined$ You | Amount$ 1 | Choices$ Creature.Other | SubAbility$ DBCopy | SpellDescription$ You may have Progenitor Mimic enter the battlefield as a copy of any creature on the battlefield, except it gains "At the beginning of your upkeep, if this creature isn't a token, create a token that's a copy of this creature." -SVar:DBCopy:DB$ Clone | Defined$ ChosenCard | AddTriggers$ ProgenitorTrig | AddSVars$ ProgenitorCopy,ProgenitorTrig +K:ETBReplacement:Copy:DBCopy:Optional +SVar:DBCopy:DB$ Clone | Choices$ Creature.Other | AddTriggers$ ProgenitorTrig | AddSVars$ ProgenitorCopy,ProgenitorTrig | SpellDescription$ You may have Progenitor Mimic enter the battlefield as a copy of any creature on the battlefield, except it gains "At the beginning of your upkeep, if this creature isn't a token, create a token that's a copy of this creature." SVar:ProgenitorTrig:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ ProgenitorCopy | IsPresent$ Card.Self+nonToken | TriggerDescription$ At the beginning of your upkeep, if CARDNAME isn't a token, create a token that's a copy of CARDNAME." SVar:ProgenitorCopy:DB$ CopyPermanent | Defined$ Self | NumCopies$ 1 SVar:NeedsToPlay:Creature.inZoneBattlefield diff --git a/forge-gui/res/cardsfolder/p/prophetic_bolt.txt b/forge-gui/res/cardsfolder/p/prophetic_bolt.txt index abb427a9996..fde2209c9c6 100644 --- a/forge-gui/res/cardsfolder/p/prophetic_bolt.txt +++ b/forge-gui/res/cardsfolder/p/prophetic_bolt.txt @@ -1,7 +1,7 @@ Name:Prophetic Bolt ManaCost:3 U R Types:Instant -A:SP$ DealDamage | Cost$ 3 U R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 4 | SubAbility$ DBDig | SpellDescription$ CARDNAME deals 4 damage to target creature or player. Look at the top four cards of your library. Put one of those cards into your hand and the rest on the bottom of your library in any order. +A:SP$ DealDamage | Cost$ 3 U R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 4 | SubAbility$ DBDig | SpellDescription$ CARDNAME deals 4 damage to any target. Look at the top four cards of your library. Put one of those cards into your hand and the rest on the bottom of your library in any order. SVar:DBDig:DB$Dig | DigNum$ 4 SVar:Picture:http://www.wizards.com/global/images/magic/general/prophetic_bolt.jpg -Oracle:Prophetic Bolt deals 4 damage to target creature or player. Look at the top four cards of your library. Put one of those cards into your hand and the rest on the bottom of your library in any order. +Oracle:Prophetic Bolt deals 4 damage to any target. Look at the top four cards of your library. Put one of those cards into your hand and the rest on the bottom of your library in any order. diff --git a/forge-gui/res/cardsfolder/p/protean_raider.txt b/forge-gui/res/cardsfolder/p/protean_raider.txt index 0509883f268..5818ffb6450 100644 --- a/forge-gui/res/cardsfolder/p/protean_raider.txt +++ b/forge-gui/res/cardsfolder/p/protean_raider.txt @@ -2,9 +2,8 @@ Name:Protean Raider ManaCost:1 U R Types:Creature Shapeshifter Pirate PT:2/2 -R:Event$ Moved | Destination$ Battlefield | ValidCard$ Card.Self | Optional$ True | ReplaceWith$ ChooseCreature | CheckSVar$ RaidTest | References$ RaidTest | Description$ Raid — If you attacked with a creature this turn, you may have CARDNAME enter the battlefield as a copy of any creature on the battlefield. -SVar:ChooseCreature:DB$ ChooseCard | Defined$ You | Amount$ 1 | Choices$ Creature.Other | SubAbility$ DBCopy | AILogic$ Clone -SVar:DBCopy:DB$ Clone | Defined$ ChosenCard | SubAbility$ DBChangeZone +R:Event$ Moved | Destination$ Battlefield | ValidCard$ Card.Self | Optional$ True | ReplaceWith$ DBCopy | CheckSVar$ RaidTest | References$ RaidTest | Description$ Raid — If you attacked with a creature this turn, you may have CARDNAME enter the battlefield as a copy of any creature on the battlefield. +SVar:DBCopy:DB$ Clone | Choices$ Creature.Other | SubAbility$ DBChangeZone | SpellDescription$ Raid — If you attacked with a creature this turn, you may have CARDNAME enter the battlefield as a copy of any creature on the battlefield. SVar:DBChangeZone:DB$ ChangeZone | Hidden$ True | Origin$ All | Destination$ Battlefield | Defined$ ReplacedCard SVar:RaidTest:Count$AttackersDeclared SVar:Picture:http://www.wizards.com/global/images/magic/general/protean_raider.jpg diff --git a/forge-gui/res/cardsfolder/p/proteus_machine.txt b/forge-gui/res/cardsfolder/p/proteus_machine.txt index 6212e8428ea..518437ec0ea 100644 --- a/forge-gui/res/cardsfolder/p/proteus_machine.txt +++ b/forge-gui/res/cardsfolder/p/proteus_machine.txt @@ -5,6 +5,6 @@ PT:2/2 K:Morph:0 T:Mode$ TurnFaceUp | ValidCard$ Card.Self | Execute$ TrigChoose | TriggerZones$ Battlefield | TriggerDescription$ When CARDNAME is turned face up, it becomes the creature type of your choice. (This effect lasts indefinitely.) SVar:TrigChoose:DB$ ChooseType | Cost$ 1 | Defined$ You | Type$ Creature | SubAbility$ DBAnimate | AILogic$ MostProminentInComputerDeck -SVar:DBAnimate:DB$ Animate | Defined$ Self | Types$ ChosenType | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | LastsIndefinitely$ True +SVar:DBAnimate:DB$ Animate | Defined$ Self | Types$ ChosenType | RemoveCreatureTypes$ True | Permanent$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/proteus_machine.jpg Oracle:Morph {0} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)\nWhen Proteus Machine is turned face up, it becomes the creature type of your choice. (This effect lasts indefinitely.) diff --git a/forge-gui/res/cardsfolder/p/proud_mentor.txt b/forge-gui/res/cardsfolder/p/proud_mentor.txt new file mode 100644 index 00000000000..035d5287494 --- /dev/null +++ b/forge-gui/res/cardsfolder/p/proud_mentor.txt @@ -0,0 +1,9 @@ +Name:Proud Mentor +ManaCost:2 W +Types:Creature Human Warrior +PT:1/1 +K:Partner:Impetuous Protege +A:AB$ Tap | Cost$ W T | ValidTgts$ Creature | TgtPrompt$ Select target creature | SpellDescription$ Tap target creature. +DeckHints:Name$Impetuous Protege +SVar:Picture:http://www.wizards.com/global/images/magic/general/proud_mentor.jpg +Oracle:Partner with Impetuous Protege (When this creature enters the battlefield, target player may put Impetuous Protege into their hand from their library, then shuffle.)\n{W}, {T}: Tap target creature. diff --git a/forge-gui/res/cardsfolder/p/prowling_pangolin.txt b/forge-gui/res/cardsfolder/p/prowling_pangolin.txt index 79cebf50905..a72623d9c1b 100644 --- a/forge-gui/res/cardsfolder/p/prowling_pangolin.txt +++ b/forge-gui/res/cardsfolder/p/prowling_pangolin.txt @@ -1,6 +1,6 @@ Name:Prowling Pangolin ManaCost:3 B B -Types:Creature Beast +Types:Creature Pangolin Beast PT:6/5 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Self | Execute$ TrigSac | TriggerDescription$ When CARDNAME enters the battlefield, any player may sacrifice two creatures. If a player does, sacrifice CARDNAME. SVar:TrigSac:DB$ Sacrifice | Defined$ Self | UnlessCost$ Sac<2/Creature> | UnlessPayer$ Player | UnlessSwitched$ True diff --git a/forge-gui/res/cardsfolder/p/psionic_blast.txt b/forge-gui/res/cardsfolder/p/psionic_blast.txt index f84f9fc3a2a..b268ea4a04d 100644 --- a/forge-gui/res/cardsfolder/p/psionic_blast.txt +++ b/forge-gui/res/cardsfolder/p/psionic_blast.txt @@ -1,7 +1,7 @@ Name:Psionic Blast ManaCost:2 U Types:Instant -A:SP$ DealDamage | Cost$ 2 U | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 4 | SubAbility$ DBDealDamage | SpellDescription$ CARDNAME deals 4 damage to target creature or player and 2 damage to you. +A:SP$ DealDamage | Cost$ 2 U | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 4 | SubAbility$ DBDealDamage | SpellDescription$ CARDNAME deals 4 damage to any target and 2 damage to you. SVar:DBDealDamage:DB$DealDamage | Defined$ You | NumDmg$ 2 SVar:Picture:http://resources.wizards.com/magic/cards/tsb/en-us/card108812.jpg -Oracle:Psionic Blast deals 4 damage to target creature or player and 2 damage to you. +Oracle:Psionic Blast deals 4 damage to any target and 2 damage to you. diff --git a/forge-gui/res/cardsfolder/p/psionic_entity.txt b/forge-gui/res/cardsfolder/p/psionic_entity.txt index 898aa57c97e..f4aceaad7a5 100644 --- a/forge-gui/res/cardsfolder/p/psionic_entity.txt +++ b/forge-gui/res/cardsfolder/p/psionic_entity.txt @@ -2,8 +2,8 @@ Name:Psionic Entity ManaCost:4 U Types:Creature Illusion PT:2/2 -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SubAbility$ DB1 | SpellDescription$ CARDNAME deals 2 damage to target creature or player and 3 damage to itself. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SubAbility$ DB1 | SpellDescription$ CARDNAME deals 2 damage to any target and 3 damage to itself. SVar:DB1:DB$DealDamage | NumDmg$ 3 | Defined$ Self SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/psionic_entity.jpg -Oracle:{T}: Psionic Entity deals 2 damage to target creature or player and 3 damage to itself. +Oracle:{T}: Psionic Entity deals 2 damage to any target and 3 damage to itself. diff --git a/forge-gui/res/cardsfolder/p/psionic_gift.txt b/forge-gui/res/cardsfolder/p/psionic_gift.txt index ac150d5dba0..139861ca204 100644 --- a/forge-gui/res/cardsfolder/p/psionic_gift.txt +++ b/forge-gui/res/cardsfolder/p/psionic_gift.txt @@ -3,8 +3,8 @@ ManaCost:1 U Types:Enchantment Aura K:Enchant creature A:SP$ Attach | Cost$ 1 U | ValidTgts$ Creature | AILogic$ Pump -S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddAbility$ Damage | Description$ Enchanted creature has "{T}: This creature deals 1 damage to target creature or player." -SVar:Damage:AB$DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddAbility$ Damage | Description$ Enchanted creature has "{T}: This creature deals 1 damage to any target." +SVar:Damage:AB$DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:NonStackingAttachEffect:True SVar:Picture:http://www.wizards.com/global/images/magic/general/psionic_gift.jpg -Oracle:Enchant creature\nEnchanted creature has "{T}: This creature deals 1 damage to target creature or player." +Oracle:Enchant creature\nEnchanted creature has "{T}: This creature deals 1 damage to any target." diff --git a/forge-gui/res/cardsfolder/p/psionic_sliver.txt b/forge-gui/res/cardsfolder/p/psionic_sliver.txt index 2d9f1ff6097..7ba8cb764f4 100644 --- a/forge-gui/res/cardsfolder/p/psionic_sliver.txt +++ b/forge-gui/res/cardsfolder/p/psionic_sliver.txt @@ -2,8 +2,8 @@ Name:Psionic Sliver ManaCost:4 U Types:Creature Sliver PT:2/2 -S:Mode$ Continuous | Affected$ Sliver | AddAbility$ DamageOther | AddSVar$ DBDamageSelf | Description$ All Sliver creatues have "{T}: This creature deals 2 damage to target creature or player and 3 damage to itself." -SVar:DamageOther:AB$DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SubAbility$ DBDamageSelf | SpellDescription$ This creature deals 2 damage to target creature or player and 3 damage to itself. +S:Mode$ Continuous | Affected$ Sliver | AddAbility$ DamageOther | AddSVar$ DBDamageSelf | Description$ All Sliver creatures have "{T}: This creature deals 2 damage to any target and 3 damage to itself." +SVar:DamageOther:AB$DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SubAbility$ DBDamageSelf | SpellDescription$ This creature deals 2 damage to any target and 3 damage to itself. SVar:DBDamageSelf:DB$DealDamage | NumDmg$ 3 | Defined$ Self SVar:Picture:http://www.wizards.com/global/images/magic/general/psionic_sliver.jpg -Oracle:All Sliver creatures have "{T}: This creature deals 2 damage to target creature or player and 3 damage to itself." +Oracle:All Sliver creatures have "{T}: This creature deals 2 damage to any target and 3 damage to itself." diff --git a/forge-gui/res/cardsfolder/p/psychic_corrosion.txt b/forge-gui/res/cardsfolder/p/psychic_corrosion.txt new file mode 100644 index 00000000000..48024fd8634 --- /dev/null +++ b/forge-gui/res/cardsfolder/p/psychic_corrosion.txt @@ -0,0 +1,6 @@ +Name:Psychic Corrosion +ManaCost:2 U +Types:Enchantment +T:Mode$ Drawn | ValidCard$ Card.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigMill | TriggerDescription$ Whenever you draw a card, each opponent puts the top two cards of their library into their graveyard. +SVar:TrigMill:DB$ Mill | Defined$ Opponent | NumCards$ 2 +Oracle:Whenever you draw a card, each opponent puts the top two cards of their library into their graveyard. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/p/psychic_purge.txt b/forge-gui/res/cardsfolder/p/psychic_purge.txt index 2a1d9b2e65c..5c494dab46d 100644 --- a/forge-gui/res/cardsfolder/p/psychic_purge.txt +++ b/forge-gui/res/cardsfolder/p/psychic_purge.txt @@ -1,9 +1,9 @@ Name:Psychic Purge ManaCost:U Types:Sorcery -A:SP$ DealDamage | Cost$ U | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:SP$ DealDamage | Cost$ U | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. T:Mode$ Discarded | ValidCard$ Card.Self | ValidCause$ Card.OppCtrl | Execute$ TrigLoseLife | TriggerDescription$ When a spell or ability an opponent controls causes you to discard CARDNAME, that player loses 5 life. SVar:TrigLoseLife:DB$ LoseLife | Defined$ TriggeredCauseController | LifeAmount$ 5 SVar:DiscardMeByOpp:3 SVar:Picture:http://www.wizards.com/global/images/magic/general/psychic_purge.jpg -Oracle:Psychic Purge deals 1 damage to target creature or player.\nWhen a spell or ability an opponent controls causes you to discard Psychic Purge, that player loses 5 life. +Oracle:Psychic Purge deals 1 damage to any target.\nWhen a spell or ability an opponent controls causes you to discard Psychic Purge, that player loses 5 life. diff --git a/forge-gui/res/cardsfolder/p/psychic_symbiont.txt b/forge-gui/res/cardsfolder/p/psychic_symbiont.txt new file mode 100644 index 00000000000..b7d594e112c --- /dev/null +++ b/forge-gui/res/cardsfolder/p/psychic_symbiont.txt @@ -0,0 +1,11 @@ +Name:Psychic Symbiont +ManaCost:4 U B +Types:Creature Nightmare Horror +PT:3/3 +K:Flying +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDrawDiscard | TriggerDescription$ When CARDNAME enters the battlefield, target opponent discards a card and you draw a card. +SVar:TrigDrawDiscard:DB$Draw | Defined$ You | NumCards$ 1 | SubAbility$ DBDiscard +SVar:DBDiscard:DB$Discard | ValidTgts$ Opponent | NumCards$ 1 | Mode$ TgtChoose +DeckHas:Ability$Discard +SVar:Picture:http://www.wizards.com/global/images/magic/general/Bloodhusk_Ritualist.jpg +Oracle:Flying\nWhen Psychic Symbiont enters the battlefield, target opponent discards a card and you draw a card. diff --git a/forge-gui/res/cardsfolder/p/pulse_of_the_forge.txt b/forge-gui/res/cardsfolder/p/pulse_of_the_forge.txt index 4511082cbe8..b565e48fe66 100644 --- a/forge-gui/res/cardsfolder/p/pulse_of_the_forge.txt +++ b/forge-gui/res/cardsfolder/p/pulse_of_the_forge.txt @@ -1,8 +1,8 @@ Name:Pulse of the Forge ManaCost:1 R R Types:Instant -A:SP$ DealDamage | Cost$ 1 R R | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 4 | SubAbility$ ReheatTheForge | SpellDescription$ CARDNAME deals 4 damage to target player. Then if that player has more life than you, return CARDNAME to its owner's hand. -SVar:ReheatTheForge:DB$ ChangeZone | ConditionLifeTotal$ You | ConditionLifeAmount$ LTX | References$ X | Defined$ Self | Origin$ Stack | Destination$ Hand | ConditionDescription$ If an opponent has more life than you, -SVar:X:Count$TargetedLifeTotal +A:SP$ DealDamage | Cost$ 1 R R | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 4 | SubAbility$ ReheatTheForge | SpellDescription$ CARDNAME deals 4 damage to target player or planeswalker. Then if that player or that planeswalker's controller has more life than you, return CARDNAME to its owner's hand. +SVar:ReheatTheForge:DB$ ChangeZone | ConditionLifeTotal$ TargetedOrController | ConditionLifeAmount$ GTX | References$ X | Defined$ Self | Origin$ Stack | Destination$ Hand | ConditionDescription$ If that player or that planeswalker's controller has more life than you, +SVar:X:Count$YourLifeTotal SVar:Picture:http://www.wizards.com/global/images/magic/general/pulse_of_the_forge.jpg -Oracle:Pulse of the Forge deals 4 damage to target player. Then if that player has more life than you, return Pulse of the Forge to its owner's hand. +Oracle:Pulse of the Forge deals 4 damage to target player or planeswalker. Then if that player or that planeswalker's controller has more life than you, return Pulse of the Forge to its owner's hand. diff --git a/forge-gui/res/cardsfolder/p/puncture_blast.txt b/forge-gui/res/cardsfolder/p/puncture_blast.txt index 59933b019c2..44f5bc27523 100644 --- a/forge-gui/res/cardsfolder/p/puncture_blast.txt +++ b/forge-gui/res/cardsfolder/p/puncture_blast.txt @@ -2,6 +2,6 @@ Name:Puncture Blast ManaCost:2 R Types:Instant K:Wither -A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ Puncture Blast deals 3 damage to target creature or player. +A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ Puncture Blast deals 3 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/puncture_blast.jpg -Oracle:Wither (This deals damage to creatures in the form of -1/-1 counters.)\nPuncture Blast deals 3 damage to target creature or player. +Oracle:Wither (This deals damage to creatures in the form of -1/-1 counters.)\nPuncture Blast deals 3 damage to any target. diff --git a/forge-gui/res/cardsfolder/p/punish_the_enemy.txt b/forge-gui/res/cardsfolder/p/punish_the_enemy.txt index d194b34f459..13366676837 100644 --- a/forge-gui/res/cardsfolder/p/punish_the_enemy.txt +++ b/forge-gui/res/cardsfolder/p/punish_the_enemy.txt @@ -1,7 +1,8 @@ Name:Punish the Enemy ManaCost:4 R Types:Instant -A:SP$ DealDamage | Cost$ 4 R | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 3 | SubAbility$ DB1 | SpellDescription$ CARDNAME deals 3 damage to target player and 3 damage to target creature. -SVar:DB1:DB$ DealDamage | NumDmg$ 3 | ValidTgts$ Player | TgtPrompt$ Select target player +A:SP$ DealDamage | Cost$ 4 R | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 3 | DamageMap$ True | SubAbility$ DB1 | SpellDescription$ CARDNAME deals 3 damage to target player or planeswalker and 3 damage to target creature. +SVar:DB1:DB$ DealDamage | NumDmg$ 3 | ValidTgts$ Creature | TgtPrompt$ Select target creature | SubAbility$ DBDamageResolve +SVar:DBDamageResolve:DB$ DamageResolve SVar:Picture:http://www.wizards.com/global/images/magic/general/punish_the_enemy.jpg -Oracle:Punish the Enemy deals 3 damage to target player and 3 damage to target creature. +Oracle:Punish the Enemy deals 3 damage to target player or planeswalker and 3 damage to target creature. diff --git a/forge-gui/res/cardsfolder/p/punishing_fire.txt b/forge-gui/res/cardsfolder/p/punishing_fire.txt index 6e0dd64e4ba..b4e4ea1ee26 100644 --- a/forge-gui/res/cardsfolder/p/punishing_fire.txt +++ b/forge-gui/res/cardsfolder/p/punishing_fire.txt @@ -1,8 +1,8 @@ Name:Punishing Fire ManaCost:1 R Types:Instant -A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. T:Mode$ LifeGained | ValidPlayer$ Opponent | TriggerZones$ Graveyard | OptionalDecider$ You | Execute$ TrigChange | TriggerDescription$ Whenever an opponent gains life, you may pay {R}. If you do, return CARDNAME from your graveyard to your hand. SVar:TrigChange:AB$ChangeZone | Cost$ R | Origin$ Graveyard | Destination$ Hand SVar:Picture:http://www.wizards.com/global/images/magic/general/punishing_fire.jpg -Oracle:Punishing Fire deals 2 damage to target creature or player.\nWhenever an opponent gains life, you may pay {R}. If you do, return Punishing Fire from your graveyard to your hand. +Oracle:Punishing Fire deals 2 damage to any target.\nWhenever an opponent gains life, you may pay {R}. If you do, return Punishing Fire from your graveyard to your hand. diff --git a/forge-gui/res/cardsfolder/p/purify_the_grave.txt b/forge-gui/res/cardsfolder/p/purify_the_grave.txt index 30fe0e573a8..8cf43eab65f 100644 --- a/forge-gui/res/cardsfolder/p/purify_the_grave.txt +++ b/forge-gui/res/cardsfolder/p/purify_the_grave.txt @@ -1,7 +1,7 @@ Name:Purify the Grave ManaCost:W Types:Instant -K:Flashback W +K:Flashback:W A:SP$ ChangeZone | Cost$ W | ValidTgts$ Card | TgtPrompt$ Select card to exile | Origin$ Graveyard | Destination$ Exile | SpellDescription$ Exile target card from a graveyard. SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/purify_the_grave.jpg diff --git a/forge-gui/res/cardsfolder/p/purple_crystal_crab.txt b/forge-gui/res/cardsfolder/p/purple_crystal_crab.txt new file mode 100644 index 00000000000..1c8776a0ad2 --- /dev/null +++ b/forge-gui/res/cardsfolder/p/purple_crystal_crab.txt @@ -0,0 +1,8 @@ +Name:Purple-Crystal Crab +ManaCost:1 U +Types:Creature Crab +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, draw a card. +SVar:TrigDraw:DB$ Draw | NumCards$ 1 | Defined$ TriggeredCardController +SVar:SacMe:1 +Oracle:When Purple-Crystal Crab dies, draw a card. +PT:1/1 diff --git a/forge-gui/res/cardsfolder/p/pyre_zombie.txt b/forge-gui/res/cardsfolder/p/pyre_zombie.txt index eaf9c30333d..eb836983feb 100644 --- a/forge-gui/res/cardsfolder/p/pyre_zombie.txt +++ b/forge-gui/res/cardsfolder/p/pyre_zombie.txt @@ -2,11 +2,11 @@ Name:Pyre Zombie ManaCost:1 B R Types:Creature Zombie PT:2/1 -A:AB$ DealDamage | Cost$ 1 R R Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:AB$ DealDamage | Cost$ 1 R R Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. #The IsPresent stuff in the trigger is necessary because it must be checked on resolve as well. -T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | IsPresent$ Card.Self | PresentZone$ Graveyard | PresentPlayer$ You | TriggerZones$ Graveyard | OptionalDecider$ You | Execute$ TrigReturn | TriggerDescription$ At the beginning of your upkeep, if CARDNAME is in your graveyard, you may pay {1}{B}{B}. If you do, return CARDNAME to your hand. +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | IsPresent$ Card.StrictlySelf | PresentZone$ Graveyard | PresentPlayer$ You | TriggerZones$ Graveyard | OptionalDecider$ You | Execute$ TrigReturn | TriggerDescription$ At the beginning of your upkeep, if CARDNAME is in your graveyard, you may pay {1}{B}{B}. If you do, return CARDNAME to your hand. SVar:TrigReturn:AB$ChangeZone | Cost$ 1 B B | Defined$ Self | Origin$ Graveyard | Destination$ Hand SVar:SacMe:2 SVar:DiscardMe:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/pyre_zombie.jpg -Oracle:At the beginning of your upkeep, if Pyre Zombie is in your graveyard, you may pay {1}{B}{B}. If you do, return Pyre Zombie to your hand.\n{1}{R}{R}, Sacrifice Pyre Zombie: Pyre Zombie deals 2 damage to target creature or player. +Oracle:At the beginning of your upkeep, if Pyre Zombie is in your graveyard, you may pay {1}{B}{B}. If you do, return Pyre Zombie to your hand.\n{1}{R}{R}, Sacrifice Pyre Zombie: Pyre Zombie deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/p/pyrewild_shaman.txt b/forge-gui/res/cardsfolder/p/pyrewild_shaman.txt index 2ec91ad6d1f..0f6bdc44833 100644 --- a/forge-gui/res/cardsfolder/p/pyrewild_shaman.txt +++ b/forge-gui/res/cardsfolder/p/pyrewild_shaman.txt @@ -3,7 +3,7 @@ ManaCost:2 R Types:Creature Goblin Shaman PT:3/1 A:AB$ Pump | Cost$ 1 R Discard<1/CARDNAME> | ActivationZone$ Hand | PrecostDesc$ Bloodrush — | ValidTgts$ Creature.attacking | TgtPrompt$ Select target attacking creature | NumAtt$ +3 | NumDef$ +1 | SpellDescription$ Target attacking creature gets +3/+1 until end of turn. -T:Mode$ DamageDoneOnce | CombatDamage$ True | ValidSource$ Creature.YouCtrl | TriggerZones$ Graveyard | ValidTarget$ Player | Execute$ TrigChange | TriggerDescription$ Whenever one or more creatures you control deal combat damage to a player, you may pay {3}. If you do, return CARDNAME from your graveyard to your hand. +T:Mode$ DamageDoneOnce | CombatDamage$ True | ValidSource$ Creature.YouCtrl | TriggerZones$ Graveyard | ValidTarget$ Player | Execute$ TrigChange | IsPresent$ Card.StrictlySelf | PresentZone$ Graveyard | PresentPlayer$ You | TriggerDescription$ Whenever one or more creatures you control deal combat damage to a player, you may pay {3}. If you do, return CARDNAME to your hand. SVar:TrigChange:AB$ ChangeZone | Cost$ 3 | Origin$ Graveyard | Destination$ Hand SVar:Picture:http://www.wizards.com/global/images/magic/general/pyrewild_shaman.jpg Oracle:Bloodrush — {1}{R}, Discard Pyrewild Shaman: Target attacking creature gets +3/+1 until end of turn.\nWhenever one or more creatures you control deal combat damage to a player, if Pyrewild Shaman is in your graveyard, you may pay {3}. If you do, return Pyrewild Shaman to your hand. diff --git a/forge-gui/res/cardsfolder/p/pyroconvergence.txt b/forge-gui/res/cardsfolder/p/pyroconvergence.txt index b5490a8c54b..1e8be5d6455 100644 --- a/forge-gui/res/cardsfolder/p/pyroconvergence.txt +++ b/forge-gui/res/cardsfolder/p/pyroconvergence.txt @@ -1,9 +1,9 @@ Name:Pyroconvergence ManaCost:4 R Types:Enchantment -T:Mode$ SpellCast | ValidCard$ Card.MultiColor | ValidActivatingPlayer$ You | Execute$ TrigDamage | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast a multicolored spell, CARDNAME deals 2 damage to target creature or player. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 +T:Mode$ SpellCast | ValidCard$ Card.MultiColor | ValidActivatingPlayer$ You | Execute$ TrigDamage | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast a multicolored spell, CARDNAME deals 2 damage to any target. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 SVar:BuffedBy:Card.MultiColor SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/pyroconvergence.jpg -Oracle:Whenever you cast a multicolored spell, Pyroconvergence deals 2 damage to target creature or player. +Oracle:Whenever you cast a multicolored spell, Pyroconvergence deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/p/pyromancers_assault.txt b/forge-gui/res/cardsfolder/p/pyromancers_assault.txt index a0adbbfb2a8..ea3107d67b6 100644 --- a/forge-gui/res/cardsfolder/p/pyromancers_assault.txt +++ b/forge-gui/res/cardsfolder/p/pyromancers_assault.txt @@ -1,9 +1,9 @@ Name:Pyromancer's Assault ManaCost:3 R Types:Enchantment -T:Mode$ SpellCast | ValidCard$ Card.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDamage | CheckSVar$ YouCastThisTurn | SVarCompare$ EQ2 | NoResolvingCheck$ True | TriggerDescription$ Whenever you cast your second spell each turn, CARDNAME deals 2 damage to target creature of player. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 +T:Mode$ SpellCast | ValidCard$ Card.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDamage | CheckSVar$ YouCastThisTurn | SVarCompare$ EQ2 | NoResolvingCheck$ True | TriggerDescription$ Whenever you cast your second spell each turn, CARDNAME deals 2 damage to any target. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 SVar:YouCastThisTurn:Count$ThisTurnCast_Card.YouCtrl SVar:BuffedBy:Card SVar:Picture:http://www.wizards.com/global/images/magic/general/pyromancers_assault.jpg -Oracle:Whenever you cast your second spell each turn, Pyromancer's Assault deals 2 damage to target creature of player. +Oracle:Whenever you cast your second spell each turn, Pyromancer's Assault deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/p/pyromancers_swath.txt b/forge-gui/res/cardsfolder/p/pyromancers_swath.txt index 4bc5d42a75d..e5afc76da18 100644 --- a/forge-gui/res/cardsfolder/p/pyromancers_swath.txt +++ b/forge-gui/res/cardsfolder/p/pyromancers_swath.txt @@ -1,11 +1,11 @@ Name:Pyromancer's Swath ManaCost:2 R Types:Enchantment -R:Event$ DamageDone | ActiveZones$ Battlefield | ValidSource$ Instant.YouCtrl,Sorcery.YouCtrl | ValidTarget$ Creature,Player | ReplaceWith$ DmgPlus2 | Description$ If an instant or sorcery source you control would deal damage to a creature or player, it deals that much damage plus 2 to that creature or player instead. +R:Event$ DamageDone | ActiveZones$ Battlefield | ValidSource$ Instant.YouCtrl,Sorcery.YouCtrl | ValidTarget$ Permanent,Player | ReplaceWith$ DmgPlus2 | Description$ If an instant or sorcery source you control would deal damage to a permanent or player, it deals that much damage plus 2 to that permanent or player instead. SVar:DmgPlus2:DB$ ReplaceEffect | VarName$ DamageAmount | VarValue$ X | References$ X SVar:X:ReplaceCount$DamageAmount/Plus.2 T:Mode$ Phase | Phase$ End of Turn | TriggerZones$ Battlefield | Execute$ TrigDiscard | TriggerDescription$ At the beginning of each end step, discard your hand. SVar:TrigDiscard:DB$Discard | Mode$ Hand SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/pyromancers_swath.jpg -Oracle:If an instant or sorcery source you control would deal damage to a creature or player, it deals that much damage plus 2 to that creature or player instead.\nAt the beginning of each end step, discard your hand. +Oracle:If an instant or sorcery source you control would deal damage to a permanent or player, it deals that much damage plus 2 to that permanent or player instead.\nAt the beginning of each end step, discard your hand. diff --git a/forge-gui/res/cardsfolder/p/pyromancy.txt b/forge-gui/res/cardsfolder/p/pyromancy.txt index cbd22af9433..2cb50fc0296 100644 --- a/forge-gui/res/cardsfolder/p/pyromancy.txt +++ b/forge-gui/res/cardsfolder/p/pyromancy.txt @@ -1,9 +1,9 @@ Name:Pyromancy ManaCost:2 R R Types:Enchantment -A:AB$ DealDamage | Cost$ 3 Discard<1/Random> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage to target creature or player equal to the converted mana cost of the discarded card. +A:AB$ DealDamage | Cost$ 3 Discard<1/Random> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage to any target equal to the converted mana cost of the discarded card. SVar:X:Discarded$CardManaCost SVar:RemAIDeck:True SVar:NonStackingEffect:True SVar:Picture:http://www.wizards.com/global/images/magic/general/pyromancy.jpg -Oracle:{3}, Discard a card at random: Pyromancy deals damage to target creature or player equal to the converted mana cost of the discarded card. +Oracle:{3}, Discard a card at random: Pyromancy deals damage to any target equal to the converted mana cost of the discarded card. diff --git a/forge-gui/res/cardsfolder/p/pyromania.txt b/forge-gui/res/cardsfolder/p/pyromania.txt index 800ce66c213..d990dc976bb 100644 --- a/forge-gui/res/cardsfolder/p/pyromania.txt +++ b/forge-gui/res/cardsfolder/p/pyromania.txt @@ -1,8 +1,8 @@ Name:Pyromania ManaCost:2 R Types:Enchantment -A:AB$ DealDamage | Cost$ 1 R Discard<1/Random> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. -A:AB$ DealDamage | Cost$ 1 R Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ 1 R Discard<1/Random> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. +A:AB$ DealDamage | Cost$ 1 R Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/pyromania.jpg -Oracle:{1}{R}, Discard a card at random: Pyromania deals 1 damage to target creature or player.\n{1}{R}, Sacrifice Pyromania: Pyromania deals 1 damage to target creature or player. +Oracle:{1}{R}, Discard a card at random: Pyromania deals 1 damage to any target.\n{1}{R}, Sacrifice Pyromania: Pyromania deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/p/pyromatics.txt b/forge-gui/res/cardsfolder/p/pyromatics.txt index d17dda55321..ff358d5d936 100644 --- a/forge-gui/res/cardsfolder/p/pyromatics.txt +++ b/forge-gui/res/cardsfolder/p/pyromatics.txt @@ -1,7 +1,7 @@ Name:Pyromatics ManaCost:1 R Types:Instant -K:Replicate 1 R -A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +K:Replicate:1 R +A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/pyromatics.jpg -Oracle:Replicate {1}{R} (When you cast this spell, copy it for each time you paid its replicate cost. You may choose new targets for the copies.)\nPyromatics deals 1 damage to target creature or player. +Oracle:Replicate {1}{R} (When you cast this spell, copy it for each time you paid its replicate cost. You may choose new targets for the copies.)\nPyromatics deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/p/pyrotechnics.txt b/forge-gui/res/cardsfolder/p/pyrotechnics.txt index 1cb5d96f77e..20e7aebd180 100644 --- a/forge-gui/res/cardsfolder/p/pyrotechnics.txt +++ b/forge-gui/res/cardsfolder/p/pyrotechnics.txt @@ -1,6 +1,6 @@ Name:Pyrotechnics ManaCost:4 R Types:Sorcery -A:SP$ DealDamage | Cost$ 4 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to distribute damage to | NumDmg$ 4 | TargetMin$ 1 | TargetMax$ 4 | DividedAsYouChoose$ 4 | SpellDescription$ CARDNAME deals 4 damage divided as you choose among any number of target creatures and/or players. +A:SP$ DealDamage | Cost$ 4 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select target any target to distribute damage to | NumDmg$ 4 | TargetMin$ 1 | TargetMax$ 4 | DividedAsYouChoose$ 4 | SpellDescription$ CARDNAME deals 4 damage divided as you choose among any number of targets. SVar:Picture:http://www.wizards.com/global/images/magic/general/pyrotechnics.jpg -Oracle:Pyrotechnics deals 4 damage divided as you choose among any number of target creatures and/or players. +Oracle:Pyrotechnics deals 4 damage divided as you choose among any number of targets. diff --git a/forge-gui/res/cardsfolder/q/qilins_blessing.txt b/forge-gui/res/cardsfolder/q/qilins_blessing.txt new file mode 100644 index 00000000000..8c585563aa8 --- /dev/null +++ b/forge-gui/res/cardsfolder/q/qilins_blessing.txt @@ -0,0 +1,5 @@ +Name:Qilin's Blessing +ManaCost:W +Types:Instant +A:SP$ Pump | Cost$ W | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +2 | NumDef$ +2 | SpellDescription$ Target creature gets +2/+2 until end of turn. +Oracle:Target creature gets +2/+2 until end of turn. diff --git a/forge-gui/res/cardsfolder/q/quest_for_pure_flame.txt b/forge-gui/res/cardsfolder/q/quest_for_pure_flame.txt index b852d103fda..1f3035df4a2 100644 --- a/forge-gui/res/cardsfolder/q/quest_for_pure_flame.txt +++ b/forge-gui/res/cardsfolder/q/quest_for_pure_flame.txt @@ -3,8 +3,8 @@ ManaCost:R Types:Enchantment T:Mode$ DamageDone | ValidSource$ Card.YouCtrl | ValidTarget$ Opponent | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigPutCounter | TriggerDescription$ Whenever a source you control deals damage to an opponent, you may put a quest counter on CARDNAME. SVar:TrigPutCounter:DB$PutCounter | Defined$ Self | CounterType$ QUEST | CounterNum$ 1 -A:AB$ Effect | Name$ Pure Flame Effect | Cost$ SubCounter<4/QUEST> Sac<1/CARDNAME> | ReplacementEffects$ DamageEvent | SVars$ DmgTwice,X | References$ DamageEvent,DmgTwice,X | SpellDescription$ If any source you control would deal damage to a creature or player this turn, it deals double that damage to that creature or player instead. -SVar:DamageEvent:Event$ DamageDone | ValidSource$ Card.YouCtrl,Emblem.YouCtrl | ValidTarget$ Creature,Player | ReplaceWith$ DmgTwice | Description$ If any source you control would deal damage to a creature or player this turn, it deals double that damage to that creature or player instead. +A:AB$ Effect | Name$ Pure Flame Effect | Cost$ SubCounter<4/QUEST> Sac<1/CARDNAME> | ReplacementEffects$ DamageEvent | SVars$ DmgTwice,X | References$ DamageEvent,DmgTwice,X | SpellDescription$ If any source you control would deal damage to a permanent or player this turn, it deals double that damage to that permanent or player instead. +SVar:DamageEvent:Event$ DamageDone | ValidSource$ Card.YouCtrl,Emblem.YouCtrl | ValidTarget$ Permanent,Player | ReplaceWith$ DmgTwice | Description$ If any source you control would deal damage to a permanent or player this turn, it deals double that damage to that permanent or player instead. SVar:DmgTwice:DB$ ReplaceEffect | VarName$ DamageAmount | VarValue$ X | References$ X SVar:X:ReplaceCount$DamageAmount/Twice SVar:PlayMain1:TRUE @@ -12,4 +12,4 @@ SVar:RemAIDeck:True DeckHas:Ability$Counters SVar:MaxQuestEffect:4 SVar:Picture:http://www.wizards.com/global/images/magic/general/quest_for_pure_flame.jpg -Oracle:Whenever a source you control deals damage to an opponent, you may put a quest counter on Quest for Pure Flame.\nRemove four quest counters from Quest for Pure Flame and sacrifice it: If any source you control would deal damage to a creature or player this turn, it deals double that damage to that creature or player instead. +Oracle:Whenever a source you control deals damage to an opponent, you may put a quest counter on Quest for Pure Flame.\nRemove four quest counters from Quest for Pure Flame and sacrifice it: If any source you control would deal damage to a permanent or player this turn, it deals double that damage to that permanent or player instead. diff --git a/forge-gui/res/cardsfolder/q/quickening_licid.txt b/forge-gui/res/cardsfolder/q/quickening_licid.txt index d0aadc4dede..8f63209701c 100644 --- a/forge-gui/res/cardsfolder/q/quickening_licid.txt +++ b/forge-gui/res/cardsfolder/q/quickening_licid.txt @@ -2,7 +2,7 @@ Name:Quickening Licid ManaCost:1 W Types:Creature Licid PT:1/1 -A:AB$ Animate | Cost$ W T | Defined$ Self | RemoveThisAbility$ True | Permanent$ True | RevertCost$ W | Keywords$ Enchant creature | Abilities$ SPAttach | Types$ Enchantment,Aura | RemoveCardTypes$ True | RemoveSubTypes$ True | SubAbility$ DBAttach | SpellDescription$ CARDNAME loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {W} to end this effect. +A:AB$ Animate | Cost$ W T | Defined$ Self | RemoveThisAbility$ True | Permanent$ True | RevertCost$ W | Keywords$ Enchant creature | Abilities$ SPAttach | Types$ Enchantment,Aura | RemoveCardTypes$ True | RemoveEnchantmentTypes$ True | SubAbility$ DBAttach | SpellDescription$ CARDNAME loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {W} to end this effect. SVar:DBAttach:DB$ Attach | ValidTgts$ Creature | AILogic$ Pump SVar:SPAttach:SP$ Attach | Cost$ 0 | ValidTgts$ Creature S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ First Strike | Description$ Enchanted creature has first strike. diff --git a/forge-gui/res/cardsfolder/q/quicksilver_dagger.txt b/forge-gui/res/cardsfolder/q/quicksilver_dagger.txt index 3812e3cdcbd..0f83fe79bd8 100644 --- a/forge-gui/res/cardsfolder/q/quicksilver_dagger.txt +++ b/forge-gui/res/cardsfolder/q/quicksilver_dagger.txt @@ -3,9 +3,9 @@ ManaCost:1 U R Types:Enchantment Aura K:Enchant creature A:SP$ Attach | Cost$ 1 U R | ValidTgts$ Creature | AILogic$ Pump -S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddAbility$ Damage | AddSVar$ QuicksilverDraw | Description$ Enchanted creature has "{T}: This creature deals 1 damage to target player. You draw a card." -SVar:Damage:AB$DealDamage | Cost$ T | ValidTgts$ Player | TgtPrompt$ Select a player | NumDmg$ 1 | SubAbility$ QuicksilverDraw | SpellDescription$ CARDNAME deals 1 damage to target player. +S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddAbility$ Damage | AddSVar$ QuicksilverDraw | Description$ Enchanted creature has "{T}: This creature deals 1 damage to target player or planeswalker. You draw a card." +SVar:Damage:AB$DealDamage | Cost$ T | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 | SubAbility$ QuicksilverDraw | SpellDescription$ CARDNAME deals 1 damage to target player or planeswalker. SVar:QuicksilverDraw:DB$Draw | NumCards$ 1 | Defined$ You | SpellDescription$ Draw a card. SVar:NonStackingAttachEffect:True SVar:Picture:http://www.wizards.com/global/images/magic/general/quicksilver_dagger.jpg -Oracle:Enchant creature\nEnchanted creature has "{T}: This creature deals 1 damage to target player. You draw a card." +Oracle:Enchant creature\nEnchanted creature has "{T}: This creature deals 1 damage to target player or planeswalker. You draw a card." diff --git a/forge-gui/res/cardsfolder/q/quicksilver_fountain.txt b/forge-gui/res/cardsfolder/q/quicksilver_fountain.txt index 47337221cfb..fa55c5d3dac 100644 --- a/forge-gui/res/cardsfolder/q/quicksilver_fountain.txt +++ b/forge-gui/res/cardsfolder/q/quicksilver_fountain.txt @@ -4,7 +4,7 @@ Types:Artifact T:Mode$ Phase | Phase$ Upkeep | Execute$ TrigPutCounter | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of each player's upkeep, that player puts a flood counter on target non-Island land they control of their choice. That land is an Island for as long as it has a flood counter on it. SVar:TrigPutCounter:DB$ PutCounter | TargetingPlayer$ TriggeredPlayer | ValidTgts$ Land.nonIsland+ActivePlayerCtrl | TgtPrompt$ Select target non-Island land you control | CounterType$ FLOOD | CounterNum$ 1 | SubAbility$ DBAnimate SVar:DBAnimate:DB$ Animate | Defined$ Targeted | staticAbilities$ STFlood | Permanent$ True -SVar:STFlood:Mode$ Continuous | EffectZone$ Battlefield | Affected$ Card.Self+counters_GE1_FLOOD | AddType$ Island | RemoveSubTypes$ True | RemoveAllAbilities$ True +SVar:STFlood:Mode$ Continuous | EffectZone$ Battlefield | Affected$ Card.Self+counters_GE1_FLOOD | AddType$ Island | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True T:Mode$ Phase | Phase$ End of Turn | CheckSVar$ X | SVarCompare$ EQ0 | TriggerZones$ Battlefield | Execute$ TrigRemoveAll | References$ X | TriggerDescription$ At the beginning of each end step, if all lands on the battlefield are Islands, remove all flood counters from them. SVar:TrigRemoveAll:DB$ RemoveCounterAll | ValidCards$ Land | CounterType$ FLOOD | AllCounters$ True SVar:X:Count$Valid Land.nonIsland diff --git a/forge-gui/res/cardsfolder/q/quicksmith_rebel.txt b/forge-gui/res/cardsfolder/q/quicksmith_rebel.txt index 73936aa9e2d..625b28d8177 100644 --- a/forge-gui/res/cardsfolder/q/quicksmith_rebel.txt +++ b/forge-gui/res/cardsfolder/q/quicksmith_rebel.txt @@ -2,9 +2,9 @@ Name:Quicksmith Rebel ManaCost:3 R Types:Creature Human Artificer PT:3/2 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigAnimate | TriggerDescription$ When CARDNAME enters the battlefield, target artifact you control gains "{T}: This artifact deals 2 damage to target creature or player" for as long as you control CARDNAME. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigAnimate | TriggerDescription$ When CARDNAME enters the battlefield, target artifact you control gains "{T}: This artifact deals 2 damage to any target" for as long as you control CARDNAME. SVar:TrigAnimate:DB$ Animate | ValidTgts$ Artifact.YouCtrl | TgtPrompt$ Select target artifact you control | Abilities$ ABDealDamage | UntilLoseControlOfHost$ True -SVar:ABDealDamage:AB$DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +SVar:ABDealDamage:AB$DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:PlayMain1:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/quicksmith_rebel.jpg -Oracle:When Quicksmith Rebel enters the battlefield, target artifact you control gains "{T}: This artifact deals 2 damage to target creature or player" for as long as you control Quicksmith Rebel. +Oracle:When Quicksmith Rebel enters the battlefield, target artifact you control gains "{T}: This artifact deals 2 damage to any target" for as long as you control Quicksmith Rebel. diff --git a/forge-gui/res/cardsfolder/r/radiating_lightning.txt b/forge-gui/res/cardsfolder/r/radiating_lightning.txt index 6ace47fec7d..fd1440d7077 100644 --- a/forge-gui/res/cardsfolder/r/radiating_lightning.txt +++ b/forge-gui/res/cardsfolder/r/radiating_lightning.txt @@ -1,6 +1,7 @@ Name:Radiating Lightning ManaCost:3 R Types:Instant -A:SP$ DealDamage | Cost$ 3 R | ValidTgts$ Player | NumDmg$ 3 | SubAbility$ DmgAll | SpellDescription$ CARDNAME deals 3 damage to target player and 1 damage to each creature that player controls. -SVar:DmgAll:DB$ DamageAll | NumDmg$ 1 | ValidCards$ Creature.TargetedPlayerCtrl +A:SP$ DealDamage | Cost$ 3 R | ValidTgts$ Player | NumDmg$ 3 | SubAbility$ DmgAll | DamageMap$ True | SpellDescription$ CARDNAME deals 3 damage to target player and 1 damage to each creature that player controls. +SVar:DmgAll:DB$ DamageAll | NumDmg$ 1 | ValidCards$ Creature.TargetedPlayerCtrl | SubAbility$ DBDamageResolve +SVar:DBDamageResolve:DB$ DamageResolve Oracle:Radiating Lightning deals 3 damage to target player and 1 damage to each creature that player controls. diff --git a/forge-gui/res/cardsfolder/r/rage_extractor.txt b/forge-gui/res/cardsfolder/r/rage_extractor.txt index 32ffc7b60ef..b24e21a83e6 100644 --- a/forge-gui/res/cardsfolder/r/rage_extractor.txt +++ b/forge-gui/res/cardsfolder/r/rage_extractor.txt @@ -1,10 +1,10 @@ Name:Rage Extractor ManaCost:4 PR Types:Artifact -T:Mode$ SpellCast | ValidCard$ Card.CostsPhyrexianMana | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever you cast a spell with {P} in its mana cost, CARDNAME deals damage equal to that spell's converted mana cost to target creature or player. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X +T:Mode$ SpellCast | ValidCard$ Card.CostsPhyrexianMana | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever you cast a spell with {P} in its mana cost, CARDNAME deals damage equal to that spell's converted mana cost to any target. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X SVar:X:TriggerCount$CastSACMC SVar:BuffedBy:Card.CostsPhyrexianMana SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/rage_extractor.jpg -Oracle:({P/R} can be paid with either {R} or 2 life.)\nWhenever you cast a spell with {P} in its mana cost, Rage Extractor deals damage equal to that spell's converted mana cost to target creature or player. +Oracle:({P/R} can be paid with either {R} or 2 life.)\nWhenever you cast a spell with {P} in its mana cost, Rage Extractor deals damage equal to that spell's converted mana cost to any target. diff --git a/forge-gui/res/cardsfolder/r/rage_forger.txt b/forge-gui/res/cardsfolder/r/rage_forger.txt index 7f0a40dc910..389d583f76d 100644 --- a/forge-gui/res/cardsfolder/r/rage_forger.txt +++ b/forge-gui/res/cardsfolder/r/rage_forger.txt @@ -4,7 +4,7 @@ Types:Creature Elemental Shaman PT:2/2 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPutCounters | TriggerDescription$ When CARDNAME enters the battlefield, put a +1/+1 counter each other Shaman creature you control. SVar:TrigPutCounters:DB$PutCounterAll | ValidCards$ Creature.Shaman+Other+YouCtrl | CounterType$ P1P1 | CounterNum$ 1 -T:Mode$ Attacks | ValidCard$ Creature.YouCtrl+counters_GE1_P1P1 | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever a creature you control with a +1/+1 counter on it attacks, you may have that creature deal 1 damage to target player. -SVar:TrigDamage:DB$DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | TgtPrompt$ Select target player | NumDmg$ 1 | DamageSource$ TriggeredAttacker +T:Mode$ Attacks | ValidCard$ Creature.YouCtrl+counters_GE1_P1P1 | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever a creature you control with a +1/+1 counter on it attacks, you may have that creature deal 1 damage to target player or planeswalker. +SVar:TrigDamage:DB$DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 | DamageSource$ TriggeredAttacker SVar:Picture:http://www.wizards.com/global/images/magic/general/rage_forger.jpg -Oracle:When Rage Forger enters the battlefield, put a +1/+1 counter on each other Shaman creature you control.\nWhenever a creature you control with a +1/+1 counter on it attacks, you may have that creature deal 1 damage to target player. +Oracle:When Rage Forger enters the battlefield, put a +1/+1 counter on each other Shaman creature you control.\nWhenever a creature you control with a +1/+1 counter on it attacks, you may have that creature deal 1 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/r/rage_thrower.txt b/forge-gui/res/cardsfolder/r/rage_thrower.txt index a384093832c..8366821a05a 100644 --- a/forge-gui/res/cardsfolder/r/rage_thrower.txt +++ b/forge-gui/res/cardsfolder/r/rage_thrower.txt @@ -2,7 +2,7 @@ Name:Rage Thrower ManaCost:5 R Types:Creature Human Shaman PT:4/2 -T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.Other | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever another creature dies, CARDNAME deals 2 damage to target player. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 2 +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.Other | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever another creature dies, CARDNAME deals 2 damage to target player or planeswalker. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 2 SVar:Picture:http://www.wizards.com/global/images/magic/general/rage_thrower.jpg -Oracle:Whenever another creature dies, Rage Thrower deals 2 damage to target player. +Oracle:Whenever another creature dies, Rage Thrower deals 2 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/r/raging_regisaur.txt b/forge-gui/res/cardsfolder/r/raging_regisaur.txt index a32f691aa79..21fadb4847e 100644 --- a/forge-gui/res/cardsfolder/r/raging_regisaur.txt +++ b/forge-gui/res/cardsfolder/r/raging_regisaur.txt @@ -2,7 +2,7 @@ Name:Raging Regisaur ManaCost:2 R G Types:Creature Dinosaur PT:4/4 -T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ Whenever CARDNAME attacks, it deals 1 damage to target creature or player. -SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ Whenever CARDNAME attacks, it deals 1 damage to any target. +SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/raging_regisaur.jpg -Oracle:Whenever Raging Regisaur attacks, it deals 1 damage to target creature or player. \ No newline at end of file +Oracle:Whenever Raging Regisaur attacks, it deals 1 damage to any target. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/r/raka_disciple.txt b/forge-gui/res/cardsfolder/r/raka_disciple.txt index 92f7444b424..e6a5b60a66e 100644 --- a/forge-gui/res/cardsfolder/r/raka_disciple.txt +++ b/forge-gui/res/cardsfolder/r/raka_disciple.txt @@ -2,7 +2,7 @@ Name:Raka Disciple ManaCost:R Types:Creature Minotaur Wizard PT:1/1 -A:AB$ PreventDamage | Cost$ W T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ W T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to any target this turn. A:AB$ Pump | Cost$ U T | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ Flying | SpellDescription$ Target creature gains flying until end of turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/raka_disciple.jpg -Oracle:{W}, {T}: Prevent the next 1 damage that would be dealt to target creature or player this turn.\n{U}, {T}: Target creature gains flying until end of turn. +Oracle:{W}, {T}: Prevent the next 1 damage that would be dealt to any target this turn.\n{U}, {T}: Target creature gains flying until end of turn. diff --git a/forge-gui/res/cardsfolder/r/rakalite.txt b/forge-gui/res/cardsfolder/r/rakalite.txt index 81c0a878e70..8e1d9e859cd 100644 --- a/forge-gui/res/cardsfolder/r/rakalite.txt +++ b/forge-gui/res/cardsfolder/r/rakalite.txt @@ -1,9 +1,9 @@ Name:Rakalite ManaCost:6 Types:Artifact -A:AB$ PreventDamage | Cost$ 2 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 1 | SubAbility$ DBReturn | SpellDescription$ Prevent the next 1 damage that would be dealt to target creature or player this turn. Return CARDNAME to its owner's hand at the beginning of the next end step. +A:AB$ PreventDamage | Cost$ 2 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 1 | SubAbility$ DBReturn | SpellDescription$ Prevent the next 1 damage that would be dealt to any target this turn. Return CARDNAME to its owner's hand at the beginning of the next end step. SVar:DBReturn:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigBounce | TriggerDescription$ Return CARDNAME to its owner's hand. SVar:TrigBounce:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Hand SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/rakalite.jpg -Oracle:{2}: Prevent the next 1 damage that would be dealt to target creature or player this turn. Return Rakalite to its owner's hand at the beginning of the next end step. +Oracle:{2}: Prevent the next 1 damage that would be dealt to any target this turn. Return Rakalite to its owner's hand at the beginning of the next end step. diff --git a/forge-gui/res/cardsfolder/r/rakdoss_return.txt b/forge-gui/res/cardsfolder/r/rakdoss_return.txt index 5e1175ea5b6..a75cd65a0a7 100644 --- a/forge-gui/res/cardsfolder/r/rakdoss_return.txt +++ b/forge-gui/res/cardsfolder/r/rakdoss_return.txt @@ -1,8 +1,8 @@ Name:Rakdos's Return ManaCost:X B R Types:Sorcery -A:SP$ DealDamage | Cost$ X B R | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | NumDmg$ X | References$ X | SubAbility$ DBDiscardOpp | SpellDescription$ CARDNAME deals X damage to target opponent. That player discards X cards. -SVar:DBDiscardOpp:DB$Discard | Defined$ Targeted | NumCards$ X | References$ X | Mode$ TgtChoose +A:SP$ DealDamage | Cost$ X B R | ValidTgts$ Opponent,Planeswalker | TgtPrompt$ Select target opponent or planeswalker | NumDmg$ X | References$ X | SubAbility$ DBDiscardOpp | SpellDescription$ CARDNAME deals X damage to target opponent or planeswalker. That player or that planeswalker's controller discards X cards. +SVar:DBDiscardOpp:DB$Discard | Defined$ TargetedOrController | NumCards$ X | References$ X | Mode$ TgtChoose SVar:X:Count$xPaid SVar:Picture:http://www.wizards.com/global/images/magic/general/rakdoss_return.jpg -Oracle:Rakdos's Return deals X damage to target opponent. That player discards X cards. +Oracle:Rakdos's Return deals X damage to target opponent or planeswalker. That player or that planeswalker's controller discards X cards. diff --git a/forge-gui/res/cardsfolder/r/raking_canopy.txt b/forge-gui/res/cardsfolder/r/raking_canopy.txt index 753e559187b..1c34c62febd 100644 --- a/forge-gui/res/cardsfolder/r/raking_canopy.txt +++ b/forge-gui/res/cardsfolder/r/raking_canopy.txt @@ -2,6 +2,6 @@ Name:Raking Canopy ManaCost:1 G G Types:Enchantment T:Mode$ Attacks | ValidCard$ Creature.withFlying | Attacked$ You | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever a creature with flying attacks you, CARDNAME deals 4 damage to it. -SVar:TrigDamage:DB$ DealDamage | Defined$ TriggeredAttacker | NumDmg$ 4 +SVar:TrigDamage:DB$ DealDamage | Defined$ TriggeredAttackerLKICopy | NumDmg$ 4 SVar:Picture:http://www.wizards.com/global/images/magic/general/raking_canopy.jpg Oracle:Whenever a creature with flying attacks you, Raking Canopy deals 4 damage to it. diff --git a/forge-gui/res/cardsfolder/r/ral_zarek.txt b/forge-gui/res/cardsfolder/r/ral_zarek.txt index d02be81f68f..2c6032c2ff6 100644 --- a/forge-gui/res/cardsfolder/r/ral_zarek.txt +++ b/forge-gui/res/cardsfolder/r/ral_zarek.txt @@ -4,8 +4,8 @@ Types:Legendary Planeswalker Ral Loyalty:4 A:AB$ Tap | Cost$ AddCounter<1/LOYALTY> | ValidTgts$ Permanent | TgtPrompt$ Select target permanent to tap | Planeswalker$ True | SubAbility$ DBUntap | SpellDescription$ Tap target permanent, then untap another target permanent. SVar:DBUntap:DB$ Untap | ValidTgts$ Permanent | TargetUnique$ True | TgtPrompt$ Select target permanent to untap -A:AB$ DealDamage | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. +A:AB$ DealDamage | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. A:AB$ FlipACoin | Cost$ SubCounter<7/LOYALTY> | Amount$ 5 | NoCall$ True | HeadsSubAbility$ DBAddTurn | Planeswalker$ True | Ultimate$ True | StackDescription$ SpellDescription | SpellDescription$ Flip 5 coins. Take an extra turn after this one for each coin that comes up heads. SVar:DBAddTurn:DB$ AddTurn | Defined$ You | NumTurns$ X SVar:Picture:http://www.wizards.com/global/images/magic/general/ral_zarek.jpg -Oracle:[+1]: Tap target permanent, then untap another target permanent.\n[-2]: Ral Zarek deals 3 damage to target creature or player.\n[-7]: Flip five coins. Take an extra turn after this one for each coin that comes up heads. +Oracle:[+1]: Tap target permanent, then untap another target permanent.\n[-2]: Ral Zarek deals 3 damage to any target.\n[-7]: Flip five coins. Take an extra turn after this one for each coin that comes up heads. diff --git a/forge-gui/res/cardsfolder/r/rally_the_peasants.txt b/forge-gui/res/cardsfolder/r/rally_the_peasants.txt index 5651e367a32..e4fd2ab0ec6 100644 --- a/forge-gui/res/cardsfolder/r/rally_the_peasants.txt +++ b/forge-gui/res/cardsfolder/r/rally_the_peasants.txt @@ -1,7 +1,7 @@ Name:Rally the Peasants ManaCost:2 W Types:Instant -K:Flashback 2 R +K:Flashback:2 R A:SP$ PumpAll | Cost$ 2 W | ValidCards$ Creature.YouCtrl | NumAtt$ +2 | SpellDescription$ Creatures you control get +2/+0 until end of turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/rally_the_peasants.jpg Oracle:Creatures you control get +2/+0 until end of turn.\nFlashback {2}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/r/rapid_fire.txt b/forge-gui/res/cardsfolder/r/rapid_fire.txt index c4402904e25..59bbd6b3506 100644 --- a/forge-gui/res/cardsfolder/r/rapid_fire.txt +++ b/forge-gui/res/cardsfolder/r/rapid_fire.txt @@ -3,8 +3,7 @@ ManaCost:3 W Types:Instant Text:Cast CARDNAME only before blockers are declared. A:SP$ Pump | Cost$ 3 W | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ First Strike | ActivationPhases$ Upkeep->Declare Attackers | SubAbility$ DBPump | SpellDescription$ Target creature gains first strike until end of turn. If it doesn't have rampage, that creature gains rampage 2 until end of turn. (Whenever this creature becomes blocked, it gets +2/+2 until end of turn for each creature blocking it beyond the first.) -SVar:DBPump:DB$Pump | Defined$ Targeted | KW$ Rampage 2 | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 | References$ X -SVar:X:Targeted$Valid Creature.withoutRampage +SVar:DBPump:DB$Pump | Defined$ Targeted | KW$ Rampage:2 | ConditionDefined$ Targeted | ConditionPresent$ Creature.withoutRampage SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/rapid_fire.jpg Oracle:Cast Rapid Fire only before blockers are declared.\nTarget creature gains first strike until end of turn. If it doesn't have rampage, that creature gains rampage 2 until end of turn. (Whenever this creature becomes blocked, it gets +2/+2 until end of turn for each creature blocking it beyond the first.) diff --git a/forge-gui/res/cardsfolder/r/raths_edge.txt b/forge-gui/res/cardsfolder/r/raths_edge.txt index ab11f187a89..d3de1b11da4 100644 --- a/forge-gui/res/cardsfolder/r/raths_edge.txt +++ b/forge-gui/res/cardsfolder/r/raths_edge.txt @@ -2,7 +2,7 @@ Name:Rath's Edge ManaCost:no cost Types:Legendary Land A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}. -A:AB$ DealDamage | Cost$ 4 T Sac<1/Land> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ 4 T Sac<1/Land> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/raths_edge.jpg -Oracle:{T}: Add {C}.\n{4}, {T}, Sacrifice a land: Rath's Edge deals 1 damage to target creature or player. +Oracle:{T}: Add {C}.\n{4}, {T}, Sacrifice a land: Rath's Edge deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/r/ravenous_harpy.txt b/forge-gui/res/cardsfolder/r/ravenous_harpy.txt new file mode 100644 index 00000000000..6a16b5ea60e --- /dev/null +++ b/forge-gui/res/cardsfolder/r/ravenous_harpy.txt @@ -0,0 +1,8 @@ +Name:Ravenous Harpy +ManaCost:2 B +Types:Creature Harpy +K:Flying +PT:1/2 +A:AB$ PutCounter | Cost$ 1 Sac<1/Creature> | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 | SpellDescription$ Put a +1/+1 counter on CARDNAME. +DeckHas:Ability$Counters +Oracle:Flying\n{1}, Sacrifice another creature: Put a +1/+1 counter on CARDNAME. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/r/ravenous_slime.txt b/forge-gui/res/cardsfolder/r/ravenous_slime.txt new file mode 100644 index 00000000000..39d9a888cb1 --- /dev/null +++ b/forge-gui/res/cardsfolder/r/ravenous_slime.txt @@ -0,0 +1,10 @@ +Name:Ravenous Slime +ManaCost:2 G +Types:Creature Ooze +PT:1/1 +K:CantBeBlockedBy Creature.powerLE2 +R:Event$ Moved | ActiveZones$ Battlefield | Origin$ Battlefield | Destination$ Graveyard | ValidLKI$ Creature.OppCtrl | ReplaceWith$ Exile | Description$ If a creature an opponent controls would die, instead exile it and put a number of +1/+1 counters equal to that creature's power on CARDNAME. +SVar:Exile:DB$ ChangeZone | Defined$ ReplacedCard | Origin$ Battlefield | Destination$ Exile | SubAbility$ DBPutCounter +SVar:DBPutCounter:DB$ PutCounter | CounterType$ P1P1 | CounterNum$ X | References$ X | Defined$ Self +SVar:X:ReplacedCard$CardPower +Oracle:Ravenous Slime can't be blocked by creatures with power 2 or less.\nIf a creature an opponent controls would die, instead exile it and put a number of +1/+1 counters equal to that creature's power on Ravenous Slime. diff --git a/forge-gui/res/cardsfolder/r/ray_of_distortion.txt b/forge-gui/res/cardsfolder/r/ray_of_distortion.txt index 88263f45fb8..a9c9202a76b 100644 --- a/forge-gui/res/cardsfolder/r/ray_of_distortion.txt +++ b/forge-gui/res/cardsfolder/r/ray_of_distortion.txt @@ -1,7 +1,7 @@ Name:Ray of Distortion ManaCost:3 W Types:Instant -K:Flashback 4 W W +K:Flashback:4 W W A:SP$ Destroy | Cost$ 3 W | ValidTgts$ Artifact,Enchantment | TgtPrompt$ Select target artifact or enchantment. | SpellDescription$ Destroy target artifact or enchantment. SVar:Picture:http://www.wizards.com/global/images/magic/general/ray_of_distortion.jpg Oracle:Destroy target artifact or enchantment.\nFlashback {4}{W}{W} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/r/ray_of_revelation.txt b/forge-gui/res/cardsfolder/r/ray_of_revelation.txt index 012ae4bd8b6..b7ac82cd1f4 100644 --- a/forge-gui/res/cardsfolder/r/ray_of_revelation.txt +++ b/forge-gui/res/cardsfolder/r/ray_of_revelation.txt @@ -1,7 +1,7 @@ Name:Ray of Revelation ManaCost:1 W Types:Instant -K:Flashback G +K:Flashback:G A:SP$ Destroy | Cost$ 1 W | ValidTgts$ Enchantment | TgtPrompt$ Select target enchantment. | SpellDescription$ Destroy target enchantment. SVar:Picture:http://www.wizards.com/global/images/magic/general/ray_of_revelation.jpg Oracle:Destroy target enchantment.\nFlashback {G} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/r/razorfin_hunter.txt b/forge-gui/res/cardsfolder/r/razorfin_hunter.txt index d19e32bb17b..8e0051c352d 100644 --- a/forge-gui/res/cardsfolder/r/razorfin_hunter.txt +++ b/forge-gui/res/cardsfolder/r/razorfin_hunter.txt @@ -2,7 +2,7 @@ Name:Razorfin Hunter ManaCost:U R Types:Creature Merfolk Goblin PT:1/1 -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:NonCombatPriority:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/razorfin_hunter.jpg -Oracle:{T}: Razorfin Hunter deals 1 damage to target creature or player. +Oracle:{T}: Razorfin Hunter deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/r/razortip_whip.txt b/forge-gui/res/cardsfolder/r/razortip_whip.txt index 153609607d3..d17c4bf4641 100644 --- a/forge-gui/res/cardsfolder/r/razortip_whip.txt +++ b/forge-gui/res/cardsfolder/r/razortip_whip.txt @@ -1,6 +1,6 @@ Name:Razortip Whip ManaCost:2 Types:Artifact -A:AB$ DealDamage | Cost$ 1 T | NumDmg$ 1 | ValidTgts$ Opponent | SpellDescription$ CARDNAME deals 1 damage to target opponent. +A:AB$ DealDamage | Cost$ 1 T | NumDmg$ 1 | ValidTgts$ Opponent,Planeswalker | SpellDescription$ CARDNAME deals 1 damage to target opponent or planeswalker. SVar:Picture:http://www.wizards.com/global/images/magic/general/razortip_whip.jpg -Oracle:{1}, {T}: Razortip Whip deals 1 damage to target opponent. +Oracle:{1}, {T}: Razortip Whip deals 1 damage to target opponent or planeswalker. diff --git a/forge-gui/res/cardsfolder/r/reality_hemorrhage.txt b/forge-gui/res/cardsfolder/r/reality_hemorrhage.txt index 1d92724539c..7a30d483ddb 100644 --- a/forge-gui/res/cardsfolder/r/reality_hemorrhage.txt +++ b/forge-gui/res/cardsfolder/r/reality_hemorrhage.txt @@ -2,6 +2,6 @@ Name:Reality Hemorrhage ManaCost:1 R Types:Instant K:Devoid -A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/reality_hemorrhage.jpg -Oracle:Devoid (This card has no color.)\nReality Hemorrhage deals 2 damage to target creature or player. +Oracle:Devoid (This card has no color.)\nReality Hemorrhage deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/r/reality_scramble.txt b/forge-gui/res/cardsfolder/r/reality_scramble.txt new file mode 100644 index 00000000000..3fc3d51363f --- /dev/null +++ b/forge-gui/res/cardsfolder/r/reality_scramble.txt @@ -0,0 +1,8 @@ +Name:Reality Scramble +ManaCost:2 R R +Types:Sorcery +K:Retrace +A:SP$ ChangeZone | Cost$ 2 R R | ValidTgts$ Permanent.YouOwn | Origin$ Battlefield | Destination$ Library | LibraryPosition$ -1 | RememberLKI$ True | SubAbility$ DBRevealUntilShare | SpellDescription$ Put target permanent you own on the bottom of your library. Reveal cards from the top of your library until you reveal a card that shares a card type with that permanent. Put that card onto the battlefield and the rest on the bottom of your library in a random order. +SVar:DBRevealUntilShare:DB$ DigUntil | Valid$ Card.sharesTypeWith Remembered | FoundDestination$ Battlefield | RevealedDestination$ Library | RevealedLibraryPosition$ -1 | RevealRandomOrder$ True | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:Put target permanent you own on the bottom of your library. Reveal cards from the top of your library until you reveal a card that shares a card type with that permanent. Put that card onto the battlefield and the rest on the bottom of your library in a random order.\nRetrace (You may cast this card from your graveyard by discarding a land card in addition to paying its other costs.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/r/reap_the_seagraf.txt b/forge-gui/res/cardsfolder/r/reap_the_seagraf.txt index 8ec717e1c08..229cccc0125 100644 --- a/forge-gui/res/cardsfolder/r/reap_the_seagraf.txt +++ b/forge-gui/res/cardsfolder/r/reap_the_seagraf.txt @@ -1,7 +1,7 @@ Name:Reap the Seagraf ManaCost:2 B Types:Sorcery -K:Flashback 4 U +K:Flashback:4 U A:SP$ Token | Cost$ 2 B | TokenAmount$ 1 | TokenName$ Zombie | TokenTypes$ Creature,Zombie | TokenOwner$ You | TokenColors$ Black | TokenPower$ 2 | TokenToughness$ 2 | TokenImage$ b 2 2 zombie ISD | TokenAltImages$ b_2_2_zombie2_ISD,b_2_2_zombie3_ISD | SpellDescription$ Create a 2/2 black Zombie creature token. SVar:Picture:http://www.wizards.com/global/images/magic/general/reap_the_seagraf.jpg Oracle:Create a 2/2 black Zombie creature token.\nFlashback {4}{U} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/r/reckless_abandon.txt b/forge-gui/res/cardsfolder/r/reckless_abandon.txt index ee1d38801f3..96481df7134 100644 --- a/forge-gui/res/cardsfolder/r/reckless_abandon.txt +++ b/forge-gui/res/cardsfolder/r/reckless_abandon.txt @@ -1,7 +1,7 @@ Name:Reckless Abandon ManaCost:R Types:Sorcery -A:SP$ DealDamage | Cost$ R Sac<1/Creature> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target creature or player. +A:SP$ DealDamage | Cost$ R Sac<1/Creature> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to any target. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/reckless_abandon.jpg -Oracle:As an additional cost to cast Reckless Abandon, sacrifice a creature.\nReckless Abandon deals 4 damage to target creature or player. +Oracle:As an additional cost to cast Reckless Abandon, sacrifice a creature.\nReckless Abandon deals 4 damage to target any target. diff --git a/forge-gui/res/cardsfolder/r/reckless_assault.txt b/forge-gui/res/cardsfolder/r/reckless_assault.txt index ac615076478..c96bb4a48ed 100644 --- a/forge-gui/res/cardsfolder/r/reckless_assault.txt +++ b/forge-gui/res/cardsfolder/r/reckless_assault.txt @@ -1,8 +1,8 @@ Name:Reckless Assault ManaCost:2 B R Types:Enchantment -A:AB$ DealDamage | Cost$ 1 PayLife<2> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ 1 PayLife<2> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:RemAIDeck:True SVar:NonStackingEffect:True SVar:Picture:http://www.wizards.com/global/images/magic/general/reckless_assault.jpg -Oracle:{1}, Pay 2 life: Reckless Assault deals 1 damage to target creature or player. +Oracle:{1}, Pay 2 life: Reckless Assault deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/r/reckless_charge.txt b/forge-gui/res/cardsfolder/r/reckless_charge.txt index 98b19dba958..1347f3218e7 100644 --- a/forge-gui/res/cardsfolder/r/reckless_charge.txt +++ b/forge-gui/res/cardsfolder/r/reckless_charge.txt @@ -1,7 +1,7 @@ Name:Reckless Charge ManaCost:R Types:Sorcery -K:Flashback 2 R +K:Flashback:2 R A:SP$ Pump | Cost$ R | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +3 | KW$ Haste | SpellDescription$ Target creature gets +3/+0 and gains haste until end of turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/reckless_charge.jpg Oracle:Target creature gets +3/+0 and gains haste until end of turn.\nFlashback {2}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/r/reckless_embermage.txt b/forge-gui/res/cardsfolder/r/reckless_embermage.txt index f635844fa9b..2ec5d061632 100644 --- a/forge-gui/res/cardsfolder/r/reckless_embermage.txt +++ b/forge-gui/res/cardsfolder/r/reckless_embermage.txt @@ -2,7 +2,8 @@ Name:Reckless Embermage ManaCost:3 R Types:Creature Human Wizard PT:2/2 -A:AB$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SubAbility$ DBDealDamage | SpellDescription$ CARDNAME deals 1 damage to target creature or player and 1 damage to itself. -SVar:DBDealDamage:DB$DealDamage | NumDmg$ 1 | Defined$ Self +A:AB$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | DamageMap$ True | SubAbility$ DBDealDamage | SpellDescription$ CARDNAME deals 1 damage to any target and 1 damage to itself. +SVar:DBDealDamage:DB$DealDamage | NumDmg$ 1 | Defined$ Self | SubAbility$ DBDamageResolve +SVar:DBDamageResolve:DB$ DamageResolve SVar:Picture:http://www.wizards.com/global/images/magic/general/reckless_embermage.jpg -Oracle:{1}{R}: Reckless Embermage deals 1 damage to target creature or player and 1 damage to itself. +Oracle:{1}{R}: Reckless Embermage deals 1 damage to any target and 1 damage to itself. diff --git a/forge-gui/res/cardsfolder/r/reckless_pangolin.txt b/forge-gui/res/cardsfolder/r/reckless_pangolin.txt new file mode 100644 index 00000000000..7e0cd33520b --- /dev/null +++ b/forge-gui/res/cardsfolder/r/reckless_pangolin.txt @@ -0,0 +1,7 @@ +Name:Reckless Pangolin +ManaCost:2 G +Types:Creature Pangolin +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigPump | TriggerDescription$ Whenever CARDNAME attacks, it gets +1/+1 until end of turn. +SVar:TrigPump:DB$Pump | Defined$ Self | NumAtt$ 1 | NumDef$ 1 +Oracle:Whenever Reckless Pangolin attacks, it gets +1/+1 until end of turn. +PT:2/2 diff --git a/forge-gui/res/cardsfolder/r/recoup.txt b/forge-gui/res/cardsfolder/r/recoup.txt index 07d72916c14..0e5a335b944 100644 --- a/forge-gui/res/cardsfolder/r/recoup.txt +++ b/forge-gui/res/cardsfolder/r/recoup.txt @@ -1,7 +1,7 @@ Name:Recoup ManaCost:1 R Types:Sorcery -K:Flashback 3 R +K:Flashback:3 R A:SP$ Pump | Cost$ 1 R | ValidTgts$ Sorcery.YouCtrl.Other | TgtZone$ Graveyard | TgtPrompt$ Select target sorcery card | KW$ Flashback | PumpZone$ Graveyard | SpellDescription$ Target sorcery card in your graveyard gains flashback until end of turn. The flashback cost is equal to its mana cost. SVar:Picture:http://www.wizards.com/global/images/magic/general/recoup.jpg Oracle:Target sorcery card in your graveyard gains flashback until end of turn. The flashback cost is equal to its mana cost.\nFlashback {3}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/r/red_suns_zenith.txt b/forge-gui/res/cardsfolder/r/red_suns_zenith.txt index dc5e0036352..045c26760f6 100644 --- a/forge-gui/res/cardsfolder/r/red_suns_zenith.txt +++ b/forge-gui/res/cardsfolder/r/red_suns_zenith.txt @@ -1,9 +1,9 @@ Name:Red Sun's Zenith ManaCost:X R Types:Sorcery -A:SP$ DealDamage | Cost$ X R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | RememberDamaged$ True | ReplaceDyingDefined$ Remembered | SubAbility$ DBCleanup | SpellDescription$ CARDNAME deals X damage to target creature or player. If a creature dealt damage this way would die this turn, exile it instead. Shuffle CARDNAME into its owner's library. +A:SP$ DealDamage | Cost$ X R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | RememberDamaged$ True | ReplaceDyingDefined$ Remembered | SubAbility$ DBCleanup | SpellDescription$ CARDNAME deals X damage to any target. If a creature dealt damage this way would die this turn, exile it instead. Shuffle CARDNAME into its owner's library. SVar:X:Count$xPaid SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | SubAbility$ DBShuffle SVar:DBShuffle:DB$ChangeZone | Origin$ Stack | Destination$ Library | Shuffle$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/red_suns_zenith.jpg -Oracle:Red Sun's Zenith deals X damage to target creature or player. If a creature dealt damage this way would die this turn, exile it instead. Shuffle Red Sun's Zenith into its owner's library. +Oracle:Red Sun's Zenith deals X damage to any target. If a creature dealt damage this way would die this turn, exile it instead. Shuffle Red Sun's Zenith into its owner's library. diff --git a/forge-gui/res/cardsfolder/r/reef_shaman.txt b/forge-gui/res/cardsfolder/r/reef_shaman.txt index fa73261629c..f47c69b6356 100644 --- a/forge-gui/res/cardsfolder/r/reef_shaman.txt +++ b/forge-gui/res/cardsfolder/r/reef_shaman.txt @@ -3,7 +3,7 @@ ManaCost:U Types:Creature Merfolk Shaman PT:0/2 A:AB$ ChooseType | Cost$ T | Defined$ You | Type$ Basic Land | SubAbility$ DBAnimate | SpellDescription$ Target land becomes the basic land type of your choice until end of turn. -SVar:DBAnimate:DB$ Animate | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ ChosenType | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | RemoveAllAbilities$ True +SVar:DBAnimate:DB$ Animate | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ ChosenType | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/reef_shaman.jpg Oracle:{T}: Target land becomes the basic land type of your choice until end of turn. diff --git a/forge-gui/res/cardsfolder/r/regal_bloodlord.txt b/forge-gui/res/cardsfolder/r/regal_bloodlord.txt new file mode 100644 index 00000000000..af1777a745c --- /dev/null +++ b/forge-gui/res/cardsfolder/r/regal_bloodlord.txt @@ -0,0 +1,12 @@ +Name:Regal Bloodlord +ManaCost:3 W B +Types:Creature Vampire Soldier +PT:2/4 +K:Flying +T:Mode$ Phase | Phase$ End of Turn | TriggerZones$ Battlefield | CheckSVar$ YouLifeGained | SVarCompare$ GE1 | Execute$ TrigToken | TriggerDescription$ At the beginning of each end step, if you gained life this turn, create a 1/1 black Bat creature token with flying. +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenName$ Bat | TokenTypes$ Creature,Bat | TokenOwner$ You | TokenColors$ Black | TokenPower$ 1 | TokenToughness$ 1 | TokenKeywords$ Flying | TokenImage$ b 1 1 bat m19 +SVar:YouLifeGained:Count$LifeYouGainedThisTurn +DeckHints:Ability$LifeGain +DeckHas:Ability$Token +SVar:Picture:http://www.wizards.com/global/images/magic/general/regal_bloodlord.jpg +Oracle:Flying\nAt the beginning of each end step, if you gained life this turn, create a 1/1 black Bat creature token with flying. diff --git a/forge-gui/res/cardsfolder/r/regna_the_redeemer.txt b/forge-gui/res/cardsfolder/r/regna_the_redeemer.txt new file mode 100644 index 00000000000..f985983ce8c --- /dev/null +++ b/forge-gui/res/cardsfolder/r/regna_the_redeemer.txt @@ -0,0 +1,12 @@ +Name:Regna, the Redeemer +ManaCost:5 W +Types:Legendary Creature Angel +PT:4/4 +K:Partner:Krav, the Unredeemed:Krav +K:Flying +T:Mode$ Phase | Phase$ End of Turn | TriggerZones$ Battlefield | CheckSVar$ YouTeamLifeGained | SVarCompare$ GE1 | Execute$ TrigWarrior | TriggerDescription$ At the beginning of each end step, if your team gained life this turn, create two 1/1 white Warrior creature tokens. +SVar:TrigWarrior:DB$ Token | TokenAmount$ 2 | TokenName$ Warrior | TokenTypes$ Creature,Warrior | TokenOwner$ You | TokenColors$ White | TokenPower$ 1 | TokenToughness$ 1 | TokenImage$ w_1_1_warrior_BBD | SpellDescription$ Create two 1/1 white Warrior creature tokens. +SVar:YouTeamLifeGained:Count$LifeYourTeamGainedThisTurn +DeckHints:Name$Krav, the Unredeemed +SVar:Picture:http://www.wizards.com/global/images/magic/general/regna_the_redeemer.jpg +Oracle:Partner with Krav, the Unredeemed (When this creature enters the battlefield, target player may put Krav into their hand from their library, then shuffle.)\nFlying\nAt the beginning of each end step, if your team gained life this turn, create two 1/1 white Warrior creature tokens. diff --git a/forge-gui/res/cardsfolder/r/regnas_sanction.txt b/forge-gui/res/cardsfolder/r/regnas_sanction.txt new file mode 100644 index 00000000000..12f421c3171 --- /dev/null +++ b/forge-gui/res/cardsfolder/r/regnas_sanction.txt @@ -0,0 +1,19 @@ +Name:Regna's Sanction +ManaCost:3 W +Types:Sorcery +A:SP$ AssignGroup | Cost$ 3 W | Defined$ Player | Choices$ FriendRepeat,FoeRepeat | AILogic$ FriendOrFoe | SpellDescription$ For each player, choose friend or foe. Each friend puts a +1/+1 counter on each creature they control. Each foe chooses one untapped creature they control, then taps the rest. +SVar:FriendRepeat:DB$ RepeatEach | RepeatPlayers$ Remembered | RepeatSubAbility$ DBPutCounter | ClearRememberedBeforeLoop$ True | StackDescription$ Each friend puts a +1/+1 counter on each creature they control. | SpellDescription$ Friend puts a +1/+1 counter on each creature they control. +SVar:DBPutCounter:DB$ PutCounterAll | ValidCards$ Creature.RememberedPlayerCtrl | CounterType$ P1P1 | CounterNum$ 1 | Placer$ Remembered +SVar:FoeRepeat:DB$ RepeatEach | AILogic$ OpponentHasMultipleCreatures | RepeatPlayers$ Remembered | ClearRememberedBeforeLoop$ True | RepeatSubAbility$ DBChoose | SubAbility$ DBTapAll | StackDescription$ Each foe chooses one untapped creature they control, then taps the rest. | SpellDescription$ Foe chooses one untapped creature they control, then taps the rest. +SVar:DBChoose:DB$ ChooseCard | Defined$ Remembered | Amount$ 1 | Choices$ Creature.untapped+RememberedPlayerCtrl | Mandatory$ True | RememberChosen$ True | SubAbility$ DBImprint +#Need to imprint all non remembered cards +SVar:DBImprint:DB$ Pump | ImprintCards$ Valid Creature.IsNotRemembered+RememberedPlayerCtrl | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenCard$ True +SVar:DBTapAll:DB$ TapAll | ValidCards$ Creature.IsImprinted | SubAbility$ DBCleanupAll +SVar:DBCleanupAll:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True | ClearChosenCard$ True +SVar:NeedsToPlayVar:Z GE3 +SVar:Z:SVar$Z1/Plus.Z2 +SVar:Z1:Count$Valid Creature.YourTeamCtrl+inZoneBattlefield +SVar:Z2:Count$Valid Creature.OppCtrl+inZoneBattlefield+untapped +SVar:Picture:http://www.wizards.com/global/images/magic/general/regna_sanction.jpg +Oracle:For each player, choose friend or foe. Each friend puts a +1/+1 counter on each creature they control. Each foe chooses one untapped creature they control, then taps the rest. diff --git a/forge-gui/res/cardsfolder/r/rekindled_flame.txt b/forge-gui/res/cardsfolder/r/rekindled_flame.txt index e2f7e7010b5..4317f31a3b9 100644 --- a/forge-gui/res/cardsfolder/r/rekindled_flame.txt +++ b/forge-gui/res/cardsfolder/r/rekindled_flame.txt @@ -1,9 +1,9 @@ Name:Rekindled Flame ManaCost:2 R R Types:Sorcery -A:SP$ DealDamage | Cost$ 2 R R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target creature or player. +A:SP$ DealDamage | Cost$ 2 R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to any target. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | CheckSVar$ OppHand | References$ OppHand | SVarCompare$ EQ0 | OptionalDecider$ You | Execute$ TrigReturn | TriggerZones$ Graveyard | TriggerDescription$ At the beginning of your upkeep, if an opponent has no cards in hand, you may return CARDNAME from your graveyard to your hand. SVar:TrigReturn:DB$ChangeZone | Defined$ Self | Origin$ Graveyard | Destination$ Hand SVar:OppHand:PlayerCountOpponents$LowestCardsInHand SVar:Picture:http://www.wizards.com/global/images/magic/general/rekindled_flame.jpg -Oracle:Rekindled Flame deals 4 damage to target creature or player.\nAt the beginning of your upkeep, if an opponent has no cards in hand, you may return Rekindled Flame from your graveyard to your hand. +Oracle:Rekindled Flame deals 4 damage to any target.\nAt the beginning of your upkeep, if an opponent has no cards in hand, you may return Rekindled Flame from your graveyard to your hand. diff --git a/forge-gui/res/cardsfolder/r/release_the_ants.txt b/forge-gui/res/cardsfolder/r/release_the_ants.txt index 8ea65ab1e51..67ecbbdcab7 100644 --- a/forge-gui/res/cardsfolder/r/release_the_ants.txt +++ b/forge-gui/res/cardsfolder/r/release_the_ants.txt @@ -1,8 +1,8 @@ Name:Release the Ants ManaCost:1 R Types:Instant -A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SubAbility$ DBClash | SpellDescription$ Release the Ants deals 1 damage to target creature or player. Clash with an opponent. If you win, return CARDNAME to its owner's hand. +A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player | TgtPrompt$ Select any target | NumDmg$ 1 | SubAbility$ DBClash | SpellDescription$ Release the Ants deals 1 damage to any target. Clash with an opponent. If you win, return CARDNAME to its owner's hand. SVar:DBClash:DB$Clash | WinSubAbility$ DBReturn SVar:DBReturn:DB$ChangeZone | Defined$ Self | Origin$ Stack | Destination$ Hand SVar:Picture:http://www.wizards.com/global/images/magic/general/release_the_ants.jpg -Oracle:Release the Ants deals 1 damage to target creature or player. Clash with an opponent. If you win, return Release the Ants to its owner's hand. (Each clashing player reveals the top card of their library, then puts that card on the top or bottom. A player wins if their card had a higher converted mana cost.) +Oracle:Release the Ants deals 1 damage to any target. Clash with an opponent. If you win, return Release the Ants to its owner's hand. (Each clashing player reveals the top card of their library, then puts that card on the top or bottom. A player wins if their card had a higher converted mana cost.) diff --git a/forge-gui/res/cardsfolder/r/relic_bind.txt b/forge-gui/res/cardsfolder/r/relic_bind.txt index c0ee6578d07..2ab309c4483 100644 --- a/forge-gui/res/cardsfolder/r/relic_bind.txt +++ b/forge-gui/res/cardsfolder/r/relic_bind.txt @@ -5,9 +5,9 @@ K:Enchant artifact an opponent controls A:SP$ Attach | Cost$ 2 U | ValidTgts$ Artifact.OppCtrl | TgtPrompt$ Select target artifact an opponent controls | AILogic$ Curse T:Mode$ Taps | ValidCard$ Card.AttachedBy | TriggerZones$ Battlefield | Execute$ TrigCharm | TriggerDescription$ Whenever enchanted artifact becomes tapped, ABILITY SVar:TrigCharm:DB$ Charm | Choices$ DBDamage,DBGain -SVar:DBDamage:DB$ DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target player. +SVar:DBDamage:DB$ DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target player or planeswalker. SVar:DBGain:DB$ GainLife | ValidTgts$ Player | TgtPrompt$ Select target player | LifeAmount$ 1 | SpellDescription$ Target player gains 1 life. SVar:RemAIDeck:True DeckHas:Ability$LifeGain SVar:Picture:http://www.wizards.com/global/images/magic/general/relic_bind.jpg -Oracle:Enchant artifact an opponent controls\nWhenever enchanted artifact becomes tapped, choose one —\n• Relic Bind deals 1 damage to target player.\n• Target player gains 1 life. +Oracle:Enchant artifact an opponent controls\nWhenever enchanted artifact becomes tapped, choose one —\n• Relic Bind deals 1 damage to target player or planeswalker.\n• Target player gains 1 life. diff --git a/forge-gui/res/cardsfolder/r/remedy.txt b/forge-gui/res/cardsfolder/r/remedy.txt index d441d7a5800..1b2b9750051 100644 --- a/forge-gui/res/cardsfolder/r/remedy.txt +++ b/forge-gui/res/cardsfolder/r/remedy.txt @@ -1,7 +1,7 @@ Name:Remedy ManaCost:1 W Types:Instant -A:SP$ PreventDamage | Cost$ 1 W | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to prevent damage to | Amount$ 5 | TargetMin$ 1 | TargetMax$ 5 | DividedAsYouChoose$ 5 | SpellDescription$ Prevent the next 5 damage that would be dealt this turn to any number of target creatures and/or players, divided as you choose. +A:SP$ PreventDamage | Cost$ 1 W | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to prevent damage to | Amount$ 5 | TargetMin$ 1 | TargetMax$ 5 | DividedAsYouChoose$ 5 | SpellDescription$ Prevent the next 5 damage that would be dealt this turn to any number of targets, divided as you choose. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/remedy.jpg -Oracle:Prevent the next 5 damage that would be dealt this turn to any number of target creatures and/or players, divided as you choose. +Oracle:Prevent the next 5 damage that would be dealt this turn to any number of targets, divided as you choose. diff --git a/forge-gui/res/cardsfolder/r/remorseful_cleric.txt b/forge-gui/res/cardsfolder/r/remorseful_cleric.txt new file mode 100644 index 00000000000..0e950cb3f22 --- /dev/null +++ b/forge-gui/res/cardsfolder/r/remorseful_cleric.txt @@ -0,0 +1,7 @@ +Name:Remorseful Cleric +ManaCost:1 W +Types:Creature Spirit Cleric +K:Flying +A:AB$ ChangeZoneAll | Cost$ Sac<1/CARDNAME> | ValidTgts$ Player | Origin$ Graveyard | ChangeType$ Card | IsCurse$ True | Destination$ Exile | TgtPrompt$ Select target player | SpellDescription$ Exile all cards from target player's graveyard. +Oracle:Flying\nSacrifice Remorseful Cleric: Exile all cards from target player's graveyard. +PT:2/1 diff --git a/forge-gui/res/cardsfolder/r/repeating_barrage.txt b/forge-gui/res/cardsfolder/r/repeating_barrage.txt index 1484e4fc5cd..ab06ade70fe 100644 --- a/forge-gui/res/cardsfolder/r/repeating_barrage.txt +++ b/forge-gui/res/cardsfolder/r/repeating_barrage.txt @@ -1,8 +1,8 @@ Name:Repeating Barrage ManaCost:1 R R Types:Sorcery -A:SP$ DealDamage | Cost$ 1 R R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. +A:SP$ DealDamage | Cost$ 1 R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. A:AB$ ChangeZone | Cost$ 3 R R | PrecostDesc$ Raid — | Origin$ Graveyard | Destination$ Hand | ActivationZone$ Graveyard | CheckSVar$ RaidTest | References$ RaidTest | AILogic$ CheckCondition | SpellDescription$ Return CARDNAME from your graveyard to your hand. Activate this ability only if you attacked with a creature this turn. SVar:RaidTest:Count$AttackersDeclared SVar:Picture:http://www.wizards.com/global/images/magic/general/repeating_barrage.jpg -Oracle:Repeating Barrage deals 3 damage to target creature or player.\nRaid — {3}{R}{R}: Return Repeating Barrage from your graveyard to your hand. Activate this ability only if you attacked with a creature this turn. +Oracle:Repeating Barrage deals 3 damage to any target.\nRaid — {3}{R}{R}: Return Repeating Barrage from your graveyard to your hand. Activate this ability only if you attacked with a creature this turn. diff --git a/forge-gui/res/cardsfolder/r/resounding_thunder.txt b/forge-gui/res/cardsfolder/r/resounding_thunder.txt index ccf83b3209e..90b25294bfc 100644 --- a/forge-gui/res/cardsfolder/r/resounding_thunder.txt +++ b/forge-gui/res/cardsfolder/r/resounding_thunder.txt @@ -2,8 +2,8 @@ Name:Resounding Thunder ManaCost:2 R Types:Instant K:Cycling:5 B R G -A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. -T:Mode$ Cycled | ValidCard$ Card.Self | Execute$ TrigDamage | TriggerDescription$ When you cycle CARDNAME, it deals 6 damage to target creature or player. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 6 +A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. +T:Mode$ Cycled | ValidCard$ Card.Self | Execute$ TrigDamage | TriggerDescription$ When you cycle CARDNAME, it deals 6 damage to any target. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 6 SVar:Picture:http://www.wizards.com/global/images/magic/general/resounding_thunder.jpg -Oracle:Resounding Thunder deals 3 damage to target creature or player.\nCycling {5}{B}{R}{G} ({5}{B}{R}{G}, Discard this card: Draw a card.)\nWhen you cycle Resounding Thunder, it deals 6 damage to target creature or player. +Oracle:Resounding Thunder deals 3 damage to any target.\nCycling {5}{B}{R}{G} ({5}{B}{R}{G}, Discard this card: Draw a card.)\nWhen you cycle Resounding Thunder, it deals 6 damage to any target. diff --git a/forge-gui/res/cardsfolder/r/resplendent_angel.txt b/forge-gui/res/cardsfolder/r/resplendent_angel.txt new file mode 100644 index 00000000000..31d13203be1 --- /dev/null +++ b/forge-gui/res/cardsfolder/r/resplendent_angel.txt @@ -0,0 +1,12 @@ +Name:Resplendent Angel +ManaCost:1 W W +Types:Creature Angel +K:Flying +T:Mode$ Phase | Phase$ End of Turn | TriggerZones$ Battlefield | CheckSVar$ YouLifeGained | SVarCompare$ GE5 | Execute$ TrigToken | TriggerDescription$ At the beginning of each end step, if you gained 5 or more life this turn, create a 4/4 white Angel creature token with flying and vigilance. +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenName$ Angel | TokenTypes$ Creature,Angel | TokenOwner$ You | TokenColors$ White | TokenPower$ 4 | TokenToughness$ 4 | TokenImage$ w 4 4 angel m19 | TokenKeywords$ Flying<>Vigilance +SVar:YouLifeGained:Count$LifeYouGainedThisTurn +A:AB$ Pump | Cost$ 3 W W W | ValidCard$ Card.Self | NumAtt$ 2 | NumDef$ 2 | KW$ Lifelink +DeckHints:Ability$LifeGain +DeckHas:Ability$Token +Oracle:Flying\nAt the beginning of each end step, if you gained 5 or more life this turn, create a 4/4 white Angel creature token with flying and vigilance.\n{3}{W}{W}{W}: Until end of turn, Resplendent Angel gets +2/+2 and gains lifelink. +PT:3/3 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/r/retrofitter_foundry.txt b/forge-gui/res/cardsfolder/r/retrofitter_foundry.txt new file mode 100644 index 00000000000..ab8c2122ce4 --- /dev/null +++ b/forge-gui/res/cardsfolder/r/retrofitter_foundry.txt @@ -0,0 +1,9 @@ +Name:Retrofitter Foundry +ManaCost:1 +Types:Artifact +A:AB$ Untap | Cost$ 3 | SpellDescription$ Untap CARDNAME. +A:AB$ Token | Cost$ 2 T | TokenAmount$ 1 | TokenName$ Servo | TokenTypes$ Artifact,Creature,Servo | TokenOwner$ You | TokenColors$ Colorless | TokenPower$ 1 | TokenToughness$ 1 | TokenImage$ c 1 1 servo c18 | SpellDescription$ Create a 1/1 colorless Servo artifact creature token. +A:AB$ Token | Cost$ 1 T Sac<1/Servo> | TokenAmount$ 1 | TokenName$ Thopter | TokenTypes$ Artifact,Creature,Thopter | TokenOwner$ You | TokenColors$ Colorless | TokenPower$ 1 | TokenToughness$ 1 | TokenKeywords$ Flying | TokenImage$ c 1 1 thopter c18 | SpellDescription$ Create a 1/1 colorless Thopter artifact creature token with flying. +DeckHas:Ability$Token +A:AB$ Token | Cost$ T Sac<1/Thopter> | TokenAmount$ 1 | TokenName$ Construct | TokenTypes$ Artifact,Creature,Construct | TokenOwner$ You | TokenColors$ Colorless | TokenPower$ 4 | TokenToughness$ 4 | TokenImage$ c 4 4 construct c18 | SpellDescription$ Create a 4/4 colorless Construct artifact creature token. +Oracle:{3}: Untap Retrofitter Foundry.\n{2}, {T}: Create a 1/1 colorless Servo artifact creature token.\n{1}, {T}, Sacrifice a Servo: Create a 1/1 colorless Thopter artifact creature token with flying.\n{T}, Sacrifice a Thopter: Create a 4/4 colorless Construct artifact creature token. diff --git a/forge-gui/res/cardsfolder/r/reveka_wizard_savant.txt b/forge-gui/res/cardsfolder/r/reveka_wizard_savant.txt index 8098e794f2b..cba29b8f432 100644 --- a/forge-gui/res/cardsfolder/r/reveka_wizard_savant.txt +++ b/forge-gui/res/cardsfolder/r/reveka_wizard_savant.txt @@ -2,7 +2,7 @@ Name:Reveka, Wizard Savant ManaCost:2 U U Types:Legendary Creature Dwarf Wizard PT:0/1 -A:AB$ DealDamage | Cost$ T | NumDmg$ 2 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | SubAbility$ DBPump | SpellDescription$ CARDNAME deals 2 damage to target creature or player and doesn't untap during your next untap step. +A:AB$ DealDamage | Cost$ T | NumDmg$ 2 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select target creature or player | SubAbility$ DBPump | SpellDescription$ CARDNAME deals 2 damage to any target and doesn't untap during your next untap step. SVar:DBPump:DB$Pump | KW$ HIDDEN This card doesn't untap during your next untap step. | Defined$ Self | Permanent$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/reveka_wizard_savant.jpg -Oracle:{T}: Reveka, Wizard Savant deals 2 damage to target creature or player and doesn't untap during your next untap step. +Oracle:{T}: Reveka, Wizard Savant deals 2 damage to any target and doesn't untap during your next untap step. diff --git a/forge-gui/res/cardsfolder/r/revitalize.txt b/forge-gui/res/cardsfolder/r/revitalize.txt new file mode 100644 index 00000000000..cc63b521466 --- /dev/null +++ b/forge-gui/res/cardsfolder/r/revitalize.txt @@ -0,0 +1,6 @@ +Name:Revitalize +ManaCost:1 W +Types:Instant +A:SP$ GainLife | Cost$ 1 W | Defined$ You | LifeAmount$ 3 | SubAbility$ DBDraw | SpellDescription$ You gain 3 life.\nDraw a card. +SVar:DBDraw:DB$ Draw | NumCards$ 1 | Defined$ You +Oracle:You gain 3 life.\nDraw a card. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/r/rhox_oracle.txt b/forge-gui/res/cardsfolder/r/rhox_oracle.txt new file mode 100644 index 00000000000..5498116fe53 --- /dev/null +++ b/forge-gui/res/cardsfolder/r/rhox_oracle.txt @@ -0,0 +1,7 @@ +Name:Rhox Oracle +ManaCost:4 G +Types:Creature Rhino Monk +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerDescription$ When CARDNAME enters the battlefield, draw a card. +SVar:TrigDraw:DB$Draw | Defined$ You | NumCards$ 1 +Oracle:When Rhox Oracle enters the battlefield, draw a card. +PT:4/2 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/r/rhystic_lightning.txt b/forge-gui/res/cardsfolder/r/rhystic_lightning.txt index 6a112fab572..0a0adc42cbc 100644 --- a/forge-gui/res/cardsfolder/r/rhystic_lightning.txt +++ b/forge-gui/res/cardsfolder/r/rhystic_lightning.txt @@ -1,12 +1,12 @@ Name:Rhystic Lightning ManaCost:2 R Types:Instant -A:SP$ StoreSVar | Cost$ 2 R | SVar$ RhysticPaid | Type$ Number | Expression$ 0 | UnlessPayer$ Targeted | UnlessCost$ 2 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | ConditionDefined$ Targeted | ConditionPresent$ Creature | ConditionCompare$ EQ0 | SubAbility$ DBStore2 | SpellDescription$ CARDNAME deals 4 damage to target creature or player unless that creature's controller or that player pays {2}. If they do, CARDNAME deals 2 damage to the creature or player. -SVar:DBStore2:DB$ StoreSVar | SVar$ RhysticPaid | Type$ Number | Expression$ 0 | UnlessPayer$ TargetedController | UnlessCost$ 2 | ConditionDefined$ Targeted | ConditionPresent$ Creature | ConditionCompare$ GE1 | SubAbility$ DBDmg +A:SP$ StoreSVar | Cost$ 2 R | SVar$ RhysticPaid | Type$ Number | Expression$ 0 | UnlessPayer$ Targeted | UnlessCost$ 2 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | ConditionDefined$ Targeted | ConditionPresent$ Permanent | ConditionCompare$ EQ0 | SubAbility$ DBStore2 | SpellDescription$ CARDNAME deals 4 damage to any target unless that permanent's controller or that player pays {2}. If they do, CARDNAME deals 2 damage to the permanent or player. +SVar:DBStore2:DB$ StoreSVar | SVar$ RhysticPaid | Type$ Number | Expression$ 0 | UnlessPayer$ TargetedController | UnlessCost$ 2 | ConditionDefined$ Targeted | ConditionPresent$ Permanent | ConditionCompare$ GE1 | SubAbility$ DBDmg SVar:DBDmg:DB$ DealDamage | Defined$ Targeted | NumDmg$ X | References$ X,RhysticPaid | SubAbility$ DBReset SVar:DBReset:DB$ StoreSVar | SVar$ RhysticPaid | Type$ Number | Expression$ 1 SVar:RhysticPaid:Number$1 SVar:X:Count$Compare RhysticPaid EQ1.2.4 SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/rhystic_lightning.jpg -Oracle:Rhystic Lightning deals 4 damage to target creature or player unless that creature's controller or that player pays {2}. If they do, Rhystic Lightning deals 2 damage to the creature or player. +Oracle:Rhystic Lightning deals 4 damage to any target unless that permanent's controller or that player pays {2}. If they do, Rhystic Lightning deals 2 damage to the permanent or player. diff --git a/forge-gui/res/cardsfolder/r/rhythmic_water_vortex.txt b/forge-gui/res/cardsfolder/r/rhythmic_water_vortex.txt new file mode 100644 index 00000000000..1c919d8bbaa --- /dev/null +++ b/forge-gui/res/cardsfolder/r/rhythmic_water_vortex.txt @@ -0,0 +1,7 @@ +Name:Rhythmic Water Vortex +ManaCost:3 U U +Types:Sorcery +A:SP$ ChangeZone | Cost$ 3 U U | TargetMin$ 0 | TargetMax$ 2 | ValidTgts$ Creature | TgtPrompt$ Select up to two target creatures | Origin$ Battlefield | Destination$ Hand | SubAbility$ DBSearch | SpellDescription$ Return up to two target creatures to their owner's hand. +SVar:DBSearch:DB$ ChangeZone | Origin$ Library,Graveyard | Destination$ Hand | ChangeType$ Card.namedMu Yanling | ChangeNum$ 1 | SpellDescription$ Search your library and/or graveyard for a card named Mu Yanling, reveal it, and put it into your hand. If you searched your library this way, shuffle it. +DeckHints:Name$Mu Yanling +Oracle:Return up to two target creatures to their owner's hand.\nSearch your library and/or graveyard for a card named Mu Yanling, reveal it, and put it into your hand. If you searched your library this way, shuffle it. diff --git a/forge-gui/res/cardsfolder/r/riddle_of_lightning.txt b/forge-gui/res/cardsfolder/r/riddle_of_lightning.txt index 06741574388..1635b8b15d3 100644 --- a/forge-gui/res/cardsfolder/r/riddle_of_lightning.txt +++ b/forge-gui/res/cardsfolder/r/riddle_of_lightning.txt @@ -1,10 +1,10 @@ Name:Riddle of Lightning ManaCost:3 R R Types:Instant -A:SP$Scry | Cost$ 3 R R | ScryNum$ 3 | SubAbility$ DBReveal | SpellDescription$ Choose target creature or player. Scry 3, then reveal the top card of your library. CARDNAME deals damage equal to that card's converted mana cost to that creature or player. (To scry 3, look at the top three cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) +A:SP$Scry | Cost$ 3 R R | ScryNum$ 3 | SubAbility$ DBReveal | SpellDescription$ Choose any target. Scry 3, then reveal the top card of your library. CARDNAME deals damage equal to that card's converted mana cost to that permanent or player. (To scry 3, look at the top three cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) SVar:DBReveal:DB$ Dig | DigNum$ 1 | Reveal$ True | DestinationZone$ Library | LibraryPosition$ 0 | SubAbility$ DBDamage -SVar:DBDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | StackDescription$ CARDNAME deals damage equal to that card's converted mana cost to that creature or player. +SVar:DBDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | StackDescription$ CARDNAME deals damage equal to that card's converted mana cost to that permanent or player. SVar:X:Count$TopOfLibraryCMC SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/riddle_of_lightning.jpg -Oracle:Choose target creature or player. Scry 3, then reveal the top card of your library. Riddle of Lightning deals damage equal to that card's converted mana cost to that creature or player. (To scry 3, look at the top three cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) +Oracle:Choose any target. Scry 3, then reveal the top card of your library. Riddle of Lightning deals damage equal to that card's converted mana cost to that permanent or player. (To scry 3, look at the top three cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) diff --git a/forge-gui/res/cardsfolder/r/riddlemaster_sphinx.txt b/forge-gui/res/cardsfolder/r/riddlemaster_sphinx.txt new file mode 100644 index 00000000000..7c2338b70f0 --- /dev/null +++ b/forge-gui/res/cardsfolder/r/riddlemaster_sphinx.txt @@ -0,0 +1,8 @@ +Name:Riddlemaster Sphinx +ManaCost:4 U U +Types:Creature Sphinx +K:Flying +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigBounce | TriggerDescription$ When CARDNAME enters the battlefield, return target creature an opponent controls to its owner's hand. +SVar:TrigBounce:DB$ ChangeZone | ValidTgts$ Creature.OppCtrl | Origin$ Battlefield | Destination$ Hand | TgtPrompt$ Select target creature an opponent controls +Oracle:Flying\nWhen Riddlemaster Sphinx enters the battlefield, you may return target creature an opponent controls to its owner's hand. +PT:5/5 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/r/rift_bolt.txt b/forge-gui/res/cardsfolder/r/rift_bolt.txt index dd329323dd8..49ae238db60 100644 --- a/forge-gui/res/cardsfolder/r/rift_bolt.txt +++ b/forge-gui/res/cardsfolder/r/rift_bolt.txt @@ -1,7 +1,7 @@ Name:Rift Bolt ManaCost:2 R Types:Sorcery -A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. +A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. K:Suspend:1:R SVar:Picture:http://www.wizards.com/global/images/magic/general/rift_bolt.jpg -Oracle:Rift Bolt deals 3 damage to target creature or player.\nSuspend 1—{R} (Rather than cast this card from your hand, you may pay {R} and exile it with a time counter on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost.) +Oracle:Rift Bolt deals 3 damage to any target.\nSuspend 1—{R} (Rather than cast this card from your hand, you may pay {R} and exile it with a time counter on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost.) diff --git a/forge-gui/res/cardsfolder/r/rite_of_consumption.txt b/forge-gui/res/cardsfolder/r/rite_of_consumption.txt index cb2b2a3bd6c..600d63374f8 100644 --- a/forge-gui/res/cardsfolder/r/rite_of_consumption.txt +++ b/forge-gui/res/cardsfolder/r/rite_of_consumption.txt @@ -1,9 +1,9 @@ Name:Rite of Consumption ManaCost:1 B Types:Sorcery -A:SP$ DealDamage | Cost$ 1 B Sac<1/Creature> | ValidTgts$ Player | NumDmg$ X | References$ X | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals damage equal to the sacrificed creature's power to target player. You gain life equal to the damage dealt this way. +A:SP$ DealDamage | Cost$ 1 B Sac<1/Creature> | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ X | References$ X | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals damage equal to the sacrificed creature's power to target player or planeswalker. You gain life equal to the damage dealt this way. SVar:DBGainLife:DB$GainLife | Defined$ You | LifeAmount$ Y | References$ Y | StackDescription$ You gain life equal to the damage dealt this way. SVar:X:Sacrificed$CardPower -SVar:Y:TargetedPlayer$DamageDoneToPlayerBy +SVar:Y:Count$TotalDamageDoneByThisTurn SVar:Picture:http://www.wizards.com/global/images/magic/general/rite_of_consumption.jpg -Oracle:As an additional cost to cast Rite of Consumption, sacrifice a creature.\nRite of Consumption deals damage equal to the sacrificed creature's power to target player. You gain life equal to the damage dealt this way. +Oracle:As an additional cost to cast Rite of Consumption, sacrifice a creature.\nRite of Consumption deals damage equal to the sacrificed creature's power to target player or planeswalker. You gain life equal to the damage dealt this way. diff --git a/forge-gui/res/cardsfolder/r/roar_of_the_crowd.txt b/forge-gui/res/cardsfolder/r/roar_of_the_crowd.txt index ae7f551517c..09a717ecd4d 100644 --- a/forge-gui/res/cardsfolder/r/roar_of_the_crowd.txt +++ b/forge-gui/res/cardsfolder/r/roar_of_the_crowd.txt @@ -1,9 +1,9 @@ Name:Roar of the Crowd ManaCost:3 R Types:Sorcery -A:SP$ ChooseType | Cost$ 3 R | Defined$ You | Type$ Creature | SubAbility$ DBDamage | SpellDescription$ Choose a creature type. CARDNAME deals damage to target creature or player equal to the number of permanents you control of the chosen type. -SVar:DBDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X +A:SP$ ChooseType | Cost$ 3 R | Defined$ You | Type$ Creature | SubAbility$ DBDamage | SpellDescription$ Choose a creature type. CARDNAME deals damage to any target equal to the number of permanents you control of the chosen type. +SVar:DBDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X SVar:X:Count$Valid Permanent.ChosenType+YouCtrl SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/roar_of_the_crowd.jpg -Oracle:Choose a creature type. Roar of the Crowd deals damage to target creature or player equal to the number of permanents you control of the chosen type. +Oracle:Choose a creature type. Roar of the Crowd deals damage to any target equal to the number of permanents you control of the chosen type. diff --git a/forge-gui/res/cardsfolder/r/roar_of_the_wurm.txt b/forge-gui/res/cardsfolder/r/roar_of_the_wurm.txt index 76de3aed135..07636a7ca2c 100644 --- a/forge-gui/res/cardsfolder/r/roar_of_the_wurm.txt +++ b/forge-gui/res/cardsfolder/r/roar_of_the_wurm.txt @@ -1,7 +1,7 @@ Name:Roar of the Wurm ManaCost:6 G Types:Sorcery -K:Flashback 3 G +K:Flashback:3 G A:SP$ Token | Cost$ 6 G | TokenAmount$ 1 | TokenName$ Wurm | TokenTypes$ Creature,Wurm | TokenOwner$ You | TokenColors$ Green | TokenPower$ 6 | TokenToughness$ 6 | SpellDescription$ Create a 6/6 green Wurm creature token. SVar:DiscardMe:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/roar_of_the_wurm.jpg diff --git a/forge-gui/res/cardsfolder/r/roc_egg.txt b/forge-gui/res/cardsfolder/r/roc_egg.txt index 5f92bd4e94c..9f4e9701521 100644 --- a/forge-gui/res/cardsfolder/r/roc_egg.txt +++ b/forge-gui/res/cardsfolder/r/roc_egg.txt @@ -1,10 +1,11 @@ Name:Roc Egg ManaCost:2 W -Types:Creature Bird +Types:Creature Bird Egg PT:0/3 K:Defender T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigToken | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, create a 3/3 white Bird creature token with flying. SVar:TrigToken:DB$Token | TokenAmount$ 1 | TokenName$ Bird | TokenTypes$ Creature,Bird | TokenOwner$ TriggeredCardController | TokenColors$ White | TokenPower$ 3 | TokenToughness$ 3 | TokenKeywords$ Flying SVar:SacMe:4 +DeckHas:Ability$Token SVar:Picture:http://www.wizards.com/global/images/magic/general/roc_egg.jpg Oracle:Defender (This creature can't attack.)\nWhen Roc Egg dies, create a 3/3 white Bird creature token with flying. diff --git a/forge-gui/res/cardsfolder/r/rocket_launcher.txt b/forge-gui/res/cardsfolder/r/rocket_launcher.txt index adfd7cff1ab..725adcb4f61 100644 --- a/forge-gui/res/cardsfolder/r/rocket_launcher.txt +++ b/forge-gui/res/cardsfolder/r/rocket_launcher.txt @@ -1,9 +1,9 @@ Name:Rocket Launcher ManaCost:4 Types:Artifact -A:AB$ DealDamage | Cost$ 2 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SubAbility$ DBDelayTrig | IsPresent$ Card.Self+notFirstTurnControlled | SpellDescription$ CARDNAME deals 1 damage to target creature or player. Destroy CARDNAME at the beginning of the next end step. Activate this ability only if you've controlled CARDNAME continuously since the beginning of your most recent turn. +A:AB$ DealDamage | Cost$ 2 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SubAbility$ DBDelayTrig | IsPresent$ Card.Self+notFirstTurnControlled | SpellDescription$ CARDNAME deals 1 damage to any target. Destroy CARDNAME at the beginning of the next end step. Activate this ability only if you've controlled CARDNAME continuously since the beginning of your most recent turn. SVar:DBDelayTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ DestroySource | TriggerDescription$ Destroy CARDNAME at the beginning of the next end step. SVar:DestroySource:DB$ Destroy | Defined$ Self SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/rocket_launcher.jpg -Oracle:{2}: Rocket Launcher deals 1 damage to target creature or player. Destroy Rocket Launcher at the beginning of the next end step. Activate this ability only if you've controlled Rocket Launcher continuously since the beginning of your most recent turn. +Oracle:{2}: Rocket Launcher deals 1 damage to any target. Destroy Rocket Launcher at the beginning of the next end step. Activate this ability only if you've controlled Rocket Launcher continuously since the beginning of your most recent turn. diff --git a/forge-gui/res/cardsfolder/r/rod_of_ruin.txt b/forge-gui/res/cardsfolder/r/rod_of_ruin.txt index 7587ef5cb69..c6a8616bd13 100644 --- a/forge-gui/res/cardsfolder/r/rod_of_ruin.txt +++ b/forge-gui/res/cardsfolder/r/rod_of_ruin.txt @@ -1,6 +1,6 @@ Name:Rod of Ruin ManaCost:4 Types:Artifact -A:AB$ DealDamage | Cost$ 3 T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ 3 T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/rod_of_ruin.jpg -Oracle:{3}, {T}: Rod of Ruin deals 1 damage to target creature or player. +Oracle:{3}, {T}: Rod of Ruin deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/r/rolling_temblor.txt b/forge-gui/res/cardsfolder/r/rolling_temblor.txt index 97813e0b2f1..d031d1b56a9 100644 --- a/forge-gui/res/cardsfolder/r/rolling_temblor.txt +++ b/forge-gui/res/cardsfolder/r/rolling_temblor.txt @@ -1,7 +1,7 @@ Name:Rolling Temblor ManaCost:2 R Types:Sorcery -K:Flashback 4 R R +K:Flashback:4 R R A:SP$ DamageAll | Cost$ 2 R | ValidCards$ Creature.withoutFlying | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to each creature without flying. SVar:Picture:http://www.wizards.com/global/images/magic/general/rolling_temblor.jpg Oracle:Rolling Temblor deals 2 damage to each creature without flying.\nFlashback {4}{R}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/r/rolling_thunder.txt b/forge-gui/res/cardsfolder/r/rolling_thunder.txt index fcf292d4faf..0488a25d74e 100644 --- a/forge-gui/res/cardsfolder/r/rolling_thunder.txt +++ b/forge-gui/res/cardsfolder/r/rolling_thunder.txt @@ -1,11 +1,11 @@ Name:Rolling Thunder ManaCost:X R R Types:Sorcery -A:SP$ DealDamage | Cost$ X R R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature and/or player to distribute damage to | NumDmg$ X | TargetMin$ Min | TargetMax$ MaxTgts | DividedAsYouChoose$ X | References$ X,Min,MaxTgts | SpellDescription$ CARDNAME deals X damage divided as you choose among any number of target creatures and/or players. -SVar:MaxTgts:PlayerCountPlayers$Amount/Plus.NumCreatures -SVar:NumCreatures:Count$Valid Creature +A:SP$ DealDamage | Cost$ X R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select one or more targets to distribute damage to | NumDmg$ X | TargetMin$ Min | TargetMax$ MaxTgts | DividedAsYouChoose$ X | References$ X,Min,MaxTgts | SpellDescription$ CARDNAME deals X damage divided as you choose among any number of targets. +SVar:MaxTgts:PlayerCountPlayers$Amount/Plus.NumCreaturesAndPlaneswalkers +SVar:NumCreaturesAndPlaneswalkers:Count$Valid Creature,Planeswalker SVar:Min:SVar$X/LimitMax.1 SVar:X:Count$xPaid #X Will get overwritten by Announce SVar:Picture:http://www.wizards.com/global/images/magic/general/rolling_thunder.jpg -Oracle:Rolling Thunder deals X damage divided as you choose among any number of target creatures and/or players. +Oracle:Rolling Thunder deals X damage divided as you choose among any number of targets. diff --git a/forge-gui/res/cardsfolder/r/rona_disciple_of_gix.txt b/forge-gui/res/cardsfolder/r/rona_disciple_of_gix.txt index 6ea727fc25c..1b1f3c8d87a 100644 --- a/forge-gui/res/cardsfolder/r/rona_disciple_of_gix.txt +++ b/forge-gui/res/cardsfolder/r/rona_disciple_of_gix.txt @@ -10,6 +10,5 @@ SVar:DBForget:DB$ Pump | Defined$ TriggeredCard | ForgetObjects$ TriggeredCard T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | Static$ True | ValidCard$ Card.Self | Execute$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True A:AB$ Mill | Cost$ 4 T | Defined$ You | NumCards$ 1 | Destination$ Exile | RememberMilled$ True | SpellDescription$ Exile the top card of your library. -SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/rona_disciple_of_gix.jpg Oracle:When Rona, Disciple of Gix enters the battlefield, you may exile target historic card from your graveyard. (Artifacts, legendaries, and Sagas are historic.)\nYou may cast nonland cards exiled with Rona.\n{4}, {T}: Exile the top card of your library. diff --git a/forge-gui/res/cardsfolder/r/ronin_cavekeeper.txt b/forge-gui/res/cardsfolder/r/ronin_cavekeeper.txt index 52a53a0472e..68df37eec12 100644 --- a/forge-gui/res/cardsfolder/r/ronin_cavekeeper.txt +++ b/forge-gui/res/cardsfolder/r/ronin_cavekeeper.txt @@ -2,6 +2,6 @@ Name:Ronin Cavekeeper ManaCost:5 R Types:Creature Human Samurai PT:4/3 -K:Bushido 2 +K:Bushido:2 SVar:Picture:http://www.wizards.com/global/images/magic/general/ronin_cavekeeper.jpg Oracle:Bushido 2 (When this blocks or becomes blocked, it gets +2/+2 until end of turn.) diff --git a/forge-gui/res/cardsfolder/r/ronin_cliffrider.txt b/forge-gui/res/cardsfolder/r/ronin_cliffrider.txt index 49a83da40f0..5f71108785f 100644 --- a/forge-gui/res/cardsfolder/r/ronin_cliffrider.txt +++ b/forge-gui/res/cardsfolder/r/ronin_cliffrider.txt @@ -2,7 +2,7 @@ Name:Ronin Cliffrider ManaCost:3 R R Types:Creature Human Samurai PT:2/2 -K:Bushido 1 +K:Bushido:1 T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDamage | OptionalDecider$ You| TriggerDescription$ Whenever CARDNAME attacks, you may have it deal 1 damage to each creature defending player controls. SVar:TrigDamage:DB$DamageAll | ValidCards$ Creature.DefenderCtrl | NumDmg$ 1| ValidDescription$ each creature defending player controls. SVar:HasAttackEffect:TRUE diff --git a/forge-gui/res/cardsfolder/r/ronin_houndmaster.txt b/forge-gui/res/cardsfolder/r/ronin_houndmaster.txt index 3464f042b6e..b4d5e5a1554 100644 --- a/forge-gui/res/cardsfolder/r/ronin_houndmaster.txt +++ b/forge-gui/res/cardsfolder/r/ronin_houndmaster.txt @@ -3,6 +3,6 @@ ManaCost:2 R Types:Creature Human Samurai PT:2/2 K:Haste -K:Bushido 1 +K:Bushido:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/ronin_houndmaster.jpg Oracle:Haste\nBushido 1 (When this blocks or becomes blocked, it gets +1/+1 until end of turn.) diff --git a/forge-gui/res/cardsfolder/r/root_snare.txt b/forge-gui/res/cardsfolder/r/root_snare.txt new file mode 100644 index 00000000000..091cc0fdf49 --- /dev/null +++ b/forge-gui/res/cardsfolder/r/root_snare.txt @@ -0,0 +1,5 @@ +Name:Root Snare +ManaCost:1 G +Types:Instant +A:SP$ Fog | Cost$ 1 G | SpellDescription$ Prevent all combat damage that would be dealt this turn. +Oracle:Prevent all combat damage that would be dealt this turn. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/r/rootwater_hunter.txt b/forge-gui/res/cardsfolder/r/rootwater_hunter.txt index 3f00674517c..079d32a6e6f 100644 --- a/forge-gui/res/cardsfolder/r/rootwater_hunter.txt +++ b/forge-gui/res/cardsfolder/r/rootwater_hunter.txt @@ -2,7 +2,7 @@ Name:Rootwater Hunter ManaCost:2 U Types:Creature Merfolk PT:1/1 -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:NonCombatPriority:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/rootwater_hunter.jpg -Oracle:{T}: Rootwater Hunter deals 1 damage to target creature or player. +Oracle:{T}: Rootwater Hunter deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/r/rowan_kenrith.txt b/forge-gui/res/cardsfolder/r/rowan_kenrith.txt new file mode 100644 index 00000000000..9868e082f06 --- /dev/null +++ b/forge-gui/res/cardsfolder/r/rowan_kenrith.txt @@ -0,0 +1,17 @@ +Name:Rowan Kenrith +ManaCost:4 R R +Types:Legendary Planeswalker Rowan +Loyalty:4 +Text:CARDNAME can be your commander. +K:Partner:Will Kenrith:Will +A:AB$ Effect | Cost$ AddCounter<2/LOYALTY> | Planeswalker$ True | Name$ Rowan Kenrith Taunt Effect | ValidTgts$ Player | TgtPrompt$ Select target player | StaticAbilities$ MustAttack | References$ MustAttack | RememberObjects$ Targeted | IsCurse$ True | Triggers$ RemoveEffect | SVars$ ExileEffect | Duration$ Permanent | SubAbility$ DBCleanup | SpellDescription$ Creatures target player controls attack this turn if able. +SVar:MustAttack:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.RememberedPlayerCtrl | AddHiddenKeyword$ CARDNAME attacks each combat if able. | Description$ Creatures target opponent controls attack this turn if able. +SVar:RemoveEffect:Mode$ Phase | Phase$ Cleanup | ValidPlayer$ Player.IsRemembered | TriggerZones$ Command | Static$ True | Execute$ ExileEffect +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +A:AB$ DamageAll | Cost$ SubCounter<2/LOYALTY> | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 3 | ValidCards$ Creature.tapped | Planeswalker$ True | ValidDescription$ each tapped creature target player controls. | SpellDescription$ CARDNAME deals 3 damage to each tapped creature target player controls +A:AB$ Effect | Cost$ SubCounter<8/LOYALTY> | Planeswalker$ True | Ultimate$ True | ValidTgts$ Player | EffectOwner$ Targeted | Name$ Emblem - Rowan Kenrith | Image$ emblem_rowan_kenrith | Triggers$ CopyAbility | SVars$ TrigCopy | Duration$ Permanent | AILogic$ Always | SpellDescription$ Target player gets an emblem with "Whenever you activate an ability that isn't a mana ability, copy it. You may choose new targets for the copy." +SVar:CopyAbility:Mode$ AbilityCast | ValidActivatingPlayer$ You | TriggerZones$ Command | Execute$ TrigCopy | TriggerDescription$ Whenever you activate an ability that isn't a mana ability, copy it. You may choose new targets for the copy. +SVar:TrigCopy:DB$ CopySpellAbility | Defined$ TriggeredSpellAbility +DeckHints:Name$Will Kenrith +Oracle:[+2]: During target player's next turn, each creature that player controls attacks if able.\n[-2]: Rowan Kenrith deals 3 damage to each tapped creature target player controls.\n[-8]: Target player gets an emblem with "Whenever you activate an ability that isn't a mana ability, copy it. You may choose new targets for the copy."\nPartner with Will Kenrith\nRowan Kenrith can be your commander.\n diff --git a/forge-gui/res/cardsfolder/r/rukh_egg.txt b/forge-gui/res/cardsfolder/r/rukh_egg.txt index 7eeb43b260e..f3d11d16c08 100644 --- a/forge-gui/res/cardsfolder/r/rukh_egg.txt +++ b/forge-gui/res/cardsfolder/r/rukh_egg.txt @@ -1,10 +1,11 @@ Name:Rukh Egg ManaCost:3 R -Types:Creature Bird +Types:Creature Bird Egg PT:0/3 T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ DelTrigLeaves | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, create a 4/4 red Bird creature token with flying at the beginning of the next end step. SVar:DelTrigLeaves:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigToken | TriggerController$ TriggeredCardController | TriggerDescription$ Create a 4/4 red Bird creature token with flying at the beginning of the next end step. SVar:TrigToken:DB$ Token | TokenOwner$ You | TokenName$ Bird | TokenTypes$ Creature,Bird | TokenColors$ Red | TokenKeywords$ Flying | TokenPower$ 4 | TokenToughness$ 4 | TokenAmount$ 1 SVar:SacMe:4 +DeckHas:Ability$Token SVar:Picture:http://www.wizards.com/global/images/magic/general/rukh_egg.jpg Oracle:When Rukh Egg dies, create a 4/4 red Bird creature token with flying at the beginning of the next end step. diff --git a/forge-gui/res/cardsfolder/r/rumbling_aftershocks.txt b/forge-gui/res/cardsfolder/r/rumbling_aftershocks.txt index b7bf2a27236..6b3de5bd2b8 100644 --- a/forge-gui/res/cardsfolder/r/rumbling_aftershocks.txt +++ b/forge-gui/res/cardsfolder/r/rumbling_aftershocks.txt @@ -1,9 +1,9 @@ Name:Rumbling Aftershocks ManaCost:4 R Types:Enchantment -T:Mode$ SpellCast | ValidCard$ Card.YouCtrl+kicked | TriggerZones$ Battlefield | Execute$ DamageSomeone | OptionalDecider$ You | TriggerDescription$ Whenever you cast a kicked spell, you may have CARDNAME deal damage to target creature or player equal to the number of times that spell was kicked. -SVar:DamageSomeone:DB$ DealDamage | ValidTgts$ Creature,Player | References$ X | NumDmg$ X | TgtPrompt$ Select target creature or player +T:Mode$ SpellCast | ValidCard$ Card.YouCtrl+kicked | TriggerZones$ Battlefield | Execute$ DamageSomeone | OptionalDecider$ You | TriggerDescription$ Whenever you cast a kicked spell, you may have CARDNAME deal damage to any target equal to the number of times that spell was kicked. +SVar:DamageSomeone:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | References$ X | NumDmg$ X | TgtPrompt$ Select any target SVar:X:TriggeredSpellAbility$Count$TimesKicked SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/rumbling_aftershocks.jpg -Oracle:Whenever you cast a kicked spell, you may have Rumbling Aftershocks deal damage to target creature or player equal to the number of times that spell was kicked. +Oracle:Whenever you cast a kicked spell, you may have Rumbling Aftershocks deal damage to any target equal to the number of times that spell was kicked. diff --git a/forge-gui/res/cardsfolder/r/runic_armasaur.txt b/forge-gui/res/cardsfolder/r/runic_armasaur.txt new file mode 100644 index 00000000000..7d8f3649215 --- /dev/null +++ b/forge-gui/res/cardsfolder/r/runic_armasaur.txt @@ -0,0 +1,7 @@ +Name:Runic Armasaur +ManaCost:1 G G +Types:Creature Dinosaur +T:Mode$ AbilityCast | ValidActivatingPlayer$ Opponent | ValidCard$ Creature.inZoneBattlefield,Land.inZoneBattlefield | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigDraw | TriggerDescription$ Whenever an opponent activates an ability of a creature or land that isn't a mana ability, you may draw a card. +SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1 +Oracle:Whenever an opponent activates an ability of a creature or land that isn't a mana ability, you may draw a card. +PT:2/5 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/r/rushblade_commander.txt b/forge-gui/res/cardsfolder/r/rushblade_commander.txt new file mode 100644 index 00000000000..ea8c1cef46d --- /dev/null +++ b/forge-gui/res/cardsfolder/r/rushblade_commander.txt @@ -0,0 +1,8 @@ +Name:Rushblade Commander +ManaCost:B R +Types:Creature Azra Warrior +PT:2/2 +S:Mode$ Continuous | Affected$ Warrior.YourTeamCtrl | AddKeyword$ Haste | Description$ Warriors your team controls have haste. +SVar:PlayMain1:TRUE +SVar:BuffedBy:Warrior +Oracle:Warriors your team controls have haste. diff --git a/forge-gui/res/cardsfolder/r/rustwing_falcon.txt b/forge-gui/res/cardsfolder/r/rustwing_falcon.txt new file mode 100644 index 00000000000..cf3bd9260eb --- /dev/null +++ b/forge-gui/res/cardsfolder/r/rustwing_falcon.txt @@ -0,0 +1,6 @@ +Name:Rustwing Falcon +ManaCost:W +Types:Creature Bird +K:Flying +PT:1/2 +Oracle:Flying diff --git a/forge-gui/res/cardsfolder/s/sacred_white_deer.txt b/forge-gui/res/cardsfolder/s/sacred_white_deer.txt new file mode 100644 index 00000000000..6c903822148 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/sacred_white_deer.txt @@ -0,0 +1,6 @@ +Name:Sacred White Deer +ManaCost:1 G +Types:Creature Elk +A:AB$ GainLife | Cost$ 3 G T | LifeAmount$ 4 | IsPresent$ Planeswalker.Yanggu+YouCtrl | SpellDescription$ You gain 4 life. +Oracle:{3}{G}, {T}: You gain 4 life. Activate this ability only if you control a Yanggu planeswalker. +PT:2/2 diff --git a/forge-gui/res/cardsfolder/s/saheeli_the_gifted.txt b/forge-gui/res/cardsfolder/s/saheeli_the_gifted.txt new file mode 100644 index 00000000000..acb0906840c --- /dev/null +++ b/forge-gui/res/cardsfolder/s/saheeli_the_gifted.txt @@ -0,0 +1,16 @@ +Name:Saheeli, the Gifted +ManaCost:2 U R +Types:Legendary Planeswalker Saheeli +Loyalty:4 +A:AB$ Token | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | TokenAmount$ 1 | TokenName$ Servo | TokenTypes$ Artifact,Creature,Servo | TokenOwner$ You | TokenColors$ Colorless | TokenPower$ 1 | TokenToughness$ 1 | TokenImage$ c 1 1 servo c18 | SpellDescription$ Create a 1/1 colorless Servo artifact creature token. +A:AB$ Effect | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | StaticAbilities$ HBReduceCost | Triggers$ TrigCastSpell | SVars$ RemoveEffect,X | SpellDescription$ The next spell you cast this turn costs {1} less to cast for each artifact you control as you cast it. +SVar:HBReduceCost:Mode$ ReduceCost | EffectZone$ Command | Type$ Spell | ValidCard$ Card | Activator$ You | Amount$ X | References$ X | Description$ The next spell you cast this turn costs {1} less to cast for each artifact you control as you cast it. +SVar:TrigCastSpell:Mode$ SpellCast | ValidActivatingPlayer$ You | TriggerZones$ Command | Execute$ RemoveEffect | Static$ True +SVar:RemoveEffect:DB$ ChangeZone | Origin$ Command | Destination$ Exile +SVar:X:Count$Valid Artifact.YouCtrl +SVar:RemRandomDeck +A:AB$ RepeatEach | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True | RepeatSubAbility$ DBClone | RepeatCards$ Artifact.YouCtrl | AtEOT$ ExileCombat | AddSVars$ SneakAttackEOT | SpellDescription$ For each artifact you control, create a token that's a copy of it. Those tokens gain haste. Exile those tokens at the beginning of the next end step. +SVar:DBClone:DB$ CopyPermanent | Defined$ Remembered | Keywords$ Haste | AtEOT$ Exile | AddSVars$ SneakAttackEOT | AtEOT$ Exile +SVar:SneakAttackEOT:SVar:EndOfTurnLeavePlay:True +K:CARDNAME can be your commander. +Oracle:[+1]: Create a 1/1 colorless Servo artifact creature token.\n[+1]: The next spell you cast this turn costs {1} less to cast for each artifact you control as you cast it.\n[-7]: For each artifact you control, create a token that's a copy of it. Those tokens gain haste. Exile those tokens at the beginning of the next end step.\nSaheeli, the Gifted can be your commander. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/s/saheelis_directive.txt b/forge-gui/res/cardsfolder/s/saheelis_directive.txt new file mode 100644 index 00000000000..f64c2a8a477 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/saheelis_directive.txt @@ -0,0 +1,7 @@ +Name:Saheeli's Directive +ManaCost:X R R R +Types:Sorcery +K:Improvise +A:SP$ Dig | Cost$ X R R R | DigNum$ X | Reveal$ True | AnyNumber$ True | ChangeValid$ Artifact.cmcLEX | ChangeNum$ X | DestinationZone$ Battlefield | DestinationZone2$ Graveyard | References$ X | SpellDescription$ Reveal the top X cards of your library. You may put any number of artifact cards with converted mana cost X or less from among them onto the battlefield. Then put all cards revealed this way that weren't put onto the battlefield into your graveyard. +SVar:X:Count$xPaid +Oracle:Improvise (Each artifact you tap after you're done activating mana abilities pays for {1}.)\nReveal the top X cards of your library. You may put any number of artifact cards with converted mana cost X or less from among them onto the battlefield. Then put all cards revealed this way that weren't put onto the battlefield into your graveyard. diff --git a/forge-gui/res/cardsfolder/s/sai_master_thopterist.txt b/forge-gui/res/cardsfolder/s/sai_master_thopterist.txt new file mode 100644 index 00000000000..6c1d9ccc2d9 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/sai_master_thopterist.txt @@ -0,0 +1,10 @@ +Name:Sai, Master Thopterist +ManaCost:2 U +Types:Legendary Creature Human Artificer +T:Mode$ SpellCast | ValidActivatingPlayer$ You | ValidCard$ Artifact | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Whenever you cast an artifact spell, create a 1/1 colorless Thopter artifact creature token with flying. +SVar:TrigToken:DB$ Token | TokenOwner$ You | TokenAmount$ 1 | TokenPower$ 1 | TokenToughness$ 1 | TokenColors$ Colorless | TokenName$ Thopter | TokenTypes$ Thopter,Artifact,Creature | TokenKeywords$ Flying | TokenImage$ c 1 1 thopter m19 +A:AB$ Draw | Cost$ 1 U Sac<2/Artifact> | Defined$ You | NumCards$ 1 | SpellDescription$ Draw a card. +DeckHints:Type$Artifact +DeckHas:Ability$Token +Oracle:Whenever you cast an artifact spell, create a 1/1 colorless Thopter artifact creature token with flying.\n{1}{U}, Sacrifice two artifacts: Draw a card. +PT:1/4 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/s/sakashima_the_impostor.txt b/forge-gui/res/cardsfolder/s/sakashima_the_impostor.txt index dd599c39b63..db012d45c58 100644 --- a/forge-gui/res/cardsfolder/s/sakashima_the_impostor.txt +++ b/forge-gui/res/cardsfolder/s/sakashima_the_impostor.txt @@ -3,9 +3,8 @@ ManaCost:2 U U Types:Legendary Creature Human Rogue PT:3/1 # Make Svars for granting abilities and triggers on clones distinct to avoid SVars getting overwritten when cloning a clone -K:ETBReplacement:Copy:ChooseCreature:Optional -SVar:ChooseCreature:DB$ ChooseCard | Defined$ You | Amount$ 1 | Choices$ Creature.Other | SubAbility$ DBCopy | RememberChosen$ True | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of any creature on the battlefield, except its name is still CARDNAME, it's legendary in addition to its other types, and it gains "{2}{U}{U}: Return CARDNAME to its owner's hand at the beginning of the next end step." -SVar:DBCopy:DB$ Clone | Defined$ Remembered | KeepName$ True | AddTypes$ Legendary | AddAbilities$ ReturnSakashima | AddSVars$ TrigReturnSak +K:ETBReplacement:Copy:DBCopy:Optional +SVar:DBCopy:DB$ Clone | Choices$ Creature.Other | KeepName$ True | AddTypes$ Legendary | AddAbilities$ ReturnSakashima | AddSVars$ TrigReturnSak | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of any creature on the battlefield, except its name is still CARDNAME, it's legendary in addition to its other types, and it gains "{2}{U}{U}: Return CARDNAME to its owner's hand at the beginning of the next end step." SVar:ReturnSakashima:AB$ DelayedTrigger | Cost$ 2 U U | Mode$ Phase | Phase$ End of Turn | Execute$ TrigReturnSak | SpellDescription$ Return CARDNAME to it's owners hand at the beginning of the next end step. SVar:TrigReturnSak:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Hand SVar:Picture:http://www.wizards.com/global/images/magic/general/sakashima_the_impostor.jpg diff --git a/forge-gui/res/cardsfolder/s/sakashimas_student.txt b/forge-gui/res/cardsfolder/s/sakashimas_student.txt index 8fbfe634b11..0e532ea1083 100644 --- a/forge-gui/res/cardsfolder/s/sakashimas_student.txt +++ b/forge-gui/res/cardsfolder/s/sakashimas_student.txt @@ -3,8 +3,7 @@ ManaCost:2 U U Types:Creature Human Ninja PT:0/0 K:Ninjutsu:1 U -K:ETBReplacement:Copy:ChooseCreature:Optional -SVar:ChooseCreature:DB$ ChooseCard | Defined$ You | Amount$ 1 | Choices$ Creature.Other | SubAbility$ DBCopy | RememberChosen$ True | AILogic$ Clone | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of any creature on the battlefield, except it's a Ninja in addition to its other creature types. -SVar:DBCopy:DB$ Clone | Defined$ Remembered | AddTypes$ Ninja +K:ETBReplacement:Copy:DBCopy:Optional +SVar:DBCopy:DB$ Clone | Choices$ Creature.Other | AddTypes$ Ninja | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of any creature on the battlefield, except it's a Ninja in addition to its other creature types. SVar:Picture:http://www.wizards.com/global/images/magic/general/sakashimas_student.jpg Oracle:Ninjutsu {1}{U} ({1}{U}, Return an unblocked attacker you control to hand: Put this card onto the battlefield from your hand tapped and attacking.)\nYou may have Sakashima's Student enter the battlefield as a copy of any creature on the battlefield, except it's a Ninja in addition to its other creature types. diff --git a/forge-gui/res/cardsfolder/s/saltwater_stalwart.txt b/forge-gui/res/cardsfolder/s/saltwater_stalwart.txt new file mode 100644 index 00000000000..486bda436c0 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/saltwater_stalwart.txt @@ -0,0 +1,7 @@ +Name:Saltwater Stalwart +ManaCost:3 U +Types:Creature Merfolk Warrior +PT:2/4 +T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Opponent | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever CARDNAME deals damage to an opponent, target player draws a card. +SVar:TrigDraw:DB$Draw | NumCards$ 1 | ValidTgts$ Player | TgtPrompt$ Choose a player +Oracle:Whenever Saltwater Stalwart deals damage to an opponent, target player draws a card. diff --git a/forge-gui/res/cardsfolder/s/salvager_of_secrets.txt b/forge-gui/res/cardsfolder/s/salvager_of_secrets.txt new file mode 100644 index 00000000000..d9f027516f3 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/salvager_of_secrets.txt @@ -0,0 +1,8 @@ +Name:Salvager of Secrets +ManaCost:3 U U +Types:Creature Merfolk Wizard +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChangeZone | TriggerDescription$ When CARDNAME enters the battlefield, return target instant or sorcery card from your graveyard to your hand. +SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Instant.YouCtrl,Sorcery.YouCtrl | TgtPrompt$ Select target instant or sorcery card in your graveyard +DeckHints:Type$Instant|Sorcery +Oracle:When Salvager of Secrets enters the battlefield, return target instant or sorcery card from your graveyard to your hand. +PT:2/2 diff --git a/forge-gui/res/cardsfolder/s/samite_archer.txt b/forge-gui/res/cardsfolder/s/samite_archer.txt index 956c0b54508..203ea5226f8 100644 --- a/forge-gui/res/cardsfolder/s/samite_archer.txt +++ b/forge-gui/res/cardsfolder/s/samite_archer.txt @@ -2,8 +2,8 @@ Name:Samite Archer ManaCost:1 W U Types:Creature Human Cleric Archer PT:1/1 -A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to target creature or player this turn. -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to any target this turn. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/samite_archer.jpg SVar:NonCombatPriority:1 -Oracle:{T}: Prevent the next 1 damage that would be dealt to target creature or player this turn.\n{T}: Samite Archer deals 1 damage to target creature or player. +Oracle:{T}: Prevent the next 1 damage that would be dealt to any target this turn.\n{T}: Samite Archer deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/samite_healer.txt b/forge-gui/res/cardsfolder/s/samite_healer.txt index 4773bb85ff7..9fe832a4079 100644 --- a/forge-gui/res/cardsfolder/s/samite_healer.txt +++ b/forge-gui/res/cardsfolder/s/samite_healer.txt @@ -2,7 +2,7 @@ Name:Samite Healer ManaCost:1 W Types:Creature Human Cleric PT:1/1 -A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to any target this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/samite_healer.jpg SVar:NonCombatPriority:10 -Oracle:{T}: Prevent the next 1 damage that would be dealt to target creature or player this turn. +Oracle:{T}: Prevent the next 1 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/s/samurai_enforcers.txt b/forge-gui/res/cardsfolder/s/samurai_enforcers.txt index cea7583f18b..b8531335dad 100644 --- a/forge-gui/res/cardsfolder/s/samurai_enforcers.txt +++ b/forge-gui/res/cardsfolder/s/samurai_enforcers.txt @@ -2,6 +2,6 @@ Name:Samurai Enforcers ManaCost:4 W W Types:Creature Human Samurai PT:4/4 -K:Bushido 2 +K:Bushido:2 SVar:Picture:http://www.wizards.com/global/images/magic/general/samurai_enforcers.jpg Oracle:Bushido 2 (When this blocks or becomes blocked, it gets +2/+2 until end of turn.) diff --git a/forge-gui/res/cardsfolder/s/samurai_of_the_pale_curtain.txt b/forge-gui/res/cardsfolder/s/samurai_of_the_pale_curtain.txt index 4e086b54bc2..f2b9ccb9f29 100644 --- a/forge-gui/res/cardsfolder/s/samurai_of_the_pale_curtain.txt +++ b/forge-gui/res/cardsfolder/s/samurai_of_the_pale_curtain.txt @@ -2,7 +2,7 @@ Name:Samurai of the Pale Curtain ManaCost:W W Types:Creature Fox Samurai PT:2/2 -K:Bushido 1 +K:Bushido:1 R:Event$ Moved | ActiveZones$ Battlefield | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Permanent | ReplaceWith$ Exile | Description$ If a permanent would be put into a graveyard, exile it instead. SVar:Exile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | Defined$ ReplacedCard SVar:Picture:http://www.wizards.com/global/images/magic/general/samurai_of_the_pale_curtain.jpg diff --git a/forge-gui/res/cardsfolder/s/samut_the_tested.txt b/forge-gui/res/cardsfolder/s/samut_the_tested.txt index c6cff2e6d56..fadeb333f3c 100644 --- a/forge-gui/res/cardsfolder/s/samut_the_tested.txt +++ b/forge-gui/res/cardsfolder/s/samut_the_tested.txt @@ -3,7 +3,7 @@ ManaCost:2 R G Types:Legendary Planeswalker Samut Loyalty:4 A:AB$ Pump | Cost$ AddCounter<1/LOYALTY> | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Creature | Planeswalker$ True | KW$ Double Strike | SpellDescription$ Up to one target creature gains double strike until end of turn. -A:AB$ DealDamage | Cost$ SubCounter<2/LOYALTY> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to distribute damage to | NumDmg$ 2 | TargetMin$ 1 | TargetMax$ 2 | DividedAsYouChoose$ 2 | Planeswalker$ True | SpellDescription$ CARDNAME deals 2 damage divided as you choose among one or two target creatures and/or players. +A:AB$ DealDamage | Cost$ SubCounter<2/LOYALTY> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to distribute damage to | NumDmg$ 2 | TargetMin$ 1 | TargetMax$ 2 | DividedAsYouChoose$ 2 | Planeswalker$ True | SpellDescription$ CARDNAME deals 2 damage divided as you choose among one or two targets. A:AB$ ChangeZone | Cost$ SubCounter<7/LOYALTY> | Origin$ Library | Destination$ Battlefield | ChangeType$ Creature,Planeswalker | ChangeNum$ 2 | Planeswalker$ True | Ultimate$ True | SpellDescription$ Search your library for up to two creature and/or planeswalker cards, put them onto the battlefield, then shuffle your library. SVar:Picture:http://www.wizards.com/global/images/magic/general/samut_the_tested.jpg -Oracle:[+1]: Up to one target creature gains double strike until end of turn.\n[-2]: Samut, the Tested deals 2 damage divided as you choose among one or two target creatures and/or players.\n[-7]: Search your library for up to two creature and/or planeswalker cards, put them onto the battlefield, then shuffle your library. \ No newline at end of file +Oracle:[+1]: Up to one target creature gains double strike until end of turn.\n[-2]: Samut, the Tested deals 2 damage divided as you choose among one or two targets.\n[-7]: Search your library for up to two creature and/or planeswalker cards, put them onto the battlefield, then shuffle your library. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/s/sanctum_custodian.txt b/forge-gui/res/cardsfolder/s/sanctum_custodian.txt index 2d1e503d540..66b8b9e871e 100644 --- a/forge-gui/res/cardsfolder/s/sanctum_custodian.txt +++ b/forge-gui/res/cardsfolder/s/sanctum_custodian.txt @@ -2,7 +2,7 @@ Name:Sanctum Custodian ManaCost:2 W Types:Creature Human Cleric PT:1/2 -A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 2 | SpellDescription$ Prevent the next 2 damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 2 | SpellDescription$ Prevent the next 2 damage that would be dealt to any target this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/sanctum_custodian.jpg SVar:NonCombatPriority:2 -Oracle:{T}: Prevent the next 2 damage that would be dealt to target creature or player this turn. +Oracle:{T}: Prevent the next 2 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/s/sanctum_guardian.txt b/forge-gui/res/cardsfolder/s/sanctum_guardian.txt index c23f89469f2..495af6fbbd5 100644 --- a/forge-gui/res/cardsfolder/s/sanctum_guardian.txt +++ b/forge-gui/res/cardsfolder/s/sanctum_guardian.txt @@ -2,12 +2,12 @@ Name:Sanctum Guardian ManaCost:1 W W Types:Creature Human Cleric PT:1/4 -A:AB$ ChooseSource | Cost$ Sac<1/CARDNAME> | Choices$ Card,Emblem | AILogic$ NeedsPrevention | SubAbility$ DBEffect | SpellDescription$ The next time a source of your choice would deal damage to target creature or player this turn, prevent that damage. -SVar:DBEffect:DB$ Effect | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to prevent damage to | Triggers$ OutOfSight | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Targeted | SVars$ RPreventNextFromSource,OutOfSight,ExileEffect | SubAbility$ DBCleanup | ConditionDefined$ ChosenCard | ConditionPresent$ Card,Emblem | ConditionCompare$ GE1 +A:AB$ ChooseSource | Cost$ Sac<1/CARDNAME> | Choices$ Card,Emblem | AILogic$ NeedsPrevention | SubAbility$ DBEffect | SpellDescription$ The next time a source of your choice would deal damage to any target this turn, prevent that damage. +SVar:DBEffect:DB$ Effect | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to prevent damage to | Triggers$ OutOfSight | ReplacementEffects$ RPreventNextFromSource | RememberObjects$ Targeted | SVars$ RPreventNextFromSource,OutOfSight,ExileEffect | SubAbility$ DBCleanup | ConditionDefined$ ChosenCard | ConditionPresent$ Card,Emblem | ConditionCompare$ GE1 SVar:OutOfSight:Mode$ ChangesZone | TriggerZones$ Command | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.IsRemembered | Execute$ ExileEffect | Static$ True -SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.ChosenCard,Emblem.ChosenCard | ValidTarget$ Card.IsRemembered,Player.IsRemembered | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time the chosen source deals damage to the targeted creature or player, prevent that damage. +SVar:RPreventNextFromSource:Event$ DamageDone | ValidSource$ Card.ChosenCard,Emblem.ChosenCard | ValidTarget$ Card.IsRemembered,Player.IsRemembered | ReplaceWith$ ExileEffect | PreventionEffect$ True | Description$ The next time the chosen source deals damage to any target this turn, prevent that damage. SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/sanctum_guardian.jpg -Oracle:Sacrifice Sanctum Guardian: The next time a source of your choice would deal damage to target creature or player this turn, prevent that damage. +Oracle:Sacrifice Sanctum Guardian: The next time a source of your choice would deal damage to any target this turn, prevent that damage. diff --git a/forge-gui/res/cardsfolder/s/sarkhan_dragonsoul.txt b/forge-gui/res/cardsfolder/s/sarkhan_dragonsoul.txt new file mode 100644 index 00000000000..335023bcc99 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/sarkhan_dragonsoul.txt @@ -0,0 +1,9 @@ +Name:Sarkhan, Dragonsoul +ManaCost:4 R R +Types:Legendary Planeswalker Sarkhan +A:AB$ DamageAll | Cost$ AddCounter<2/LOYALTY> | Planeswalker$ True | ValidPlayers$ Player.Opponent | ValidCards$ Creature.OppCtrl | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to each opponent and each creature your opponents control. +A:AB$ DealDamage | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | AILogic$ ChoiceBurn | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target player or planeswalker. +A:AB$ ChangeZone | Cost$ SubCounter<9/LOYALTY> | Origin$ Library | Destination$ Battlefield | ChangeType$ Creature.Dragon | ChangeNum$ XFetch | Planeswalker$ True | Ultimate$ True | StackDescription$ SpellDescription | References$ XFetch | SpellDescription$ Search your library for any number of Dragon creature cards, put them onto the battlefield, then shuffle your library. +DeckHints:Type$Dragon +Oracle:[+2]: Sarkhan, Dragonsoul deals 1 damage to each opponent and each creature your opponents control.\n[−3]: Sarkhan, Dragonsoul deals 4 damage to target player or planeswalker.\n[−9]: Search your library for any number of Dragon creature cards, put them onto the battlefield, then shuffle your library. +Loyalty:5 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/s/sarkhan_fireblood.txt b/forge-gui/res/cardsfolder/s/sarkhan_fireblood.txt new file mode 100644 index 00000000000..c85a1e5e8a0 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/sarkhan_fireblood.txt @@ -0,0 +1,11 @@ +Name:Sarkhan, Fireblood +ManaCost:1 R R +Types:Legendary Planeswalker Sarkhan +A:AB$ Discard | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | NumCards$ 1 | Optional$ True | Mode$ TgtChoose | RememberDiscarded$ True | SubAbility$ DBDraw | SpellDescription$ You may discard a card. If you do, draw a card. +SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ 1 | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +A:AB$ Mana | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | Produced$ Combo W U B R G | Amount$ 2 | RestrictValid$ Card.Dragon | SpellDescription$ Add two mana in any combination of colors. Spend this mana only to cast Dragon spells. +A:AB$ Token | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True | TokenAmount$ 4 | TokenPower$ 5 | TokenToughness$ 5 | TokenColors$ Red | TokenName$ Dragon | TokenTypes$ Dragon,Creature | TokenKeywords$ Flying | TokenImage$ r 5 5 dragon m19 | SpellDescription$ Create four 5/5 red Dragon creature tokens with flying. +DeckHas:Ability$Token +Oracle:[+1]: You may discard a card. If you do, draw a card.\n[+1]: Add two mana in any combination of colors. Spend this mana only to cast Dragon spells.\n[-7]: Create four 5/5 red Dragon creature tokens with flying. +Loyalty:3 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/s/sarkhan_the_dragonspeaker.txt b/forge-gui/res/cardsfolder/s/sarkhan_the_dragonspeaker.txt index 860c299e018..89fe8a2070f 100644 --- a/forge-gui/res/cardsfolder/s/sarkhan_the_dragonspeaker.txt +++ b/forge-gui/res/cardsfolder/s/sarkhan_the_dragonspeaker.txt @@ -2,7 +2,7 @@ Name:Sarkhan, the Dragonspeaker ManaCost:3 R R Types:Legendary Planeswalker Sarkhan Loyalty:4 -A:AB$ Animate | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | Power$ 4 | Toughness$ 4 | Types$ Creature,Legendary,Dragon | Colors$ Red | OverwriteColors$ True | OverwriteTypes$ True | KeepSupertypes$ True | Keywords$ Flying & Indestructible & Haste | SpellDescription$ Until end of turn, CARDNAME becomes a legendary 4/4 red Dragon creature with flying, indestructible, and haste. (He doesn't lose loyalty while he's not a planeswalker.) +A:AB$ Animate | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | Power$ 4 | Toughness$ 4 | Types$ Creature,Legendary,Dragon | Colors$ Red | OverwriteColors$ True | RemoveCardTypes$ True | Keywords$ Flying & Indestructible & Haste | SpellDescription$ Until end of turn, CARDNAME becomes a legendary 4/4 red Dragon creature with flying, indestructible, and haste. (He doesn't lose loyalty while he's not a planeswalker.) A:AB$ DealDamage | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target creature. A:AB$ Effect | Cost$ SubCounter<6/LOYALTY> | Planeswalker$ True | Ultimate$ True | Name$ Emblem - Sarkhan, the Dragonspeaker | Triggers$ BODTrig,EOTTrig | SVars$ SarkhanDraw,SarkhanDiscard | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "At the beginning of your draw step, draw two additional cards" and "At the beginning of your end step, discard your hand." SVar:BODTrig:Mode$ Phase | Phase$ Draw | ValidPlayer$ You | TriggerZones$ Command | Execute$ SarkhanDraw | TriggerDescription$ At the beginning of your draw step, draw two additional cards. diff --git a/forge-gui/res/cardsfolder/s/sarkhan_the_mad.txt b/forge-gui/res/cardsfolder/s/sarkhan_the_mad.txt index b23fb1ab862..e28b9061a0e 100644 --- a/forge-gui/res/cardsfolder/s/sarkhan_the_mad.txt +++ b/forge-gui/res/cardsfolder/s/sarkhan_the_mad.txt @@ -9,8 +9,8 @@ SVar:Y:Remembered$CardManaCost A:AB$ Destroy | Cost$ SubCounter<2/LOYALTY> | ValidTgts$ Creature | TgtPrompt$ Select target creature | Sacrifice$ True | SubAbility$ DBToken | Planeswalker$ True | AILogic$ MadSarkhanDragon | SpellDescription$ Target creature's controller sacrifices it, then that player creates a 5/5 red Dragon creature token with flying. SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenName$ Dragon | TokenTypes$ Creature,Dragon | TokenOwner$ TargetedController | TokenColors$ Red | TokenPower$ 5 | TokenToughness$ 5 | TokenImage$ r 5 5 dragon WWK | TokenKeywords$ Flying #for this AF, the DefinedCards$ Self is the target for Each damaging. They EachDamage themselves. -A:AB$ EachDamage | Cost$ SubCounter<4/LOYALTY> | ValidCards$ Dragon.Creature+YouCtrl | ValidDescription$ Dragon creature you control | NumDmg$ X | DamageDesc$ damage equal to its power | ValidTgts$ Player | TgtPrompt$ Select target player | Planeswalker$ True | Ultimate$ True | References$ X | AILogic$ MadSarkhanUltimate | SpellDescription$ Each Dragon creature you control deals damage equal to its power to target player. +A:AB$ EachDamage | Cost$ SubCounter<4/LOYALTY> | ValidCards$ Dragon.Creature+YouCtrl | ValidDescription$ Dragon creature you control | NumDmg$ X | DamageDesc$ damage equal to its power | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | Planeswalker$ True | Ultimate$ True | References$ X | AILogic$ MadSarkhanUltimate | SpellDescription$ Each Dragon creature you control deals damage equal to its power to target player or planeswalker. #NumDmg isn't really used here. It is left for clarity. The AF pulls Damage straight from "X" hardcoded. SVar:X:Count$CardPower SVar:Picture:http://www.wizards.com/global/images/magic/general/sarkhan_the_mad.jpg -Oracle:[0]: Reveal the top card of your library and put it into your hand. Sarkhan the Mad deals damage to himself equal to that card's converted mana cost.\n[-2]: Target creature's controller sacrifices it, then that player creates a 5/5 red Dragon creature token with flying.\n[-4]: Each Dragon creature you control deals damage equal to its power to target player. +Oracle:[0]: Reveal the top card of your library and put it into your hand. Sarkhan the Mad deals damage to himself equal to that card's converted mana cost.\n[-2]: Target creature's controller sacrifices it, then that player creates a 5/5 red Dragon creature token with flying.\n[-4]: Each Dragon creature you control deals damage equal to its power to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/s/sarkhans_dragonfire.txt b/forge-gui/res/cardsfolder/s/sarkhans_dragonfire.txt new file mode 100644 index 00000000000..3378c88125d --- /dev/null +++ b/forge-gui/res/cardsfolder/s/sarkhans_dragonfire.txt @@ -0,0 +1,6 @@ +Name:Sarkhan's Dragonfire +ManaCost:3 R R +Types:Sorcery +A:SP$ DealDamage | Cost$ 3 R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 4 | SubAbility$ DBDig | SpellDescription$ CARDNAME deals 4 damage to any target. +SVar:DBDig:DB$ Dig | DigNum$ 5 | ChangeNum$ 1 | Optional$ True | ForceRevealToController$ True | ChangeValid$ Card.Red | SpellDescription$ Look at the top five cards of your library. You may reveal a red card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. +Oracle:Sarkhan’s Dragonfire deals 3 damage to any target.\nLook at the top five cards of your library. You may reveal a red card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. diff --git a/forge-gui/res/cardsfolder/s/sarkhans_rage.txt b/forge-gui/res/cardsfolder/s/sarkhans_rage.txt index d9e7f97edd3..aabd209b7d7 100644 --- a/forge-gui/res/cardsfolder/s/sarkhans_rage.txt +++ b/forge-gui/res/cardsfolder/s/sarkhans_rage.txt @@ -1,7 +1,7 @@ Name:Sarkhan's Rage ManaCost:4 R Types:Instant -A:SP$ DealDamage | Cost$ 4 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 5 | SubAbility$ DBDealDamage | SpellDescription$ CARDNAME deals 5 damage to target creature or player. If you control no Dragons, CARDNAME deals 2 damage to you. +A:SP$ DealDamage | Cost$ 4 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 5 | SubAbility$ DBDealDamage | SpellDescription$ CARDNAME deals 5 damage to any target. If you control no Dragons, CARDNAME deals 2 damage to you. SVar:DBDealDamage:DB$ DealDamage | Defined$ You | ConditionPresent$ Dragon.YouCtrl | ConditionCompare$ EQ0 | NumDmg$ 2 SVar:Picture:http://www.wizards.com/global/images/magic/general/sarkhans_rage.jpg -Oracle:Sarkhan's Rage deals 5 damage to target creature or player. If you control no Dragons, Sarkhan's Rage deals 2 damage to you. +Oracle:Sarkhan's Rage deals 5 damage to any target. If you control no Dragons, Sarkhan's Rage deals 2 damage to you. diff --git a/forge-gui/res/cardsfolder/s/sarkhans_unsealing.txt b/forge-gui/res/cardsfolder/s/sarkhans_unsealing.txt new file mode 100644 index 00000000000..a49d93e787e --- /dev/null +++ b/forge-gui/res/cardsfolder/s/sarkhans_unsealing.txt @@ -0,0 +1,8 @@ +Name:Sarkhan's Unsealing +ManaCost:3 R +Types:Enchantment +T:Mode$ SpellCast | ValidCard$ Creature.powerGE4+powerLE6 | ValidActivatingPlayer$ You | Execute$ TrigDamage | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast a creature spell with power 4, 5, or 6, Sarkhan’s Unsealing deals 4 damage to any target. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to any target. +T:Mode$ SpellCast | ValidCard$ Creature.powerGE7 | ValidActivatingPlayer$ You | Execute$ TrigDamageAll | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast a creature spell with power 7 or greater, Sarkhan’s Unsealing deals 4 damage to each opponent and each creature and planeswalker they control. +SVar:TrigDamageAll:DB$ DamageAll | ValidCards$ Creature.OppCtrl,Planeswalker.OppCtrl | ValidPlayers$ Player.Opponent | NumDmg$ 4 | ValidDescription$ each opponent and each creature and planeswalker they control. +Oracle:Whenever you cast a creature spell with power 4, 5, or 6, Sarkhan’s Unsealing deals 4 damage to any target.\nWhenever you cast a creature spell with power 7 or greater, Sarkhan’s Unsealing deals 4 damage to each opponent and each creature and planeswalker they control. diff --git a/forge-gui/res/cardsfolder/s/sarkhans_whelp.txt b/forge-gui/res/cardsfolder/s/sarkhans_whelp.txt new file mode 100644 index 00000000000..68f46dd71f5 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/sarkhans_whelp.txt @@ -0,0 +1,9 @@ +Name:Sarkhan's Whelp +ManaCost:2 R +Types:Creature Dragon +PT:2/2 +K:Flying +T:Mode$ AbilityCast | ValidCard$ Planeswalker.Sarkhan | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever you activate an ability of a Sarkhan planeswalker, CARDNAME deals 1 damage to any target. +SVar:TrigDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 +DeckHints:Type$Sarkhan +Oracle:Flying (This creature can’t be blocked except by creatures with flying or reach.)\nWhenever you activate an ability of a Sarkhan planeswalker, Sarkhan’s Whelp deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/satyr_enchanter.txt b/forge-gui/res/cardsfolder/s/satyr_enchanter.txt new file mode 100644 index 00000000000..32a871100d9 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/satyr_enchanter.txt @@ -0,0 +1,9 @@ +Name:Satyr Enchanter +ManaCost:1 G W +Types:Creature Satyr Druid +PT:2/2 +T:Mode$ SpellCast | ValidCard$ Enchantment | ValidActivatingPlayer$ You | Execute$ TrigDraw | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast an enchantment spell, draw a card. +SVar:TrigDraw:DB$Draw | Defined$ You | NumCards$ 1 +SVar:RemRandomDeck:True +SVar:Picture:http://www.wizards.com/global/images/magic/general/satyr_enchanter.jpg +Oracle:Whenever you cast an enchantment spell, draw a card. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/s/saving_grasp.txt b/forge-gui/res/cardsfolder/s/saving_grasp.txt index 4449b7b2da0..da2baf4bba4 100644 --- a/forge-gui/res/cardsfolder/s/saving_grasp.txt +++ b/forge-gui/res/cardsfolder/s/saving_grasp.txt @@ -1,7 +1,7 @@ Name:Saving Grasp ManaCost:U Types:Instant -K:Flashback W +K:Flashback:W A:SP$ ChangeZone | Cost$ U | ValidTgts$ Creature.YouOwn | TgtPrompt$ Select target creature card you own | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return target creature card you own to your hand. SVar:Picture:http://www.wizards.com/global/images/magic/general/saving_grasp.jpg Oracle:Return target creature you own to your hand.\nFlashback {W} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/s/scalding_devil.txt b/forge-gui/res/cardsfolder/s/scalding_devil.txt index 7a1709c7b95..44bcef4c16e 100644 --- a/forge-gui/res/cardsfolder/s/scalding_devil.txt +++ b/forge-gui/res/cardsfolder/s/scalding_devil.txt @@ -2,6 +2,6 @@ Name:Scalding Devil ManaCost:1 R Types:Creature Devil PT:1/1 -A:AB$ DealDamage | Cost$ 2 R | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target player. +A:AB$ DealDamage | Cost$ 2 R | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target player or planeswalker. SVar:Picture:http://www.wizards.com/global/images/magic/general/scalding_devil.jpg -Oracle:{2}{R}: Scalding Devil deals 1 damage to target player. +Oracle:{2}{R}: Scalding Devil deals 1 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/s/scalding_tongs.txt b/forge-gui/res/cardsfolder/s/scalding_tongs.txt index 48f6528db8c..4f73e40f7d2 100644 --- a/forge-gui/res/cardsfolder/s/scalding_tongs.txt +++ b/forge-gui/res/cardsfolder/s/scalding_tongs.txt @@ -1,7 +1,7 @@ Name:Scalding Tongs ManaCost:2 Types:Artifact -T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | IsPresent$ Card.YouCtrl | PresentZone$ Hand | PresentCompare$ LE3 | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ At the beginning of your upkeep, if you have three or fewer cards in hand, CARDNAME deals 1 damage to target opponent. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Opponent | NumDmg$ 1 +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | IsPresent$ Card.YouCtrl | PresentZone$ Hand | PresentCompare$ LE3 | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ At the beginning of your upkeep, if you have three or fewer cards in hand, CARDNAME deals 1 damage to target opponent or planeswalker. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Opponent,Planeswalker | NumDmg$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/scalding_tongs.jpg -Oracle:At the beginning of your upkeep, if you have three or fewer cards in hand, Scalding Tongs deals 1 damage to target opponent. +Oracle:At the beginning of your upkeep, if you have three or fewer cards in hand, Scalding Tongs deals 1 damage to target opponent or planeswalker. diff --git a/forge-gui/res/cardsfolder/s/scaldkin.txt b/forge-gui/res/cardsfolder/s/scaldkin.txt index bf8f335274d..54bb9fe4619 100644 --- a/forge-gui/res/cardsfolder/s/scaldkin.txt +++ b/forge-gui/res/cardsfolder/s/scaldkin.txt @@ -3,6 +3,6 @@ ManaCost:3 U Types:Creature Elemental PT:2/2 K:Flying -A:AB$ DealDamage | Cost$ 2 R Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:AB$ DealDamage | Cost$ 2 R Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/scaldkin.jpg -Oracle:Flying\n{2}{R}, Sacrifice Scaldkin: Scaldkin deals 2 damage to target creature or player. +Oracle:Flying\n{2}{R}, Sacrifice Scaldkin: Scaldkin deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/scars_of_the_veteran.txt b/forge-gui/res/cardsfolder/s/scars_of_the_veteran.txt index 50e8d9744e8..72a6e87235b 100644 --- a/forge-gui/res/cardsfolder/s/scars_of_the_veteran.txt +++ b/forge-gui/res/cardsfolder/s/scars_of_the_veteran.txt @@ -2,12 +2,12 @@ Name:Scars of the Veteran ManaCost:4 W Types:Instant SVar:AltCost:Cost$ ExileFromHand<1/Card.White> | Description$ You may exile a white card from your hand rather than pay CARDNAME's mana cost. -A:SP$ PreventDamage | Cost$ 4 W | ValidTgts$ Creature,Player | Amount$ 7 | PreventionSubAbility$ ScarEffect | ShieldEffectTarget$ Targeted | TgtPrompt$ Select target creature or player | SpellDescription$ Prevent the next 7 damage that would be dealt to target creature or player this turn. At the beginning of the next end step, put a +0/+1 counter on that creature for each 1 damage prevented this way. -SVar:ScarEffect:DB$ Effect | RememberObjects$ ShieldEffectTarget | Triggers$ DelTrig,OutOfSight,NoCreatTgt | SVars$ DelayedScars,ExileEffect | SpellDescription$ At the beginning of the next end step, put a +0/+1 counter on the targeted creature for each 1 damage prevented this way. -SVar:DelTrig:Mode$ Phase | Phase$ End of Turn | Execute$ DelayedScars | TriggerDescription$ Put a +0/+1 counter on the targeted creature for each 1 damage prevented this way. +A:SP$ PreventDamage | Cost$ 4 W | ValidTgts$ Creature,Player,Planeswalker | Amount$ 7 | PreventionSubAbility$ ScarEffect | ShieldEffectTarget$ Targeted | TgtPrompt$ Select any target | SpellDescription$ Prevent the next 7 damage that would be dealt to any target this turn. If it's a creature, put a +0/+1 counter on it for each 1 damage prevented this way at the beginning of the next end step. +SVar:ScarEffect:DB$ Effect | RememberObjects$ ShieldEffectTarget | Triggers$ DelTrig,OutOfSight,NoCreatTgt | SVars$ DelayedScars,ExileEffect | SpellDescription$ If it's a creature, put a +0/+1 counter on it for each 1 damage prevented this way at the beginning of the next end step. +SVar:DelTrig:Mode$ Phase | Phase$ End of Turn | Execute$ DelayedScars | TriggerDescription$ If it's a creature, put a +0/+1 counter on it for each 1 damage prevented this way at the beginning of the next end step. SVar:DelayedScars:DB$ PutCounter | Defined$ Remembered | CounterType$ P0P1 | CounterNum$ PreventedDamage | SubAbility$ ExileEffect -SVar:OutOfSight:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Creature.IsRemembered | Execute$ ExileEffect | Static$ True -SVar:NoCreatTgt:Mode$ Always | IsPresent$ Creature.IsRemembered | PresentCompare$ EQ0 | Execute$ ExileEffect | Static$ True +SVar:OutOfSight:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Permanent.IsRemembered | Execute$ ExileEffect | Static$ True +SVar:NoCreatTgt:Mode$ Always | IsPresent$ Permanent.IsRemembered | PresentCompare$ EQ0 | Execute$ ExileEffect | Static$ True SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile | Static$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/scars_of_the_veteran.jpg -Oracle:You may exile a white card from your hand rather than pay Scars of the Veteran's mana cost.\nPrevent the next 7 damage that would be dealt to target creature or player this turn. At the beginning of the next end step, put a +0/+1 counter on that creature for each 1 damage prevented this way. +Oracle:You may exile a white card from your hand rather than pay Scars of the Veteran's mana cost.\nPrevent the next 7 damage that would be dealt to any target this turn. If it's a creature, put a +0/+1 counter on it for each 1 damage prevented this way at the beginning of the next end step. diff --git a/forge-gui/res/cardsfolder/s/scent_of_cinder.txt b/forge-gui/res/cardsfolder/s/scent_of_cinder.txt index 1f38a461c90..c5642b390c9 100644 --- a/forge-gui/res/cardsfolder/s/scent_of_cinder.txt +++ b/forge-gui/res/cardsfolder/s/scent_of_cinder.txt @@ -1,10 +1,10 @@ Name:Scent of Cinder ManaCost:1 R Types:Sorcery -A:SP$ Reveal | Cost$ 1 R | Defined$ You | RevealValid$ Card.Red | AnyNumber$ True | RememberRevealed$ True | SubAbility$ DBScentOfCinderDamage | SpellDescription$ Reveal any number of red cards in your hand. CARDNAME deals X damage to target creature or player, where X is the number of cards revealed this way. -SVar:DBScentOfCinderDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ ScentOfCinderX | SubAbility$ DBScentOfCinderCleanup | References$ ScentOfCinderX +A:SP$ Reveal | Cost$ 1 R | Defined$ You | RevealValid$ Card.Red | AnyNumber$ True | RememberRevealed$ True | SubAbility$ DBScentOfCinderDamage | SpellDescription$ Reveal any number of red cards in your hand. CARDNAME deals X damage to any target, where X is the number of cards revealed this way. +SVar:DBScentOfCinderDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ ScentOfCinderX | SubAbility$ DBScentOfCinderCleanup | References$ ScentOfCinderX SVar:ScentOfCinderX:Remembered$Amount SVar:DBScentOfCinderCleanup:DB$ Cleanup | ClearRemembered$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/scent_of_cinder.jpg -Oracle:Reveal any number of red cards in your hand. Scent of Cinder deals X damage to target creature or player, where X is the number of cards revealed this way. +Oracle:Reveal any number of red cards in your hand. Scent of Cinder deals X damage to any target, where X is the number of cards revealed this way. diff --git a/forge-gui/res/cardsfolder/s/scepter_of_empires.txt b/forge-gui/res/cardsfolder/s/scepter_of_empires.txt index 26737c50db4..6e07c6d65ae 100644 --- a/forge-gui/res/cardsfolder/s/scepter_of_empires.txt +++ b/forge-gui/res/cardsfolder/s/scepter_of_empires.txt @@ -1,7 +1,7 @@ Name:Scepter of Empires ManaCost:3 Types:Artifact -A:AB$ DealDamage | Cost$ T | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ X | References$ X,Y,Z,AllM12Empires | SpellDescription$ CARDNAME deals 1 damage to target player. It deals 3 damage to that player instead if you control artifacts named Crown of Empires and Throne of Empires. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ X | References$ X,Y,Z,AllM12Empires | SpellDescription$ CARDNAME deals 1 damage to target player or planeswalker. It deals 3 damage to that player or planeswalker instead if you control artifacts named Crown of Empires and Throne of Empires. SVar:X:Count$Compare AllM12Empires GT0.3.1 SVar:AllM12Empires:SVar$Z/Times.Y SVar:Z:Count$Valid Artifact.namedCrown of Empires+YouCtrl @@ -9,4 +9,4 @@ SVar:Y:Count$Valid Artifact.namedThrone of Empires+YouCtrl SVar:RemRandomDeck:True DeckHints:Name$Throne of Empires|Crown of Empires SVar:Picture:http://www.wizards.com/global/images/magic/general/scepter_of_empires.jpg -Oracle:{T}: Scepter of Empires deals 1 damage to target player. It deals 3 damage to that player instead if you control artifacts named Crown of Empires and Throne of Empires. +Oracle:{T}: Scepter of Empires deals 1 damage to target player or planeswalker. It deals 3 damage to that player or planeswalker instead if you control artifacts named Crown of Empires and Throne of Empires. diff --git a/forge-gui/res/cardsfolder/s/scholar_of_stars.txt b/forge-gui/res/cardsfolder/s/scholar_of_stars.txt new file mode 100644 index 00000000000..f0cf9f50e2c --- /dev/null +++ b/forge-gui/res/cardsfolder/s/scholar_of_stars.txt @@ -0,0 +1,8 @@ +Name:Scholar of Stars +ManaCost:3 U +Types:Creature Human Artificer +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigDraw | TriggerDescription$ When CARDNAME enters the battlefield, if you control an artifact, draw a card. +SVar:TrigDraw:DB$ Draw | ConditionPresent$ Artifact.YouCtrl | ConditionCompare$ GE1 | Defined$ You | NumCards$ 1 +DeckHints:Type$Artifact +Oracle:When Scholar of Stars enters the battlefield, if you control an artifact, draw a card. +PT:3/2 diff --git a/forge-gui/res/cardsfolder/s/scorched_rusalka.txt b/forge-gui/res/cardsfolder/s/scorched_rusalka.txt index 03e738ebe75..1c9787fcfa8 100644 --- a/forge-gui/res/cardsfolder/s/scorched_rusalka.txt +++ b/forge-gui/res/cardsfolder/s/scorched_rusalka.txt @@ -2,7 +2,7 @@ Name:Scorched Rusalka ManaCost:R Types:Creature Spirit PT:1/1 -A:AB$ DealDamage | Cost$ R Sac<1/Creature> | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target player. +A:AB$ DealDamage | Cost$ R Sac<1/Creature> | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target player or planeswalker. SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/scorched_rusalka.jpg -Oracle:{R}, Sacrifice a creature: Scorched Rusalka deals 1 damage to target player. +Oracle:{R}, Sacrifice a creature: Scorched Rusalka deals 1 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/s/scorching_lava.txt b/forge-gui/res/cardsfolder/s/scorching_lava.txt index 8aa602e19ba..836b1c71568 100644 --- a/forge-gui/res/cardsfolder/s/scorching_lava.txt +++ b/forge-gui/res/cardsfolder/s/scorching_lava.txt @@ -2,7 +2,7 @@ Name:Scorching Lava ManaCost:1 R Types:Instant K:Kicker:R -A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | ReplaceDyingDefined$ Targeted | ReplaceDyingCondition$ Kicked | SubAbility$ KickingLava | SpellDescription$ CARDNAME deals 2 damage to target creature or player. If CARDNAME was kicked, that creature can't be regenerated this turn and if it would die this turn, exile it instead. +A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | ReplaceDyingDefined$ Targeted | ReplaceDyingCondition$ Kicked | SubAbility$ KickingLava | SpellDescription$ CARDNAME deals 2 damage to any target. If CARDNAME was kicked, that creature can't be regenerated this turn and if it would die this turn, exile it instead. SVar:KickingLava:DB$Pump | KW$ HIDDEN CARDNAME can't be regenerated. | Defined$ Targeted | Condition$ Kicked | ConditionDescription$ If Scorching Lava was kicked, SVar:Picture:http://www.wizards.com/global/images/magic/general/scorching_lava.jpg -Oracle:Kicker {R} (You may pay an additional {R} as you cast this spell.)\nScorching Lava deals 2 damage to target creature or player. If Scorching Lava was kicked, that creature can't be regenerated this turn and if it would die this turn, exile it instead. +Oracle:Kicker {R} (You may pay an additional {R} as you cast this spell.)\nScorching Lava deals 2 damage to any target. If Scorching Lava was kicked, that creature can't be regenerated this turn and if it would die this turn, exile it instead. diff --git a/forge-gui/res/cardsfolder/s/scorching_missile.txt b/forge-gui/res/cardsfolder/s/scorching_missile.txt index 88866033c54..cbdd3896060 100644 --- a/forge-gui/res/cardsfolder/s/scorching_missile.txt +++ b/forge-gui/res/cardsfolder/s/scorching_missile.txt @@ -1,7 +1,7 @@ Name:Scorching Missile ManaCost:3 R Types:Sorcery -K:Flashback 9 R -A:SP$ DealDamage | Cost$ 3 R | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target player. +K:Flashback:9 R +A:SP$ DealDamage | Cost$ 3 R | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target player or planeswalker. SVar:Picture:http://www.wizards.com/global/images/magic/general/scorching_missile.jpg -Oracle:Scorching Missile deals 4 damage to target player.\nFlashback {9}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.) +Oracle:Scorching Missile deals 4 damage to target player or planeswalker.\nFlashback {9}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/s/scorching_spear.txt b/forge-gui/res/cardsfolder/s/scorching_spear.txt index cd8fa716035..5447116523b 100644 --- a/forge-gui/res/cardsfolder/s/scorching_spear.txt +++ b/forge-gui/res/cardsfolder/s/scorching_spear.txt @@ -1,6 +1,6 @@ Name:Scorching Spear ManaCost:R Types:Sorcery -A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ Scorching Spear deals 1 damage to target creature or player. +A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ Scorching Spear deals 1 damage to any target. SVar:Picture:http://serv4.tcgimages.eu/img/cards/Portal/scorching_spear.jpg -Oracle:Scorching Spear deals 1 damage to target creature or player. +Oracle:Scorching Spear deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/scourge_of_valkas.txt b/forge-gui/res/cardsfolder/s/scourge_of_valkas.txt index 8c71069b8dd..f572ee5e92e 100644 --- a/forge-gui/res/cardsfolder/s/scourge_of_valkas.txt +++ b/forge-gui/res/cardsfolder/s/scourge_of_valkas.txt @@ -3,12 +3,12 @@ ManaCost:2 R R R Types:Creature Dragon PT:4/4 K:Flying -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDamage | TriggerDescription$ Whenever CARDNAME or another Dragon enters the battlefield under your control, it deals X damage to target creature or player, where X is the number of Dragons you control. -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Dragon.Other+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDamage | Secondary$ True | TriggerDescription$ Whenever CARDNAME or another Dragon enters the battlefield under your control, it deals X damage to target creature or player, where X is the number of Dragons you control. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player | NumDmg$ NumDragons | References$ NumDragons | TgtPrompt$ Select a target creature or player | DamageSource$ TriggeredCard +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDamage | TriggerDescription$ Whenever CARDNAME or another Dragon enters the battlefield under your control, it deals X damage to any target, where X is the number of Dragons you control. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Dragon.Other+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDamage | Secondary$ True | TriggerDescription$ Whenever CARDNAME or another Dragon enters the battlefield under your control, it deals X damage to any target, where X is the number of Dragons you control. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | NumDmg$ NumDragons | References$ NumDragons | TgtPrompt$ Select any target | DamageSource$ TriggeredCard SVar:NumDragons:Count$Valid Dragon.YouCtrl A:AB$ Pump | Cost$ R | NumAtt$ +1 | SpellDescription$ CARDNAME gets +1/+0 until end of turn. SVar:PlayMain1:TRUE SVar:BuffedBy:Dragon SVar:Picture:http://www.wizards.com/global/images/magic/general/scourge_of_valkas.jpg -Oracle:Flying\nWhenever Scourge of Valkas or another Dragon enters the battlefield under your control, it deals X damage to target creature or player, where X is the number of Dragons you control.\n{R}: Scourge of Valkas gets +1/+0 until end of turn. +Oracle:Flying\nWhenever Scourge of Valkas or another Dragon enters the battlefield under your control, it deals X damage to any target, where X is the number of Dragons you control.\n{R}: Scourge of Valkas gets +1/+0 until end of turn. diff --git a/forge-gui/res/cardsfolder/s/scrapyard_salvo.txt b/forge-gui/res/cardsfolder/s/scrapyard_salvo.txt index 51b14d4c4bb..8f1690c936f 100644 --- a/forge-gui/res/cardsfolder/s/scrapyard_salvo.txt +++ b/forge-gui/res/cardsfolder/s/scrapyard_salvo.txt @@ -1,8 +1,8 @@ Name:Scrapyard Salvo ManaCost:1 R R Types:Sorcery -A:SP$ DealDamage | Cost$ 1 R R | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage to target player equal to the number of artifact cards in your graveyard. +A:SP$ DealDamage | Cost$ 1 R R | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage to target player or planeswalker equal to the number of artifact cards in your graveyard. SVar:X:Count$TypeInYourYard.Artifact SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/scrapyard_salvo.jpg -Oracle:Scrapyard Salvo deals damage to target player equal to the number of artifact cards in your graveyard. +Oracle:Scrapyard Salvo deals damage to target player or planeswalker equal to the number of artifact cards in your graveyard. diff --git a/forge-gui/res/cardsfolder/s/screeching_phoenix.txt b/forge-gui/res/cardsfolder/s/screeching_phoenix.txt new file mode 100644 index 00000000000..02ed342291e --- /dev/null +++ b/forge-gui/res/cardsfolder/s/screeching_phoenix.txt @@ -0,0 +1,8 @@ +Name:Screeching Phoenix +ManaCost:4 R R +Types:Creature Phoenix +PT:4/4 +K:Flying +A:AB$ PumpAll | Cost$ 2 R | ValidCards$ Creature.YouCtrl | NumAtt$ +1 | SpellDescription$ Creatures you control get +1/+0 until end of turn. +Oracle:Flying\n{2}{R}: Creatures you control get +1/+0 until end of turn. + diff --git a/forge-gui/res/cardsfolder/s/sculpting_steel.txt b/forge-gui/res/cardsfolder/s/sculpting_steel.txt index bf518d6afa7..6521ad86929 100644 --- a/forge-gui/res/cardsfolder/s/sculpting_steel.txt +++ b/forge-gui/res/cardsfolder/s/sculpting_steel.txt @@ -1,8 +1,7 @@ Name:Sculpting Steel ManaCost:3 Types:Artifact -K:ETBReplacement:Copy:ChooseArtifact:Optional -SVar:ChooseArtifact:DB$ ChooseCard | Defined$ You | Amount$ 1 | Choices$ Artifact.Other | SubAbility$ DBCopy | RememberChosen$ True | AILogic$ Clone | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of any artifact on the battlefield. -SVar:DBCopy:DB$ Clone | Defined$ Remembered +K:ETBReplacement:Copy:DBCopy:Optional +SVar:DBCopy:DB$ Clone | Choices$ Artifact.Other | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of any artifact on the battlefield. SVar:Picture:http://www.wizards.com/global/images/magic/general/sculpting_steel.jpg Oracle:You may have Sculpting Steel enter the battlefield as a copy of any artifact on the battlefield. diff --git a/forge-gui/res/cardsfolder/upcoming/sea_of_clouds.txt b/forge-gui/res/cardsfolder/s/sea_of_clouds.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sea_of_clouds.txt rename to forge-gui/res/cardsfolder/s/sea_of_clouds.txt diff --git a/forge-gui/res/cardsfolder/s/sea_snidd.txt b/forge-gui/res/cardsfolder/s/sea_snidd.txt index c096ae729f4..91a7402a6f0 100644 --- a/forge-gui/res/cardsfolder/s/sea_snidd.txt +++ b/forge-gui/res/cardsfolder/s/sea_snidd.txt @@ -3,7 +3,7 @@ ManaCost:4 U Types:Creature Beast PT:3/3 A:AB$ ChooseType | Cost$ T | Defined$ You | Type$ Basic Land | SubAbility$ DBAnimate | SpellDescription$ Target land becomes the basic land type of your choice until end of turn. -SVar:DBAnimate:DB$ Animate | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ ChosenType | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | RemoveAllAbilities$ True +SVar:DBAnimate:DB$ Animate | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ ChosenType | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/sea_snidd.jpg Oracle:{T}: Target land becomes the basic land type of your choice until end of turn. diff --git a/forge-gui/res/cardsfolder/s/seal_of_fire.txt b/forge-gui/res/cardsfolder/s/seal_of_fire.txt index e4403984aa5..7719da735ee 100644 --- a/forge-gui/res/cardsfolder/s/seal_of_fire.txt +++ b/forge-gui/res/cardsfolder/s/seal_of_fire.txt @@ -1,7 +1,7 @@ Name:Seal of Fire ManaCost:R Types:Enchantment -A:AB$ DealDamage | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:AB$ DealDamage | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:PlayMain1:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/seal_of_fire.jpg -Oracle:Sacrifice Seal of Fire: Seal of Fire deals 2 damage to target creature or player. +Oracle:Sacrifice Seal of Fire: Seal of Fire deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/searing_blaze.txt b/forge-gui/res/cardsfolder/s/searing_blaze.txt index 0376815c804..5f2f0553616 100644 --- a/forge-gui/res/cardsfolder/s/searing_blaze.txt +++ b/forge-gui/res/cardsfolder/s/searing_blaze.txt @@ -1,8 +1,9 @@ Name:Searing Blaze ManaCost:R R Types:Instant -A:SP$ DealDamage | Cost$ R R | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ SearingX | SubAbility$ SearingDamage | References$ SearingX | SpellDescription$ CARDNAME deals 1 damage to target player and 1 damage to target creature that player controls. Landfall — If you had a land enter the battlefield under your control this turn, CARDNAME deals 3 damage to that player and 3 damage to that creature instead. -SVar:SearingDamage:DB$ DealDamage | ValidTgts$ Creature.TargetedPlayerCtrl | TgtPrompt$ Select target creature that player controls | NumDmg$ SearingX | References$ SearingX +A:SP$ DealDamage | Cost$ R R | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ SearingX | DamageMap$ True | SubAbility$ SearingDamage | References$ SearingX | SpellDescription$ CARDNAME deals 1 damage to target player or planeswalker and 1 damage to target creature that player or that planeswalker's controller controls. Landfall — If you had a land enter the battlefield under your control this turn, CARDNAME deals 3 damage to that player or planeswalker and 3 damage to that creature instead. +SVar:SearingDamage:DB$ DealDamage | ValidTgts$ Creature.ControlledBy TargetedOrController | TgtPrompt$ Select target creature that player or that planeswalker's controller controls | NumDmg$ SearingX | References$ SearingX | SubAbility$ DBDamageResolve +SVar:DBDamageResolve:DB$ DamageResolve SVar:SearingX:Count$Landfall.3.1 SVar:Picture:http://www.wizards.com/global/images/magic/general/searing_blaze.jpg -Oracle:Searing Blaze deals 1 damage to target player and 1 damage to target creature that player controls.\nLandfall — If you had a land enter the battlefield under your control this turn, Searing Blaze deals 3 damage to that player and 3 damage to that creature instead. +Oracle:Searing Blaze deals 1 damage to target player or planeswalker and 1 damage to target creature that player or that planeswalker's controller controls.\nLandfall — If you had a land enter the battlefield under your control this turn, Searing Blaze deals 3 damage to that player or planeswalker and 3 damage to that creature instead. diff --git a/forge-gui/res/cardsfolder/s/searing_flesh.txt b/forge-gui/res/cardsfolder/s/searing_flesh.txt index ebc94ba0ee5..ce167472e34 100644 --- a/forge-gui/res/cardsfolder/s/searing_flesh.txt +++ b/forge-gui/res/cardsfolder/s/searing_flesh.txt @@ -1,6 +1,6 @@ Name:Searing Flesh ManaCost:6 R Types:Sorcery -A:SP$ DealDamage | Cost$ 6 R | ValidTgts$ Opponent | NumDmg$ 7 | SpellDescription$ CARDNAME deals 7 damage to target opponent. +A:SP$ DealDamage | Cost$ 6 R | ValidTgts$ Opponent,Planeswalker | NumDmg$ 7 | SpellDescription$ CARDNAME deals 7 damage to target opponent or planeswalker. SVar:Picture:http://www.wizards.com/global/images/magic/general/searing_flesh.jpg -Oracle:Searing Flesh deals 7 damage to target opponent. +Oracle:Searing Flesh deals 7 damage to target opponent or planeswalker. diff --git a/forge-gui/res/cardsfolder/s/searing_meditation.txt b/forge-gui/res/cardsfolder/s/searing_meditation.txt index c2d7d75dcb2..ea432350c71 100644 --- a/forge-gui/res/cardsfolder/s/searing_meditation.txt +++ b/forge-gui/res/cardsfolder/s/searing_meditation.txt @@ -1,8 +1,8 @@ Name:Searing Meditation ManaCost:1 R W Types:Enchantment -T:Mode$ LifeGained | ValidPlayer$ You | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigDamage | TriggerDescription$ Whenever you gain life, you may pay {2}. If you do, CARDNAME deals 2 damage to target creature or player. -SVar:TrigDamage:AB$DealDamage | Cost$ 2 | NumDmg$ 2 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player +T:Mode$ LifeGained | ValidPlayer$ You | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigDamage | TriggerDescription$ Whenever you gain life, you may pay {2}. If you do, CARDNAME deals 2 damage to any target. +SVar:TrigDamage:AB$DealDamage | Cost$ 2 | NumDmg$ 2 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/searing_meditation.jpg -Oracle:Whenever you gain life, you may pay {2}. If you do, Searing Meditation deals 2 damage to target creature or player. +Oracle:Whenever you gain life, you may pay {2}. If you do, Searing Meditation deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/searing_spear.txt b/forge-gui/res/cardsfolder/s/searing_spear.txt index 513fd48319c..e1c25621d95 100644 --- a/forge-gui/res/cardsfolder/s/searing_spear.txt +++ b/forge-gui/res/cardsfolder/s/searing_spear.txt @@ -1,6 +1,6 @@ Name:Searing Spear ManaCost:1 R Types:Instant -A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. +A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/searing_spear.jpg -Oracle:Searing Spear deals 3 damage to target creature or player. +Oracle:Searing Spear deals 3 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/searing_touch.txt b/forge-gui/res/cardsfolder/s/searing_touch.txt index 7f4dea687e7..6ecb36ae54d 100644 --- a/forge-gui/res/cardsfolder/s/searing_touch.txt +++ b/forge-gui/res/cardsfolder/s/searing_touch.txt @@ -1,7 +1,7 @@ Name:Searing Touch ManaCost:R Types:Instant -A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. K:Buyback:4 SVar:Picture:http://www.wizards.com/global/images/magic/general/searing_touch.jpg -Oracle:Buyback {4} (You may pay an additional {4} as you cast this spell. If you do, put this card into your hand as it resolves.)\nSearing Touch deals 1 damage to target creature or player. +Oracle:Buyback {4} (You may pay an additional {4} as you cast this spell. If you do, put this card into your hand as it resolves.)\nSearing Touch deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/searing_wind.txt b/forge-gui/res/cardsfolder/s/searing_wind.txt index 041e99e4288..e0898492ee6 100644 --- a/forge-gui/res/cardsfolder/s/searing_wind.txt +++ b/forge-gui/res/cardsfolder/s/searing_wind.txt @@ -1,6 +1,6 @@ Name:Searing Wind ManaCost:8 R Types:Instant -A:SP$ DealDamage | Cost$ 8 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 10 | SpellDescription$ CARDNAME deals 10 damage to target creature or player. +A:SP$ DealDamage | Cost$ 8 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 10 | SpellDescription$ CARDNAME deals 10 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/searing_wind.jpg -Oracle:Searing Wind deals 10 damage to target creature or player. +Oracle:Searing Wind deals 10 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/seas_claim.txt b/forge-gui/res/cardsfolder/s/seas_claim.txt index 602272edfce..961ef91e3f6 100644 --- a/forge-gui/res/cardsfolder/s/seas_claim.txt +++ b/forge-gui/res/cardsfolder/s/seas_claim.txt @@ -3,6 +3,6 @@ ManaCost:U Types:Enchantment Aura K:Enchant land A:SP$ Attach | Cost$ U | ValidTgts$ Land | AILogic$ ChangeType -S:Mode$ Continuous | Affected$ Card.EnchantedBy | AddType$ Island | RemoveSubTypes$ True | RemoveAllAbilities$ True | Description$ Enchanted land is an Island. +S:Mode$ Continuous | Affected$ Card.EnchantedBy | AddType$ Island | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True | Description$ Enchanted land is an Island. SVar:Picture:http://www.wizards.com/global/images/magic/general/seas_claim.jpg Oracle:Enchant land (Target a land as you cast this. This card enters the battlefield attached to that land.)\nEnchanted land is an Island. diff --git a/forge-gui/res/cardsfolder/s/seismic_assault.txt b/forge-gui/res/cardsfolder/s/seismic_assault.txt index 9a883226a65..8619de0b6a3 100644 --- a/forge-gui/res/cardsfolder/s/seismic_assault.txt +++ b/forge-gui/res/cardsfolder/s/seismic_assault.txt @@ -1,7 +1,7 @@ Name:Seismic Assault ManaCost:R R R Types:Enchantment -A:AB$ DealDamage | Cost$ Discard<1/Land> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:AB$ DealDamage | Cost$ Discard<1/Land> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/seismic_assault.jpg SVar:NonStackingEffect:True -Oracle:Discard a land card: Seismic Assault deals 2 damage to target creature or player. +Oracle:Discard a land card: Seismic Assault deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/seize_the_day.txt b/forge-gui/res/cardsfolder/s/seize_the_day.txt index 6b16013e550..2830149ea6b 100644 --- a/forge-gui/res/cardsfolder/s/seize_the_day.txt +++ b/forge-gui/res/cardsfolder/s/seize_the_day.txt @@ -1,7 +1,7 @@ Name:Seize the Day ManaCost:3 R Types:Sorcery -K:Flashback 2 R +K:Flashback:2 R A:SP$ Untap | Cost$ 3 R | ValidTgts$ Creature | SubAbility$ DBAddCombat | SpellDescription$ Untap target creature. After this main phase, there is an additional combat phase followed by an additional main phase. SVar:DBAddCombat:DB$ AddPhase | ExtraPhase$ BeginCombat | FollowedBy$ ThisPhase | ConditionPhases$ Main1,Main2 SVar:Picture:http://www.wizards.com/global/images/magic/general/seize_the_day.jpg diff --git a/forge-gui/res/cardsfolder/s/sensei_golden_tail.txt b/forge-gui/res/cardsfolder/s/sensei_golden_tail.txt index a4fec351bae..03eda37eee9 100644 --- a/forge-gui/res/cardsfolder/s/sensei_golden_tail.txt +++ b/forge-gui/res/cardsfolder/s/sensei_golden_tail.txt @@ -2,8 +2,8 @@ Name:Sensei Golden-Tail ManaCost:1 W Types:Legendary Creature Fox Samurai PT:2/1 -K:Bushido 1 +K:Bushido:1 A:AB$ PutCounter | Cost$ 1 W T | ValidTgts$ Creature | TgtPrompt$ Select target creature | CounterType$ TRAINING | CounterNum$ 1 | SorcerySpeed$ True | SubAbility$ DBAnimate | SpellDescription$ Put a training counter on target creature. That creature gains bushido 1 and becomes a Samurai in addition to its other creature types. Activate this ability only any time you could cast a sorcery. -SVar:DBAnimate:DB$Animate | Defined$ Targeted | Types$ Samurai | Keywords$ Bushido 1 | Permanent$ True +SVar:DBAnimate:DB$Animate | Defined$ Targeted | Types$ Samurai | Keywords$ Bushido:1 | Permanent$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/sensei_golden_tail.jpg Oracle:Bushido 1 (When this blocks or becomes blocked, it gets +1/+1 until end of turn.)\n{1}{W}, {T}: Put a training counter on target creature. That creature gains bushido 1 and becomes a Samurai in addition to its other creature types. Activate this ability only any time you could cast a sorcery. diff --git a/forge-gui/res/cardsfolder/s/serra_paladin.txt b/forge-gui/res/cardsfolder/s/serra_paladin.txt index 4332a46b6b2..9df670e815f 100644 --- a/forge-gui/res/cardsfolder/s/serra_paladin.txt +++ b/forge-gui/res/cardsfolder/s/serra_paladin.txt @@ -2,7 +2,7 @@ Name:Serra Paladin ManaCost:2 W W Types:Creature Human Knight PT:2/2 -A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to any target this turn. A:AB$ Pump | Cost$ 1 W W T | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ Vigilance | SpellDescription$ Target creature gains vigilance until end of turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/serra_paladin.jpg -Oracle:{T}: Prevent the next 1 damage that would be dealt to target creature or player this turn.\n{1}{W}{W}, {T}: Target creature gains vigilance until end of turn. +Oracle:{T}: Prevent the next 1 damage that would be dealt to any target this turn.\n{1}{W}{W}, {T}: Target creature gains vigilance until end of turn. diff --git a/forge-gui/res/cardsfolder/s/serras_guardian.txt b/forge-gui/res/cardsfolder/s/serras_guardian.txt new file mode 100644 index 00000000000..b779c5c1c63 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/serras_guardian.txt @@ -0,0 +1,9 @@ +Name:Serra's Guardian +ManaCost:4 W W +Types:Creature Angel +K:Flying +K:Vigilance +S:Mode$ Continuous | Affected$ Creature.YouCtrl+Other | AddKeyword$ Vigilance | Description$ Other creatures you control have vigilance. +SVar:PlayMain1:TRUE +Oracle:Flying\nVigilance (Attacking doesn't cause this creature to tap.)\nOther creatures you control have vigilance. +PT:5/5 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/s/serras_hymn.txt b/forge-gui/res/cardsfolder/s/serras_hymn.txt index a03d424953d..757834b7bf7 100644 --- a/forge-gui/res/cardsfolder/s/serras_hymn.txt +++ b/forge-gui/res/cardsfolder/s/serras_hymn.txt @@ -3,10 +3,10 @@ ManaCost:W Types:Enchantment T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of your upkeep, you may put a verse counter on CARDNAME. SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ VERSE | CounterNum$ 1 -A:AB$ PreventDamage | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to prevent damage to | Amount$ X | TargetMin$ 1 | TargetMax$ MaxTgts | DividedAsYouChoose$ X | References$ X,MaxTgts,NumCreatures | SpellDescription$ Prevent the next X damage that would be dealt this turn to any number of target creatures and/or players, divided as you choose, where X is the number of verse counters on CARDNAME. +A:AB$ PreventDamage | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to prevent damage to | Amount$ X | TargetMin$ 1 | TargetMax$ MaxTgts | DividedAsYouChoose$ X | References$ X,MaxTgts,NumCreatures | SpellDescription$ Prevent the next X damage that would be dealt this turn to any number of targets, divided as you choose, where X is the number of verse counters on CARDNAME. SVar:X:Count$CardCounters.VERSE SVar:MaxTgts:PlayerCountPlayers$Amount/Plus.NumCreatures -SVar:NumCreatures:Count$Valid Creature +SVar:NumCreatures:Count$Valid Creature,Planeswalker SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/serras_hymn.jpg -Oracle:At the beginning of your upkeep, you may put a verse counter on Serra's Hymn.\nSacrifice Serra's Hymn: Prevent the next X damage that would be dealt this turn to any number of target creatures and/or players, divided as you choose, where X is the number of verse counters on Serra's Hymn. +Oracle:At the beginning of your upkeep, you may put a verse counter on Serra's Hymn.\nSacrifice Serra's Hymn: Prevent the next X damage that would be dealt this turn to any number of targets, divided as you choose, where X is the number of verse counters on Serra's Hymn. diff --git a/forge-gui/res/cardsfolder/s/sever_the_bloodline.txt b/forge-gui/res/cardsfolder/s/sever_the_bloodline.txt index a5271cb293a..1e9bee946eb 100644 --- a/forge-gui/res/cardsfolder/s/sever_the_bloodline.txt +++ b/forge-gui/res/cardsfolder/s/sever_the_bloodline.txt @@ -1,7 +1,7 @@ Name:Sever the Bloodline ManaCost:3 B Types:Sorcery -K:Flashback 5 B B +K:Flashback:5 B B A:SP$ ChangeZone | Cost$ 3 B | Origin$ Battlefield | Destination$ Exile | ValidTgts$ Creature | TgtPrompt$ Select target creature | RememberTargets$ True | ForgetOtherTargets$ True | SubAbility$ DBSearch | SpellDescription$ Exile target creature and all other creatures with the same name as that creature. SVar:DBSearch:DB$ChangeZoneAll | Origin$ Battlefield | Destination$ Exile | ChangeType$ Remembered.sameName | Shuffle$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$Cleanup | ClearRemembered$ True diff --git a/forge-gui/res/cardsfolder/s/shades_breath.txt b/forge-gui/res/cardsfolder/s/shades_breath.txt index ceda1541e88..2d00ea550c7 100644 --- a/forge-gui/res/cardsfolder/s/shades_breath.txt +++ b/forge-gui/res/cardsfolder/s/shades_breath.txt @@ -1,7 +1,7 @@ Name:Shade's Breath ManaCost:1 B Types:Instant -A:SP$ AnimateAll | Cost$ 1 B | ValidCards$ Creature.YouCtrl | Colors$ Black | OverwriteColors$ True | Types$ Shade | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True| Abilities$ ABPump | SpellDescription$ Until end of turn, each creature you control becomes black, its creature type becomes Shade, and it gains "{B}: This creature gets +1/+1 until end of turn." +A:SP$ AnimateAll | Cost$ 1 B | ValidCards$ Creature.YouCtrl | Colors$ Black | OverwriteColors$ True | Types$ Shade | RemoveCreatureTypes$ True | Abilities$ ABPump | SpellDescription$ Until end of turn, each creature you control becomes black, its creature type becomes Shade, and it gains "{B}: This creature gets +1/+1 until end of turn." SVar:ABPump:AB$Pump | Cost$ B | NumAtt$ +1 | NumDef$ +1 | SpellDescription$ CARDNAME gets +1/+1 until end of turn. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/shades_breath.jpg diff --git a/forge-gui/res/cardsfolder/s/shadow_guildmage.txt b/forge-gui/res/cardsfolder/s/shadow_guildmage.txt index cf0b5c5c305..1d8223ef621 100644 --- a/forge-gui/res/cardsfolder/s/shadow_guildmage.txt +++ b/forge-gui/res/cardsfolder/s/shadow_guildmage.txt @@ -3,7 +3,7 @@ ManaCost:B Types:Creature Human Wizard PT:1/1 A:AB$ ChangeZone | Cost$ U T | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | Origin$ Battlefield | Destination$ Library | LibraryPosition$ 0 | SpellDescription$ Put target creature you control on top of its owner's library. -A:AB$ DealDamage | Cost$ R T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SubAbility$ DBDealDamage | SpellDescription$ CARDNAME deals 1 damage to target creature or player and 1 damage to you. +A:AB$ DealDamage | Cost$ R T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SubAbility$ DBDealDamage | SpellDescription$ CARDNAME deals 1 damage to any target and 1 damage to you. SVar:DBDealDamage:DB$DealDamage | Defined$ You | NumDmg$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/shadow_guildmage.jpg -Oracle:{U}, {T}: Put target creature you control on top of its owner's library.\n{R}, {T}: Shadow Guildmage deals 1 damage to target creature or player and 1 damage to you. +Oracle:{U}, {T}: Put target creature you control on top of its owner's library.\n{R}, {T}: Shadow Guildmage deals 1 damage to any target and 1 damage to you. diff --git a/forge-gui/res/cardsfolder/s/shambling_shell.txt b/forge-gui/res/cardsfolder/s/shambling_shell.txt index 0aca536570e..3603dea2ecf 100644 --- a/forge-gui/res/cardsfolder/s/shambling_shell.txt +++ b/forge-gui/res/cardsfolder/s/shambling_shell.txt @@ -3,6 +3,6 @@ ManaCost:1 B G Types:Creature Plant Zombie PT:3/1 A:AB$ PutCounter | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature | TgtPrompt$ Select target creature | CounterType$ P1P1 | CounterNum$ 1 | SpellDescription$ Put a +1/+1 counter on target creature. -K:Dredge 3 +K:Dredge:3 SVar:Picture:http://www.wizards.com/global/images/magic/general/shambling_shell.jpg Oracle:Sacrifice Shambling Shell: Put a +1/+1 counter on target creature.\nDredge 3 (If you would draw a card, instead you may put exactly three cards from the top of your library into your graveyard. If you do, return this card from your graveyard to your hand. Otherwise, draw a card.) diff --git a/forge-gui/res/cardsfolder/s/shard_volley.txt b/forge-gui/res/cardsfolder/s/shard_volley.txt index c86d76c21a2..6e7409a99ad 100644 --- a/forge-gui/res/cardsfolder/s/shard_volley.txt +++ b/forge-gui/res/cardsfolder/s/shard_volley.txt @@ -1,6 +1,6 @@ Name:Shard Volley ManaCost:R Types:Instant -A:SP$ DealDamage | Cost$ R Sac<1/Land> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. +A:SP$ DealDamage | Cost$ R Sac<1/Land> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/shard_volley.jpg -Oracle:As an additional cost to cast Shard Volley, sacrifice a land.\nShard Volley deals 3 damage to target creature or player. +Oracle:As an additional cost to cast Shard Volley, sacrifice a land.\nShard Volley deals 3 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/shattered_perception.txt b/forge-gui/res/cardsfolder/s/shattered_perception.txt index 5f25f7ce325..026385fda22 100644 --- a/forge-gui/res/cardsfolder/s/shattered_perception.txt +++ b/forge-gui/res/cardsfolder/s/shattered_perception.txt @@ -5,7 +5,7 @@ A:SP$ Discard | Cost$ 2 R | Defined$ You | RememberDiscarded$ True | Mode$ Hand SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ X | SubAbility$ DBCleanup | References$ X SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Remembered$Amount -K:Flashback 5 R +K:Flashback:5 R SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/shattered_perception.jpg Oracle:Discard all the cards in your hand, then draw that many cards.\nFlashback {5}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/s/shattering_spree.txt b/forge-gui/res/cardsfolder/s/shattering_spree.txt index 3aa63ea860c..14736b02616 100644 --- a/forge-gui/res/cardsfolder/s/shattering_spree.txt +++ b/forge-gui/res/cardsfolder/s/shattering_spree.txt @@ -1,7 +1,7 @@ Name:Shattering Spree ManaCost:R Types:Sorcery -K:Replicate R +K:Replicate:R A:SP$ Destroy | Cost$ R | ValidTgts$ Artifact | SpellDescription$ Destroy target artifact. SVar:Picture:http://www.wizards.com/global/images/magic/general/shattering_spree.jpg Oracle:Replicate {R} (When you cast this spell, copy it for each time you paid its replicate cost. You may choose new targets for the copies.)\nDestroy target artifact. diff --git a/forge-gui/res/cardsfolder/s/shield_mare.txt b/forge-gui/res/cardsfolder/s/shield_mare.txt new file mode 100644 index 00000000000..72b0ea46e53 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/shield_mare.txt @@ -0,0 +1,9 @@ +Name:Shield Mare +ManaCost:1 W W +Types:Creature Horse +K:CantBeBlockedBy Creature.Red +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ DBGainLife | TriggerDescription$ When CARDNAME enters the battlefield or becomes the target of a spell or ability an opponent controls, you gain 3 life. +T:Mode$ BecomesTarget | ValidTarget$ Card.Self | ValidSource$ Card.OppCtrl | TriggerZones$ Battlefield | Execute$ DBGainLife | TriggerDescription$ When CARDNAME enters the battlefield or becomes the target of a spell or ability an opponent controls, you gain 3 life. +SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 3 +Oracle:Shield Mare can't be blocked by red creatures.\nWhen Shield Mare enters the battlefield or becomes the target of a spell or ability an opponent controls, you gain 3 life. +PT:2/3 diff --git a/forge-gui/res/cardsfolder/s/shieldmage_advocate.txt b/forge-gui/res/cardsfolder/s/shieldmage_advocate.txt index 7aa1716089c..2b3b9f7acf9 100644 --- a/forge-gui/res/cardsfolder/s/shieldmage_advocate.txt +++ b/forge-gui/res/cardsfolder/s/shieldmage_advocate.txt @@ -2,11 +2,11 @@ Name:Shieldmage Advocate ManaCost:2 W Types:Creature Human Cleric PT:1/3 -A:AB$ ChangeZone | Cost$ T | ValidTgts$ Card.OppOwn | TgtPrompt$ Select target card in an opponent's graveyard | Origin$ Graveyard | Destination$ Hand | SubAbility$ DBChooseSource | SpellDescription$ Return target card from an opponent's graveyard to their hand. Prevent all damage that would be dealt to target creature or player this turn by a source of your choice. +A:AB$ ChangeZone | Cost$ T | ValidTgts$ Card.OppOwn | TgtPrompt$ Select target card in an opponent's graveyard | Origin$ Graveyard | Destination$ Hand | SubAbility$ DBChooseSource | SpellDescription$ Return target card from an opponent's graveyard to their hand. Prevent all damage that would be dealt to any target this turn by a source of your choice. SVar:DBChooseSource:DB$ ChooseSource | Choices$ Card,Emblem | AILogic$ NeedsPrevention | SubAbility$ DBEffect -SVar:DBEffect:DB$ Effect | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to prevent damage | ForgetOnMoved$ Battlefield | ReplacementEffects$ RPrevent | References$ RPrevent | RememberObjects$ TargetedPlayer,ThisTargetedCard | SubAbility$ DBCleanup | ConditionDefined$ ChosenCard | ConditionPresent$ Card | ConditionCompare$ GE1 | SubAbility$ DBCleanup -SVar:RPrevent:Event$ DamageDone | Prevent$ True | ActiveZones$ Command | ValidSource$ Card.ChosenCard | ValidTarget$ Player.IsRemembered,Card.IsRemembered | Description$ Prevent all damage that would be dealt to target creature or player this turn by a source of your choice. +SVar:DBEffect:DB$ Effect | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to prevent damage | ForgetOnMoved$ Battlefield | ReplacementEffects$ RPrevent | References$ RPrevent | RememberObjects$ TargetedPlayer,ThisTargetedCard | SubAbility$ DBCleanup | ConditionDefined$ ChosenCard | ConditionPresent$ Card | ConditionCompare$ GE1 | SubAbility$ DBCleanup +SVar:RPrevent:Event$ DamageDone | Prevent$ True | ActiveZones$ Command | ValidSource$ Card.ChosenCard | ValidTarget$ Player.IsRemembered,Card.IsRemembered | Description$ Prevent all damage that would be dealt to any target this turn by a source of your choice. SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/shieldmage_advocate.jpg -Oracle:{T}: Return target card from an opponent's graveyard to their hand. Prevent all damage that would be dealt to target creature or player this turn by a source of your choice. +Oracle:{T}: Return target card from an opponent's graveyard to their hand. Prevent all damage that would be dealt to any target this turn by a source of your choice. diff --git a/forge-gui/res/cardsfolder/s/shieldmates_blessing.txt b/forge-gui/res/cardsfolder/s/shieldmates_blessing.txt index 74f983590b0..fad00e88da8 100644 --- a/forge-gui/res/cardsfolder/s/shieldmates_blessing.txt +++ b/forge-gui/res/cardsfolder/s/shieldmates_blessing.txt @@ -1,6 +1,6 @@ Name:Shieldmate's Blessing ManaCost:W Types:Instant -A:SP$ PreventDamage | Cost$ W | ValidTgts$ Creature,Player | Amount$ 3 | TgtPrompt$ Select target creature or player | SpellDescription$ Prevent the next 3 damage that would be dealt to target creature or player this turn. +A:SP$ PreventDamage | Cost$ W | ValidTgts$ Creature,Player,Planeswalker | Amount$ 3 | TgtPrompt$ Select any target | SpellDescription$ Prevent the next 3 damage that would be dealt to any target this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/shieldmates_blessing.jpg -Oracle:Prevent the next 3 damage that would be dealt to target creature or player this turn. +Oracle:Prevent the next 3 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/s/shimmering_mirage.txt b/forge-gui/res/cardsfolder/s/shimmering_mirage.txt index d0af42f12d6..63781c37fb8 100644 --- a/forge-gui/res/cardsfolder/s/shimmering_mirage.txt +++ b/forge-gui/res/cardsfolder/s/shimmering_mirage.txt @@ -2,7 +2,7 @@ Name:Shimmering Mirage ManaCost:1 U Types:Instant A:SP$ ChooseType | Cost$ 1 U | Defined$ You | Type$ Basic Land | SubAbility$ DBAnimate | SpellDescription$ Target land becomes the basic land type of your choice until end of turn. Draw a card. -SVar:DBAnimate:DB$ Animate | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ ChosenType | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | RemoveAllAbilities$ True | SubAbility$ DBDraw +SVar:DBAnimate:DB$ Animate | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ ChosenType | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True | SubAbility$ DBDraw SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ 1 SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/shimmering_mirage.jpg diff --git a/forge-gui/res/cardsfolder/s/shivan_hellkite.txt b/forge-gui/res/cardsfolder/s/shivan_hellkite.txt index d8903ed93f3..4cef480b643 100644 --- a/forge-gui/res/cardsfolder/s/shivan_hellkite.txt +++ b/forge-gui/res/cardsfolder/s/shivan_hellkite.txt @@ -3,6 +3,6 @@ ManaCost:5 R R Types:Creature Dragon PT:5/5 K:Flying -A:AB$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/shivan_hellkite.jpg -Oracle:Flying\n{1}{R}: Shivan Hellkite deals 1 damage to target creature or player. +Oracle:Flying\n{1}{R}: Shivan Hellkite deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/shock.txt b/forge-gui/res/cardsfolder/s/shock.txt index 0db6272e53e..3603b464ae1 100644 --- a/forge-gui/res/cardsfolder/s/shock.txt +++ b/forge-gui/res/cardsfolder/s/shock.txt @@ -1,6 +1,6 @@ Name:Shock ManaCost:R Types:Instant -A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/shock.jpg -Oracle:Shock deals 2 damage to target creature or player. +Oracle:Shock deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/shock_troops.txt b/forge-gui/res/cardsfolder/s/shock_troops.txt index aad9cd90a70..ee43e982284 100644 --- a/forge-gui/res/cardsfolder/s/shock_troops.txt +++ b/forge-gui/res/cardsfolder/s/shock_troops.txt @@ -2,6 +2,6 @@ Name:Shock Troops ManaCost:3 R Types:Creature Human Soldier PT:2/2 -A:AB$ DealDamage | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:AB$ DealDamage | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/shock_troops.jpg -Oracle:Sacrifice Shock Troops: Shock Troops deals 2 damage to target creature or player. +Oracle:Sacrifice Shock Troops: Shock Troops deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/shower_of_coals.txt b/forge-gui/res/cardsfolder/s/shower_of_coals.txt index 684205d9598..ff9801c20cc 100644 --- a/forge-gui/res/cardsfolder/s/shower_of_coals.txt +++ b/forge-gui/res/cardsfolder/s/shower_of_coals.txt @@ -1,7 +1,7 @@ Name:Shower of Coals ManaCost:3 R R Types:Sorcery -A:SP$ DealDamage | Cost$ 3 R R | NumDmg$ X | TargetMin$ 0 | TargetMax$ 3 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | References$ X | SpellDescription$ CARDNAME deals 2 damage to each of up to three target creatures and/or players. Threshold — CARDNAME deals 4 damage to each of those creatures and/or players instead if seven or more cards are in your graveyard. +A:SP$ DealDamage | Cost$ 3 R R | NumDmg$ X | TargetMin$ 0 | TargetMax$ 3 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | References$ X | SpellDescription$ CARDNAME deals 2 damage to each of up to three targets. Threshold — CARDNAME deals 4 damage to each of those targets instead if seven or more cards are in your graveyard. SVar:X:Count$Threshold.4.2 SVar:Picture:http://www.wizards.com/global/images/magic/general/shower_of_coals.jpg -Oracle:Shower of Coals deals 2 damage to each of up to three target creatures and/or players.\nThreshold — Shower of Coals deals 4 damage to each of those creatures and/or players instead if seven or more cards are in your graveyard. +Oracle:Shower of Coals deals 2 damage to each of up to three targets.\nThreshold — Shower of Coals deals 4 damage to each of those targets instead if seven or more cards are in your graveyard. diff --git a/forge-gui/res/cardsfolder/s/shower_of_sparks.txt b/forge-gui/res/cardsfolder/s/shower_of_sparks.txt index 210430b1f9b..c229d92e3a0 100644 --- a/forge-gui/res/cardsfolder/s/shower_of_sparks.txt +++ b/forge-gui/res/cardsfolder/s/shower_of_sparks.txt @@ -2,6 +2,6 @@ Name:Shower of Sparks ManaCost:R Types:Instant A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 1 | SubAbility$ DBDamage | SpellDescription$ CARDNAME deals 1 damage to target creature -SVar:DBDamage:DB$DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 1 | SpellDescription$ and 1 damage to target player. +SVar:DBDamage:DB$DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 | SpellDescription$ and 1 damage to target player or planeswalker. SVar:Picture:http://www.wizards.com/global/images/magic/general/shower_of_sparks.jpg -Oracle:Shower of Sparks deals 1 damage to target creature and 1 damage to target player. +Oracle:Shower of Sparks deals 1 damage to target creature and 1 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/s/shrine_of_burning_rage.txt b/forge-gui/res/cardsfolder/s/shrine_of_burning_rage.txt index ca2c7bcf0bf..b37b5015036 100644 --- a/forge-gui/res/cardsfolder/s/shrine_of_burning_rage.txt +++ b/forge-gui/res/cardsfolder/s/shrine_of_burning_rage.txt @@ -4,7 +4,7 @@ Types:Artifact T:Mode$ SpellCast | ValidCard$ Card.Red | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigAddCounter | TriggerDescription$ At the beginning of your upkeep or whenever you cast a red spell, put a charge counter on CARDNAME. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigAddCounter | Secondary$ True | TriggerDescription$ At the beginning of your upkeep or whenever you cast a red spell, put a charge counter on CARDNAME. SVar:TrigAddCounter:DB$PutCounter | CounterType$ CHARGE | CounterNum$ 1 -A:AB$ DealDamage | Cost$ 3 T Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to the number of charge counters on it to target creature or player. +A:AB$ DealDamage | Cost$ 3 T Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to the number of charge counters on it to any target. SVar:X:Count$CardCounters.CHARGE SVar:Picture:http://www.wizards.com/global/images/magic/general/shrine_of_burning_rage.jpg -Oracle:At the beginning of your upkeep or whenever you cast a red spell, put a charge counter on Shrine of Burning Rage.\n{3}, {T}, Sacrifice Shrine of Burning Rage: Shrine of Burning Rage deals damage equal to the number of charge counters on it to target creature or player. +Oracle:At the beginning of your upkeep or whenever you cast a red spell, put a charge counter on Shrine of Burning Rage.\n{3}, {T}, Sacrifice Shrine of Burning Rage: Shrine of Burning Rage deals damage equal to the number of charge counters on it to any target. diff --git a/forge-gui/res/cardsfolder/s/sickle_dancer.txt b/forge-gui/res/cardsfolder/s/sickle_dancer.txt new file mode 100644 index 00000000000..08458161327 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/sickle_dancer.txt @@ -0,0 +1,8 @@ +Name:Sickle Dancer +ManaCost:2 B +Types:Creature Human Warrior +PT:3/2 +T:Mode$ Attacks | ValidCard$ Card.Self | IsPresent$ Warrior.Other+YourTeamCtrl | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever CARDNAME attacks, if your team controls another Warrior, CARDNAME gets +1/+1 until end of turn. +SVar:TrigPump:DB$ Pump | NumAtt$ +1 | NumDef$ +1 | Defined$ Self +SVar:BuffedBy:Warrior +Oracle:Whenever Sickle Dancer attacks, if your team controls another Warrior, Sickle Dancer gets +1/+1 until end of turn. diff --git a/forge-gui/res/cardsfolder/s/siege_gang_commander.txt b/forge-gui/res/cardsfolder/s/siege_gang_commander.txt index 3bff99a0c46..f121db4a83e 100644 --- a/forge-gui/res/cardsfolder/s/siege_gang_commander.txt +++ b/forge-gui/res/cardsfolder/s/siege_gang_commander.txt @@ -2,10 +2,10 @@ Name:Siege-Gang Commander ManaCost:3 R R Types:Creature Goblin PT:2/2 -A:AB$ DealDamage | Cost$ 1 R Sac<1/Goblin> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:AB$ DealDamage | Cost$ 1 R Sac<1/Goblin> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, create three 1/1 red Goblin creature tokens. SVar:TrigToken:DB$ Token | TokenAmount$ 3 | TokenName$ Goblin | TokenTypes$ Creature,Goblin | TokenOwner$ You | TokenColors$ Red | TokenPower$ 1 | TokenToughness$ 1 | TokenImage$ r 1 1 goblin 10E DeckHas:Ability$Token DeckHints:Type$Goblin SVar:Picture:http://www.wizards.com/global/images/magic/general/siege_gang_commander.jpg -Oracle:When Siege-Gang Commander enters the battlefield, create three 1/1 red Goblin creature tokens.\n{1}{R}, Sacrifice a Goblin: Siege-Gang Commander deals 2 damage to target creature or player. +Oracle:When Siege-Gang Commander enters the battlefield, create three 1/1 red Goblin creature tokens.\n{1}{R}, Sacrifice a Goblin: Siege-Gang Commander deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/siege_of_towers.txt b/forge-gui/res/cardsfolder/s/siege_of_towers.txt index fa4bf3519bb..87b2fe87e5a 100644 --- a/forge-gui/res/cardsfolder/s/siege_of_towers.txt +++ b/forge-gui/res/cardsfolder/s/siege_of_towers.txt @@ -1,7 +1,7 @@ Name:Siege of Towers ManaCost:1 R Types:Sorcery -K:Replicate 1 R +K:Replicate:1 R A:SP$ Animate | Cost$ 1 R | ValidTgts$ Mountain | Power$ 3 | Toughness$ 1 | Types$ Creature | Permanent$ True | SpellDescription$ Target Mountain becomes a 3/1 creature. It's still a land. SVar:Picture:http://www.wizards.com/global/images/magic/general/siege_of_towers.jpg Oracle:Replicate {1}{R} (When you cast this spell, copy it for each time you paid its replicate cost. You may choose new targets for the copies.)\nTarget Mountain becomes a 3/1 creature. It's still a land. diff --git a/forge-gui/res/cardsfolder/s/siegebreaker_giant.txt b/forge-gui/res/cardsfolder/s/siegebreaker_giant.txt new file mode 100644 index 00000000000..79a12993ef9 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/siegebreaker_giant.txt @@ -0,0 +1,7 @@ +Name:Siegebreaker Giant +ManaCost:3 R R +Types:Creature Giant Warrior +K:Trample +A:AB$ Pump | Cost$ 3 R | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ CARDNAME can't block. | IsCurse$ True | SpellDescription$ Target creature can't block this turn. +Oracle:Trample (This creature can deal excess combat damage to the player or planeswalker it's attacking.)\n{3}{R}: Target creature can't block this turn. +PT:6/3 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/s/sigiled_sword_of_valeron.txt b/forge-gui/res/cardsfolder/s/sigiled_sword_of_valeron.txt new file mode 100644 index 00000000000..cfe2e23d06c --- /dev/null +++ b/forge-gui/res/cardsfolder/s/sigiled_sword_of_valeron.txt @@ -0,0 +1,10 @@ +Name:Sigiled Sword of Valeron +ManaCost:3 +Types:Artifact Equipment +K:Equip:3 +S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 2 | AddKeyword$ Vigilance | AddType$ Knight | Description$ Equipped creature gets +2/+0, has vigilance, and is a Knight in addition to its other types. +T:Mode$ Attacks | ValidCard$ Card.EquippedBy | Execute$ TrigToken | TriggerDescription$ Whenever equipped creature attacks, create a 2/2 white Knight creature token with vigilance that’s attacking. +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenName$ Knight | TokenTypes$ Creature,Knight | TokenOwner$ You | TokenColors$ White | TokenPower$ 2 | TokenToughness$ 2 | TokenKeywords$ Vigilance | TokenAttacking$ True | TokenImage$ w 2 2 knight m19 +DeckHas:Ability$Token +SVar:Picture:http://www.wizards.com/global/images/magic/general/sigiled_sword_of_valeron.jpg +Oracle:Equipped creature gets +2/+0, has vigilance, and is a Knight in addition to its other types.\nWhenever equipped creature attacks, create a 2/2 white Knight creature token with vigilance that’s attacking.\nEquip {3} diff --git a/forge-gui/res/cardsfolder/s/silent_departure.txt b/forge-gui/res/cardsfolder/s/silent_departure.txt index e3e86da9c40..9ed5aef4794 100644 --- a/forge-gui/res/cardsfolder/s/silent_departure.txt +++ b/forge-gui/res/cardsfolder/s/silent_departure.txt @@ -1,7 +1,7 @@ Name:Silent Departure ManaCost:U Types:Sorcery -K:Flashback 4 U +K:Flashback:4 U A:SP$ ChangeZone | Cost$ U | ValidTgts$ Creature | TgtPrompt$ Select target creature | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return target creature to its owner's hand. SVar:Picture:http://www.wizards.com/global/images/magic/general/silent_departure.jpg Oracle:Return target creature to its owner's hand.\nFlashback {4}{U} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/s/silverbeak_griffin.txt b/forge-gui/res/cardsfolder/s/silverbeak_griffin.txt new file mode 100644 index 00000000000..0f2bd70355b --- /dev/null +++ b/forge-gui/res/cardsfolder/s/silverbeak_griffin.txt @@ -0,0 +1,6 @@ +Name:Silverbeak Griffin +ManaCost:W W +Types:Creature Griffin +PT:2/2 +K:Flying +Oracle:Flying (This creature can’t be blocked except by creatures with flying or reach.) diff --git a/forge-gui/res/cardsfolder/s/silverstorm_samurai.txt b/forge-gui/res/cardsfolder/s/silverstorm_samurai.txt index 2e7edf7e48f..da8834cd8ea 100644 --- a/forge-gui/res/cardsfolder/s/silverstorm_samurai.txt +++ b/forge-gui/res/cardsfolder/s/silverstorm_samurai.txt @@ -3,6 +3,6 @@ ManaCost:4 W W Types:Creature Fox Samurai PT:3/3 K:Flash -K:Bushido 1 +K:Bushido:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/silverstorm_samurai.jpg Oracle:Flash\nBushido 1 (When this blocks or becomes blocked, it gets +1/+1 until end of turn.) diff --git a/forge-gui/res/cardsfolder/s/skalla_wolf.txt b/forge-gui/res/cardsfolder/s/skalla_wolf.txt new file mode 100644 index 00000000000..ac0332b6967 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/skalla_wolf.txt @@ -0,0 +1,6 @@ +Name:Skalla Wolf +ManaCost:3 G G +Types:Creature Wolf Spirit +SVar:DBDig:DB$ Dig | DigNum$ 5 | ChangeNum$ 1 | Optional$ True | ForceRevealToController$ True | ChangeValid$ Card.Green | RestRandomOrder$ True +Oracle:When Skalla Wolf enters the battlefield, look at the top five cards of your library. You may reveal a green card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. +PT:3/3 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/s/skarrgan_skybreaker.txt b/forge-gui/res/cardsfolder/s/skarrgan_skybreaker.txt index f1f5f777b2a..57a2a39ba77 100644 --- a/forge-gui/res/cardsfolder/s/skarrgan_skybreaker.txt +++ b/forge-gui/res/cardsfolder/s/skarrgan_skybreaker.txt @@ -3,7 +3,7 @@ ManaCost:4 R R G Types:Creature Giant Shaman PT:3/3 K:Bloodthirst:3 -A:AB$ DealDamage | Cost$ 1 Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to its power to target creature or player. +A:AB$ DealDamage | Cost$ 1 Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to its power to any target. SVar:X:Count$CardPower SVar:Picture:http://www.wizards.com/global/images/magic/general/skarrgan_skybreaker.jpg -Oracle:Bloodthirst 3 (If an opponent was dealt damage this turn, this creature enters the battlefield with three +1/+1 counters on it.)\n{1}, Sacrifice Skarrgan Skybreaker: Skarrgan Skybreaker deals damage equal to its power to target creature or player. +Oracle:Bloodthirst 3 (If an opponent was dealt damage this turn, this creature enters the battlefield with three +1/+1 counters on it.)\n{1}, Sacrifice Skarrgan Skybreaker: Skarrgan Skybreaker deals damage equal to its power to any target. diff --git a/forge-gui/res/cardsfolder/s/skeleton_archer.txt b/forge-gui/res/cardsfolder/s/skeleton_archer.txt new file mode 100644 index 00000000000..cfc91904174 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/skeleton_archer.txt @@ -0,0 +1,7 @@ +Name:Skeleton Archer +ManaCost:3 B +Types:Creature Skeleton Archer +PT:3/3 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 1 damage to any target. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 +Oracle:When CARDNAME enters the battlefield, it deals 1 damage to any target. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/s/skilled_animator.txt b/forge-gui/res/cardsfolder/s/skilled_animator.txt new file mode 100644 index 00000000000..5df7e80f373 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/skilled_animator.txt @@ -0,0 +1,7 @@ +Name:Skilled Animator +ManaCost:2 U +Types:Creature Human Artificer +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigAnimate | TriggerDescription$ When CARDNAME enters the battlefield, target artifact you control becomes an artifact creature with base power and toughness 5/5 for as long as CARDNAME remains on the battlefield. +SVar:TrigAnimate:DB$ Animate | ValidTgts$ Artifact.YouCtrl | TgtPrompt$ Select target artifact you control | Power$ 5 | Toughness$ 5 | Types$ Artifact,Creature | UntilHostLeavesPlay$ True +Oracle:When Skilled Animator enters the battlefield, target artifact you control becomes an artifact creature with base power and toughness 5/5 for as long as Skilled Animator remains on the battlefield. +PT:1/3 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/s/skinshifter.txt b/forge-gui/res/cardsfolder/s/skinshifter.txt index f8ccbc69928..ff586005ec0 100644 --- a/forge-gui/res/cardsfolder/s/skinshifter.txt +++ b/forge-gui/res/cardsfolder/s/skinshifter.txt @@ -3,9 +3,9 @@ ManaCost:1 G Types:Creature Human Shaman PT:1/1 A:AB$ Charm | Cost$ G | Choices$ DBRhino,DBBird,DBPlant | CharmNum$ 1 | ActivationLimit$ 1 -SVar:DBRhino:DB$Animate | Defined$ Self | Power$ 4 | Toughness$ 4 | Types$ Creature,Rhino | OverwriteTypes$ True | Keywords$ Trample | SpellDescription$ Until end of turn, CARDNAME becomes a Rhino with base power and toughness 4/4 and gains trample. Activate this ability only once each turn. -SVar:DBBird:DB$Animate | Defined$ Self | Power$ 2 | Toughness$ 2 | Types$ Creature,Bird | OverwriteTypes$ True | Keywords$ Flying | SpellDescription$ Until end of turn, CARDNAME becomes a Bird with base power and toughness 2/2 and gains flying. Activate this ability only once each turn. -SVar:DBPlant:DB$Animate | Defined$ Self | Power$ 0 | Toughness$ 8 | Types$ Creature,Plant | OverwriteTypes$ True | SpellDescription$ Until end of turn, CARDNAME becomes a Plant with base power and toughness 0/8. Activate this ability only once each turn. +SVar:DBRhino:DB$Animate | Defined$ Self | Power$ 4 | Toughness$ 4 | Types$ Rhino | RemoveCreatureTypes$ True | Keywords$ Trample | SpellDescription$ Until end of turn, CARDNAME becomes a Rhino with base power and toughness 4/4 and gains trample. Activate this ability only once each turn. +SVar:DBBird:DB$Animate | Defined$ Self | Power$ 2 | Toughness$ 2 | Types$ Bird | RemoveCreatureTypes$ True | Keywords$ Flying | SpellDescription$ Until end of turn, CARDNAME becomes a Bird with base power and toughness 2/2 and gains flying. Activate this ability only once each turn. +SVar:DBPlant:DB$Animate | Defined$ Self | Power$ 0 | Toughness$ 8 | Types$ Plant | RemoveCreatureTypes$ True | SpellDescription$ Until end of turn, CARDNAME becomes a Plant with base power and toughness 0/8. Activate this ability only once each turn. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/skinshifter.jpg Oracle:{G}: Choose one —\n• Until end of turn, Skinshifter becomes a Rhino with base power and toughness 4/4 and gains trample. Activate this ability only once each turn.\n• Until end of turn, Skinshifter becomes a Bird with base power and toughness 2/2 and gains flying. Activate this ability only once each turn.\n• Until end of turn, Skinshifter becomes a Plant with base power and toughness 0/8. Activate this ability only once each turn. diff --git a/forge-gui/res/cardsfolder/s/skirk_alarmist.txt b/forge-gui/res/cardsfolder/s/skirk_alarmist.txt index a6505092cc4..d6238ce4291 100644 --- a/forge-gui/res/cardsfolder/s/skirk_alarmist.txt +++ b/forge-gui/res/cardsfolder/s/skirk_alarmist.txt @@ -3,8 +3,8 @@ ManaCost:1 R Types:Creature Human Wizard PT:1/2 K:Haste -A:AB$ SetState | Cost$ T | ValidTgts$ Creature.YouCtrl+faceDown | RememberChanged$ True | Mode$ TurnFace | SubAbility$ DBDelTrig | SpellDescription$ Turn target face-down creature you control face up. At the beginning of the next end step, sacrifice it. -SVar:DBDelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigSac | RememberObjects$ Remembered | TriggerDescription$ At the beginning of the next end step, sacrifice it. | SubAbility$ DBCleanup +A:AB$ SetState | Cost$ T | ValidTgts$ Creature.YouCtrl+faceDown | Mode$ TurnFace | SubAbility$ DBDelTrig | SpellDescription$ Turn target face-down creature you control face up. At the beginning of the next end step, sacrifice it. +SVar:DBDelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End of Turn | Execute$ TrigSac | RememberObjects$ Targeted | TriggerDescription$ At the beginning of the next end step, sacrifice it. | SubAbility$ DBCleanup SVar:TrigSac:DB$ SacrificeAll | Defined$ DelayTriggerRemembered SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:RemAIDeck:True diff --git a/forge-gui/res/cardsfolder/s/skirk_marauder.txt b/forge-gui/res/cardsfolder/s/skirk_marauder.txt index f0ad037ee7c..92ac19bbc95 100644 --- a/forge-gui/res/cardsfolder/s/skirk_marauder.txt +++ b/forge-gui/res/cardsfolder/s/skirk_marauder.txt @@ -3,7 +3,7 @@ ManaCost:1 R Types:Creature Goblin PT:2/1 K:Morph:2 R -T:Mode$ TurnFaceUp | ValidCard$ Card.Self | Execute$ TrigDamage | TriggerZones$ Battlefield | TriggerDescription$ When CARDNAME is turned face up, it deals 2 damage to target creature or player. -SVar:TrigDamage:DB$DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 +T:Mode$ TurnFaceUp | ValidCard$ Card.Self | Execute$ TrigDamage | TriggerZones$ Battlefield | TriggerDescription$ When CARDNAME is turned face up, it deals 2 damage to any target. +SVar:TrigDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 SVar:Picture:http://www.wizards.com/global/images/magic/general/skirk_marauder.jpg -Oracle:Morph {2}{R} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)\nWhen Skirk Marauder is turned face up, it deals 2 damage to target creature or player. +Oracle:Morph {2}{R} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)\nWhen Skirk Marauder is turned face up, it deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/skirk_prospector.txt b/forge-gui/res/cardsfolder/s/skirk_prospector.txt index 84da1fed15f..6e6ab5fae10 100644 --- a/forge-gui/res/cardsfolder/s/skirk_prospector.txt +++ b/forge-gui/res/cardsfolder/s/skirk_prospector.txt @@ -3,6 +3,5 @@ ManaCost:R Types:Creature Goblin PT:1/1 A:AB$ Mana | Cost$ Sac<1/Goblin> | Produced$ R | SpellDescription$ Add {R}. -SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/skirk_prospector.jpg Oracle:Sacrifice a Goblin: Add {R}. diff --git a/forge-gui/res/cardsfolder/s/skirsdag_cultist.txt b/forge-gui/res/cardsfolder/s/skirsdag_cultist.txt index d91176fb360..400b67378c2 100644 --- a/forge-gui/res/cardsfolder/s/skirsdag_cultist.txt +++ b/forge-gui/res/cardsfolder/s/skirsdag_cultist.txt @@ -2,6 +2,6 @@ Name:Skirsdag Cultist ManaCost:2 R R Types:Creature Human Shaman PT:2/2 -A:AB$ DealDamage | Cost$ R T Sac<1/Creature> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:AB$ DealDamage | Cost$ R T Sac<1/Creature> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/skirsdag_cultist.jpg -Oracle:{R}, {T}, Sacrifice a creature: Skirsdag Cultist deals 2 damage to target creature or player. +Oracle:{R}, {T}, Sacrifice a creature: Skirsdag Cultist deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/skull_catapult.txt b/forge-gui/res/cardsfolder/s/skull_catapult.txt index 199c3178019..9c41fbb3230 100644 --- a/forge-gui/res/cardsfolder/s/skull_catapult.txt +++ b/forge-gui/res/cardsfolder/s/skull_catapult.txt @@ -1,7 +1,7 @@ Name:Skull Catapult ManaCost:4 Types:Artifact -A:AB$ DealDamage | Cost$ 1 T Sac<1/Creature> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:AB$ DealDamage | Cost$ 1 T Sac<1/Creature> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:AIPreference:SacCost$Creature.cmcLE2+powerLE2 SVar:Picture:http://www.wizards.com/global/images/magic/general/skull_catapult.jpg -Oracle:{1}, {T}, Sacrifice a creature: Skull Catapult deals 2 damage to target creature or player. +Oracle:{1}, {T}, Sacrifice a creature: Skull Catapult deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/skull_fracture.txt b/forge-gui/res/cardsfolder/s/skull_fracture.txt index 309f22bbc28..a70674560ca 100644 --- a/forge-gui/res/cardsfolder/s/skull_fracture.txt +++ b/forge-gui/res/cardsfolder/s/skull_fracture.txt @@ -1,7 +1,7 @@ Name:Skull Fracture ManaCost:B Types:Sorcery -K:Flashback 3 B +K:Flashback:3 B A:SP$ Discard | Cost$ B | ValidTgts$ Player | NumCards$ 1 | Mode$ TgtChoose | SpellDescription$ Target player discards a card. SVar:Picture:http://www.wizards.com/global/images/magic/general/skull_fracture.jpg Oracle:Target player discards a card.\nFlashback {3}{B} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/s/skullcrack.txt b/forge-gui/res/cardsfolder/s/skullcrack.txt index be45c92ac8f..d563368321e 100644 --- a/forge-gui/res/cardsfolder/s/skullcrack.txt +++ b/forge-gui/res/cardsfolder/s/skullcrack.txt @@ -1,9 +1,9 @@ Name:Skullcrack ManaCost:1 R Types:Instant -A:SP$ Effect | Cost$ 1 R | Name$ Skullcrack Effect | StaticAbilities$ STCantGain,STCantPrevent | AILogic$ Burn | SubAbility$ DBDamage | SpellDescription$ Players can't gain life this turn. Damage can't be prevented this turn. CARDNAME deals 3 damage to target player. +A:SP$ Effect | Cost$ 1 R | Name$ Skullcrack Effect | StaticAbilities$ STCantGain,STCantPrevent | AILogic$ Burn | SubAbility$ DBDamage | SpellDescription$ Players can't gain life this turn. Damage can't be prevented this turn. CARDNAME deals 3 damage to target player or planeswalker. SVar:STCantGain:Mode$ Continuous | EffectZone$ Command | Affected$ Player | AddKeyword$ You can't gain life. | Description$ Players can't gain life. SVar:STCantPrevent:Mode$ Continuous | EffectZone$ Command | GlobalRule$ Damage can't be prevented. | Description$ Damage can't be prevented. -SVar:DBDamage:DB$ DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 3 | NoPrevention$ True +SVar:DBDamage:DB$ DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 3 | NoPrevention$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/skullcrack.jpg -Oracle:Players can't gain life this turn. Damage can't be prevented this turn. Skullcrack deals 3 damage to target player. +Oracle:Players can't gain life this turn. Damage can't be prevented this turn. Skullcrack deals 3 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/s/skyrider_patrol.txt b/forge-gui/res/cardsfolder/s/skyrider_patrol.txt new file mode 100644 index 00000000000..66ad4581144 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/skyrider_patrol.txt @@ -0,0 +1,11 @@ +Name:Skyrider Patrol +ManaCost:2 G U +Types:Creature Elf Scout +PT:2/3 +K:Flying +T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigPayCost | TriggerDescription$ At the beginning of combat on your turn, you may pay {G}{U}. When you do, put a +1/+1 counter on another target creature you control, and that creature gains flying until end of turn. +SVar:TrigPayCost:AB$ ImmediateTrigger | Cost$ G U | Execute$ TrigPutCounter | TriggerDescription$ When you pay {G}{U}, put a +1/+1 counter on another target creature you control, and that creature gains flying until end of turn. +SVar:TrigPutCounter:DB$ PutCounter | ValidTgts$ Creature.Other+YouCtrl | TgtPrompt$ Select another target creature you control | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ TrigPump +SVar:TrigPump:DB$ Pump | Defined$ Targeted | KW$ Flying +DeckHas:Ability$Counters +Oracle:Flying\nAt the beginning of combat on your turn, you may pay {G}{U}. When you do, put a +1/+1 counter on another target creature you control, and that creature gains flying until end of turn. diff --git a/forge-gui/res/cardsfolder/s/skyscanner.txt b/forge-gui/res/cardsfolder/s/skyscanner.txt new file mode 100644 index 00000000000..a1ceac3efaa --- /dev/null +++ b/forge-gui/res/cardsfolder/s/skyscanner.txt @@ -0,0 +1,9 @@ +Name:Skyscanner +ManaCost:3 +Types:Artifact Creature Thopter +PT:1/1 +K:Flying +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerDescription$ When CARDNAME enters the battlefield, draw a card. +SVar:TrigDraw:DB$Draw | Defined$ You | NumCards$ 1 +SVar:Picture:http://www.wizards.com/global/images/magic/general/skyscanner.jpg +Oracle:Flying\nWhen Skyscanner enters the battlefield, draw a card. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/s/slimy_kavu.txt b/forge-gui/res/cardsfolder/s/slimy_kavu.txt index fe92c7a6dae..4397233ed1c 100644 --- a/forge-gui/res/cardsfolder/s/slimy_kavu.txt +++ b/forge-gui/res/cardsfolder/s/slimy_kavu.txt @@ -2,7 +2,7 @@ Name:Slimy Kavu ManaCost:2 R Types:Creature Kavu PT:2/2 -A:AB$ Animate | Cost$ T | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ Swamp | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | RemoveAllAbilities$ True | SpellDescription$ Target land becomes a Swamp until end of turn. +A:AB$ Animate | Cost$ T | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ Swamp | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True | SpellDescription$ Target land becomes a Swamp until end of turn. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/slimy_kavu.jpg Oracle:{T}: Target land becomes a Swamp until end of turn. diff --git a/forge-gui/res/cardsfolder/s/smoldering_werewolf_erupting_dreadwolf.txt b/forge-gui/res/cardsfolder/s/smoldering_werewolf_erupting_dreadwolf.txt index 90876208c6c..c8b2f60cc0b 100644 --- a/forge-gui/res/cardsfolder/s/smoldering_werewolf_erupting_dreadwolf.txt +++ b/forge-gui/res/cardsfolder/s/smoldering_werewolf_erupting_dreadwolf.txt @@ -32,11 +32,11 @@ Types:Creature Eldrazi Werewolf PT:6/4 -T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ Whenever CARDNAME attacks, it deals 2 damage to target creature or player. +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ Whenever CARDNAME attacks, it deals 2 damage to any target. -SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 +SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 SVar:Picture:http://www.wizards.com/global/images/magic/general/erupting_dreadwolf.jpg -Oracle:Whenever Erupting Dreadwolf attacks, it deals 2 damage to target creature or player. +Oracle:Whenever Erupting Dreadwolf attacks, it deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/snake_cult_initiation.txt b/forge-gui/res/cardsfolder/s/snake_cult_initiation.txt index 63e8cff32dc..37d839b720c 100644 --- a/forge-gui/res/cardsfolder/s/snake_cult_initiation.txt +++ b/forge-gui/res/cardsfolder/s/snake_cult_initiation.txt @@ -3,6 +3,6 @@ ManaCost:3 B Types:Enchantment Aura K:Enchant creature A:SP$ Attach | Cost$ 3 B | ValidTgts$ Creature | AITgts$ Card.powerGE1 | AILogic$ Pump -S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Poisonous 3 | Description$ Enchanted creature has poisonous 3. (Whenever it deals combat damage to a player, that player gets three poison counters. A player with ten or more poison counters loses the game.) +S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddKeyword$ Poisonous:3 | Description$ Enchanted creature has poisonous 3. (Whenever it deals combat damage to a player, that player gets three poison counters. A player with ten or more poison counters loses the game.) SVar:Picture:http://www.wizards.com/global/images/magic/general/snake_cult_initiation.jpg Oracle:Enchant creature\nEnchanted creature has poisonous 3. (Whenever it deals combat damage to a player, that player gets three poison counters. A player with ten or more poison counters loses the game.) diff --git a/forge-gui/res/cardsfolder/s/soaring_show_off.txt b/forge-gui/res/cardsfolder/s/soaring_show_off.txt new file mode 100644 index 00000000000..556cc0a2109 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/soaring_show_off.txt @@ -0,0 +1,8 @@ +Name:Soaring Show-Off +ManaCost:2 U +Types:Creature Bird Warrior +PT:2/2 +K:Flying +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerDescription$ When CARDNAME enters the battlefield, each player draws a card. +SVar:TrigDraw:DB$Draw | Defined$ Player | NumCards$ 1 +Oracle:Flying\nWhen Soaring Show-Off enters the battlefield, each player draws a card. diff --git a/forge-gui/res/cardsfolder/s/sokenzan_renegade.txt b/forge-gui/res/cardsfolder/s/sokenzan_renegade.txt index 56d0251da31..8fef58c8dcf 100644 --- a/forge-gui/res/cardsfolder/s/sokenzan_renegade.txt +++ b/forge-gui/res/cardsfolder/s/sokenzan_renegade.txt @@ -2,7 +2,7 @@ Name:Sokenzan Renegade ManaCost:2 R Types:Creature Ogre Samurai Mercenary PT:3/3 -K:Bushido 1 +K:Bushido:1 T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigGainControl | APlayerHasMostCardsInHand$ True | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your upkeep, if a player has more cards in hand than each other player, the player who has the most cards in hand gains control of CARDNAME. SVar:TrigGainControl:DB$ GainControl | Defined$ Self | NewController$ Player.withMostCardsInHand SVar:RemAIDeck:True diff --git a/forge-gui/res/cardsfolder/s/sokenzan_spellblade.txt b/forge-gui/res/cardsfolder/s/sokenzan_spellblade.txt index f2b291596e8..e0374e6f98e 100644 --- a/forge-gui/res/cardsfolder/s/sokenzan_spellblade.txt +++ b/forge-gui/res/cardsfolder/s/sokenzan_spellblade.txt @@ -2,7 +2,7 @@ Name:Sokenzan Spellblade ManaCost:4 R Types:Creature Ogre Samurai Shaman PT:2/3 -K:Bushido 1 +K:Bushido:1 A:AB$ Pump | Cost$ 1 R | Defined$ Self | NumAtt$ +X | References$ X | SpellDescription$ CARDNAME gets +X/+0 until end of turn, where X is the number of cards in your hand. SVar:X:Count$InYourHand SVar:Picture:http://www.wizards.com/global/images/magic/general/sokenzan_spellblade.jpg diff --git a/forge-gui/res/cardsfolder/s/solar_blast.txt b/forge-gui/res/cardsfolder/s/solar_blast.txt index da4abef347b..8ad33754ffb 100644 --- a/forge-gui/res/cardsfolder/s/solar_blast.txt +++ b/forge-gui/res/cardsfolder/s/solar_blast.txt @@ -2,8 +2,8 @@ Name:Solar Blast ManaCost:3 R Types:Instant K:Cycling:1 R R -A:SP$ DealDamage | Cost$ 3 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. -T:Mode$ Cycled | ValidCard$ Card.Self | Execute$ TrigDamage | OptionalDecider$ You | TriggerDescription$ When you cycle CARDNAME, you may have it deal 1 damage to target creature or player. -SVar:TrigDamage:DB$DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 +A:SP$ DealDamage | Cost$ 3 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. +T:Mode$ Cycled | ValidCard$ Card.Self | Execute$ TrigDamage | OptionalDecider$ You | TriggerDescription$ When you cycle CARDNAME, you may have it deal 1 damage to any target. +SVar:TrigDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/solar_blast.jpg -Oracle:Solar Blast deals 3 damage to target creature or player.\nCycling {1}{R}{R} ({1}{R}{R}, Discard this card: Draw a card.)\nWhen you cycle Solar Blast, you may have it deal 1 damage to target creature or player. +Oracle:Solar Blast deals 3 damage to any target.\nCycling {1}{R}{R} ({1}{R}{R}, Discard this card: Draw a card.)\nWhen you cycle Solar Blast, you may have it deal 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/somberwald_stag.txt b/forge-gui/res/cardsfolder/s/somberwald_stag.txt index 0019e3bbdfb..f036d155fa4 100644 --- a/forge-gui/res/cardsfolder/s/somberwald_stag.txt +++ b/forge-gui/res/cardsfolder/s/somberwald_stag.txt @@ -3,7 +3,7 @@ ManaCost:3 G G Types:Creature Elk PT:4/3 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigFight | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters the battlefield, you may have it fight target creature you don't control. -SVar:TrigFight:DB$ Fight | Defined$ TriggeredCard | ValidTgts$ Creature.YouDontCtrl | TgtPrompt$ Choose target creature you don't control +SVar:TrigFight:DB$ Fight | Defined$ TriggeredCardLKICopy | ValidTgts$ Creature.YouDontCtrl | TgtPrompt$ Choose target creature you don't control SVar:PlayMain1:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/somberwald_stag.jpg Oracle:When Somberwald Stag enters the battlefield, you may have it fight target creature you don't control. diff --git a/forge-gui/res/cardsfolder/s/somberwald_vigilante.txt b/forge-gui/res/cardsfolder/s/somberwald_vigilante.txt index 4defde3c122..ddd60c3f12e 100644 --- a/forge-gui/res/cardsfolder/s/somberwald_vigilante.txt +++ b/forge-gui/res/cardsfolder/s/somberwald_vigilante.txt @@ -3,6 +3,6 @@ ManaCost:R Types:Creature Human Warrior PT:1/1 T:Mode$ AttackerBlockedByCreature | ValidCard$ Card.Self | ValidBlocker$ Creature | TriggerZones$ Battlefield | Execute$ RogueDamage | TriggerDescription$ Whenever CARDNAME becomes blocked by a creature, CARDNAME deals 1 damage to that creature. -SVar:RogueDamage:DB$ DealDamage | Defined$ TriggeredBlocker | NumDmg$ 1 +SVar:RogueDamage:DB$ DealDamage | Defined$ TriggeredBlockerLKICopy | NumDmg$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/somberwald_vigilante.jpg Oracle:Whenever Somberwald Vigilante becomes blocked by a creature, Somberwald Vigilante deals 1 damage to that creature. diff --git a/forge-gui/res/cardsfolder/s/song_of_blood.txt b/forge-gui/res/cardsfolder/s/song_of_blood.txt index c1ea38adaf4..8801491a4e5 100644 --- a/forge-gui/res/cardsfolder/s/song_of_blood.txt +++ b/forge-gui/res/cardsfolder/s/song_of_blood.txt @@ -2,9 +2,9 @@ Name:Song of Blood ManaCost:1 R Types:Sorcery A:SP$ Mill | Cost$ 1 R | NumCards$ 4 | Defined$ You | RememberMilled$ True | SubAbility$ DBEffect | SpellDescription$ Put the top four cards of your library into your graveyard. Whenever a creature attacks this turn, it gets +1/+0 until end of turn for each creature card put into your graveyard this way. -SVar:DBEffect:DB$ Effect | Name$ Song of Blood Effect | Triggers$ TrigAttacks | SVars$ Pump,X | RememberObjects$ Remembered +SVar:DBEffect:DB$ Effect | Name$ Song of Blood Effect | Triggers$ TrigAttacks | SVars$ Pump,X | References$ X | RememberObjects$ Remembered SVar:TrigAttacks:Mode$ Attacks | ValidCard$ Creature.YouCtrl | Execute$ Pump | TriggerDescription$ Whenever a creature attacks this turn, it gets +1/+0 until end of turn for each creature card put into your graveyard this way. -SVar:Pump:DB$ Pump | Defined$ TriggeredAttacker | NumAtt$ +X +SVar:Pump:DB$ Pump | Defined$ TriggeredAttacker | NumAtt$ +X | References$ X SVar:X:Remembered$Valid Creature SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/song_of_blood.jpg diff --git a/forge-gui/res/cardsfolder/s/song_of_the_dryads.txt b/forge-gui/res/cardsfolder/s/song_of_the_dryads.txt index cf99c0cf27d..67715fd7f70 100644 --- a/forge-gui/res/cardsfolder/s/song_of_the_dryads.txt +++ b/forge-gui/res/cardsfolder/s/song_of_the_dryads.txt @@ -3,7 +3,7 @@ ManaCost:2 G Types:Enchantment Aura K:Enchant permanent A:SP$ Attach | Cost$ 2 G | ValidTgts$ Permanent | AILogic$ Curse | AITgts$ Card.cmcGE3 -S:Mode$ Continuous | Affected$ Card.EnchantedBy | SetColor$ Colorless | AddType$ Land & Forest | RemoveCardTypes$ True | RemoveSubTypes$ True | RemoveAllAbilities$ True | Description$ Enchanted permanent is a colorless Forest land. +S:Mode$ Continuous | Affected$ Card.EnchantedBy | SetColor$ Colorless | AddType$ Land & Forest | RemoveCardTypes$ True | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True | Description$ Enchanted permanent is a colorless Forest land. SVar:NonStackingAttachEffect:True SVar:Picture:http://www.wizards.com/global/images/magic/general/song_of_the_dryads.jpg Oracle:Enchant permanent\nEnchanted permanent is a colorless Forest land. diff --git a/forge-gui/res/cardsfolder/s/sonic_burst.txt b/forge-gui/res/cardsfolder/s/sonic_burst.txt index 0b7c451b37c..9e53960885c 100644 --- a/forge-gui/res/cardsfolder/s/sonic_burst.txt +++ b/forge-gui/res/cardsfolder/s/sonic_burst.txt @@ -1,6 +1,6 @@ Name:Sonic Burst ManaCost:1 R Types:Instant -A:SP$ DealDamage | Cost$ 1 R Discard<1/Random> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target creature or player. +A:SP$ DealDamage | Cost$ 1 R Discard<1/Random> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/sonic_burst.jpg -Oracle:As an additional cost to cast Sonic Burst, discard a card at random.\nSonic Burst deals 4 damage to target creature or player. +Oracle:As an additional cost to cast Sonic Burst, discard a card at random.\nSonic Burst deals 4 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/sonic_seizure.txt b/forge-gui/res/cardsfolder/s/sonic_seizure.txt index 637baf71ef6..f595fcd4b2f 100644 --- a/forge-gui/res/cardsfolder/s/sonic_seizure.txt +++ b/forge-gui/res/cardsfolder/s/sonic_seizure.txt @@ -1,6 +1,6 @@ Name:Sonic Seizure ManaCost:R Types:Instant -A:SP$ DealDamage | Cost$ R Discard<1/Random> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. +A:SP$ DealDamage | Cost$ R Discard<1/Random> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/sonic_seizure.jpg -Oracle:As an additional cost to cast Sonic Seizure, discard a card at random.\nSonic Seizure deals 3 damage to target creature or player. +Oracle:As an additional cost to cast Sonic Seizure, discard a card at random.\nSonic Seizure deals 3 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/sorcerers_wand.txt b/forge-gui/res/cardsfolder/s/sorcerers_wand.txt index 05f3292575d..f9b64ad1a4c 100644 --- a/forge-gui/res/cardsfolder/s/sorcerers_wand.txt +++ b/forge-gui/res/cardsfolder/s/sorcerers_wand.txt @@ -3,8 +3,8 @@ ManaCost:1 Types:Artifact Equipment K:Equip:3 S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddAbility$ WandDamage | AddSVar$ DBWandDmg | Description$ Equipped creature has "{T}: This creature deals 1 damage to target player or planeswalker. If this creature is a Wizard, it deals 2 damage to that player or planeswalker instead." -SVar:WandDamage:AB$ DealDamage | Cost$ T | ValidTgts$ Planeswalker,Player | TgtPrompt$ Select target Planeswalker or player | NumDmg$ 1 | ConditionDefined$ Self | ConditionPresent$ Creature.nonWizard | SubAbility$ DBWandDmg | StakDescription$ SpellDescription | SpellDescription$ This creature deals 1 damage to target player or planeswalker. If this creature is a Wizard, it deals 2 damage to that player or planeswalker instead. -SVar:DBWandDmg:DB$ DealDamage | Defined$ Targeted | NumDmg$ 2 | ConditionDefined$ Self | ConditionPresent$ Creature.Wizard | StakDescription$ None +SVar:WandDamage:AB$ DealDamage | Cost$ T | ValidTgts$ Planeswalker,Player | TgtPrompt$ Select target Planeswalker or player | NumDmg$ 1 | ConditionDefined$ Self | ConditionPresent$ Creature.nonWizard | SubAbility$ DBWandDmg | StackDescription$ SpellDescription | SpellDescription$ This creature deals 1 damage to target player or planeswalker. If this creature is a Wizard, it deals 2 damage to that player or planeswalker instead. +SVar:DBWandDmg:DB$ DealDamage | Defined$ Targeted | NumDmg$ 2 | ConditionDefined$ Self | ConditionPresent$ Creature.Wizard | StackDescription$ None DeckHints:Type$Wizard SVar:Picture:http://www.wizards.com/global/images/magic/general/sorcerers_wand.jpg Oracle:Equipped creature has "{T}: This creature deals 1 damage to target player or planeswalker. If this creature is a Wizard, it deals 2 damage to that player or planeswalker instead."\nEquip {3} diff --git a/forge-gui/res/cardsfolder/s/sorin_markov.txt b/forge-gui/res/cardsfolder/s/sorin_markov.txt index 6372a2af2d5..c6a46c14c05 100644 --- a/forge-gui/res/cardsfolder/s/sorin_markov.txt +++ b/forge-gui/res/cardsfolder/s/sorin_markov.txt @@ -2,10 +2,10 @@ Name:Sorin Markov ManaCost:3 B B B Types:Legendary Planeswalker Sorin Loyalty:4 -A:AB$ DealDamage | Cost$ AddCounter<2/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 2 damage to target creature or player and you gain 2 life. +A:AB$ DealDamage | Cost$ AddCounter<2/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 2 damage to any target and you gain 2 life. SVar:DBGainLife:DB$ GainLife | LifeAmount$ 2 A:AB$ SetLife | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | LifeAmount$ 10 | SpellDescription$ Target opponent's life total becomes 10. # NOTE: The AI will not activate the Ultimate, but otherwise it uses the first two abilities rather well and to the point. A:AB$ ControlPlayer | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True | ValidTgts$ Player | TgtPrompt$ Select target player | SpellDescription$ You control target player during that player's next turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/sorin_markov.jpg -Oracle:[+2]: Sorin Markov deals 2 damage to target creature or player and you gain 2 life.\n[-3]: Target opponent's life total becomes 10.\n[-7]: You control target player during that player's next turn. +Oracle:[+2]: Sorin Markov deals 2 damage to any target and you gain 2 life.\n[-3]: Target opponent's life total becomes 10.\n[-7]: You control target player during that player's next turn. diff --git a/forge-gui/res/cardsfolder/s/sorins_vengeance.txt b/forge-gui/res/cardsfolder/s/sorins_vengeance.txt index 72641359f64..0f4b5c35718 100644 --- a/forge-gui/res/cardsfolder/s/sorins_vengeance.txt +++ b/forge-gui/res/cardsfolder/s/sorins_vengeance.txt @@ -1,7 +1,7 @@ Name:Sorin's Vengeance ManaCost:4 B B B Types:Sorcery -A:SP$ DealDamage | Cost$ 4 B B B | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 10 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 10 damage to target player and you gain 10 life. +A:SP$ DealDamage | Cost$ 4 B B B | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 10 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 10 damage to target player or planeswalker and you gain 10 life. SVar:DBGainLife:DB$GainLife | Defined$ You | LifeAmount$ 10 SVar:Picture:http://www.wizards.com/global/images/magic/general/sorins_vengeance.jpg -Oracle:Sorin's Vengeance deals 10 damage to target player and you gain 10 life. +Oracle:Sorin's Vengeance deals 10 damage to target player or planeswalker and you gain 10 life. diff --git a/forge-gui/res/cardsfolder/s/soul_of_shandalar.txt b/forge-gui/res/cardsfolder/s/soul_of_shandalar.txt index b3a0ebf8c0f..286e3717a76 100644 --- a/forge-gui/res/cardsfolder/s/soul_of_shandalar.txt +++ b/forge-gui/res/cardsfolder/s/soul_of_shandalar.txt @@ -3,8 +3,9 @@ ManaCost:4 R R Types:Creature Avatar PT:6/6 K:First Strike -A:AB$ DealDamage | Cost$ 3 R R | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 3 | SubAbility$ DBDamage | SpellDescription$ CARDNAME deals 3 damage to target player and 3 damage to up to one target creature that player controls. -SVar:DBDamage:DB$ DealDamage | ValidTgts$ Creature.TargetedPlayerCtrl | TgtPrompt$ Select target creature that player controls | TargetMin$ 0 | TargetMax$ 1 | NumDmg$ 3 -A:AB$ DealDamage | Cost$ 3 R R ExileFromGrave<1/CARDNAME> | ActivationZone$ Graveyard | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 3 | SubAbility$ DBDamage | SpellDescription$ CARDNAME deals 3 damage to target player and 3 damage to up to one target creature that player controls. +A:AB$ DealDamage | Cost$ 3 R R | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 3 | SubAbility$ DBDamage | DamageMap$ True | SpellDescription$ CARDNAME deals 3 damage to target player or planeswalker and 3 damage to up to one target creature that player or that planeswalker's controller controls. +SVar:DBDamage:DB$ DealDamage | ValidTgts$ Creature.ControlledBy TargetedOrController | TgtPrompt$ Select target creature that player or that planeswalker's controller controls | TargetMin$ 0 | TargetMax$ 1 | NumDmg$ 3 | SubAbility$ DBDamageResolve +SVar:DBDamageResolve:DB$ DamageResolve +A:AB$ DealDamage | Cost$ 3 R R ExileFromGrave<1/CARDNAME> | ActivationZone$ Graveyard | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 3 | SubAbility$ DBDamage | DamageMap$ True | SpellDescription$ CARDNAME deals 3 damage to target player or planeswalker and 3 damage to up to one target creature that player or that planeswalker's controller controls. SVar:Picture:http://www.wizards.com/global/images/magic/general/soul_of_shandalar.jpg -Oracle:First strike\n{3}{R}{R}: Soul of Shandalar deals 3 damage to target player and 3 damage to up to one target creature that player controls.\n{3}{R}{R}, Exile Soul of Shandalar from your graveyard: Soul of Shandalar deals 3 damage to target player and 3 damage to up to one target creature that player controls. +Oracle:First strike\n{3}{R}{R}: Soul of Shandalar deals 3 damage to target player and 3 damage to up to one target creature that player controls.\n{3}{R}{R}, Exile Soul of Shandalar from your graveyard: Soul of Shandalar deals 3 damage to target player or planeswalker and 3 damage to up to one target creature that player or that planeswalker's controller controls. diff --git a/forge-gui/res/cardsfolder/s/soul_sculptor.txt b/forge-gui/res/cardsfolder/s/soul_sculptor.txt index 0282b855ec8..b9dcb51f5be 100644 --- a/forge-gui/res/cardsfolder/s/soul_sculptor.txt +++ b/forge-gui/res/cardsfolder/s/soul_sculptor.txt @@ -2,7 +2,7 @@ Name:Soul Sculptor ManaCost:2 W Types:Creature Human PT:1/1 -A:AB$ Animate | Cost$ 1 W T | ValidTgts$ Creature | Types$ Enchantment | RemoveAllAbilities$ True | OverwriteTypes$ True | KeepSupertypes$ True | UntilAPlayerCastSpell$ Creature | SpellDescription$ Target creature becomes an enchantment and loses all abilities until a player casts a creature spell. +A:AB$ Animate | Cost$ 1 W T | ValidTgts$ Creature | Types$ Enchantment | RemoveAllAbilities$ True | RemoveCardTypes$ True | UntilAPlayerCastSpell$ Creature | SpellDescription$ Target creature becomes an enchantment and loses all abilities until a player casts a creature spell. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/soul_sculptor.jpg Oracle:{1}{W}, {T}: Target creature becomes an enchantment and loses all abilities until a player casts a creature spell. diff --git a/forge-gui/res/cardsfolder/s/soul_spike.txt b/forge-gui/res/cardsfolder/s/soul_spike.txt index 70a32aac4fd..61c6774c7f0 100644 --- a/forge-gui/res/cardsfolder/s/soul_spike.txt +++ b/forge-gui/res/cardsfolder/s/soul_spike.txt @@ -1,8 +1,8 @@ Name:Soul Spike ManaCost:5 B B Types:Instant -A:SP$ DealDamage | Cost$ 5 B B | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 4 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 4 damage to target creature or player and you gain 4 life. -A:SP$ DealDamage | Cost$ ExileFromHand<2/Card.Black> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 4 | SubAbility$ DBGainLife | CostDesc$ You may exile two black cards from your hand | SpellDescription$ rather than pay CARDNAME's mana cost. +A:SP$ DealDamage | Cost$ 5 B B | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 4 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 4 damage to any target and you gain 4 life. +A:SP$ DealDamage | Cost$ ExileFromHand<2/Card.Black> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 4 | SubAbility$ DBGainLife | CostDesc$ You may exile two black cards from your hand | SpellDescription$ rather than pay CARDNAME's mana cost. SVar:DBGainLife:DB$GainLife | LifeAmount$ 4 SVar:Picture:http://www.wizards.com/global/images/magic/general/soul_spike.jpg -Oracle:You may exile two black cards from your hand rather than pay Soul Spike's mana cost.\nSoul Spike deals 4 damage to target creature or player and you gain 4 life. +Oracle:You may exile two black cards from your hand rather than pay Soul Spike's mana cost.\nSoul Spike deals 4 damage to any target and you gain 4 life. diff --git a/forge-gui/res/cardsfolder/s/soulblade_corrupter.txt b/forge-gui/res/cardsfolder/s/soulblade_corrupter.txt new file mode 100644 index 00000000000..18840ab2910 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/soulblade_corrupter.txt @@ -0,0 +1,11 @@ +Name:Soulblade Corrupter +ManaCost:4 B +Types:Creature Human Warrior +PT:3/3 +K:Partner:Soulblade Renewer +K:Deathtouch +T:Mode$ Attacks | ValidCard$ Creature.counters_GE1_P1P1 | Attacked$ Player.Opponent | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever a creature with a +1/+1 counter on it attacks one of your opponents, that creature gains deathtouch until end of turn. +SVar:TrigPump:DB$Pump | Defined$ TriggeredAttacker | KW$ Deathtouch +DeckHints:Name$Soulblade Renewer & Ability$Counters +SVar:Picture:http://www.wizards.com/global/images/magic/general/soulblade_corrupter.jpg +Oracle:Partner with Soulblade Renewer (When this creature enters the battlefield, target player may put Soulblade Renewer into their hand from their library, then shuffle.)\nDeathtouch\nWhenever a creature with a +1/+1 counter on it attacks one of your opponents, that creature gains deathtouch until end of turn. diff --git a/forge-gui/res/cardsfolder/s/soulblade_renewer.txt b/forge-gui/res/cardsfolder/s/soulblade_renewer.txt new file mode 100644 index 00000000000..85400543572 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/soulblade_renewer.txt @@ -0,0 +1,11 @@ +Name:Soulblade Renewer +ManaCost:4 G +Types:Creature Elf Warrior +PT:2/2 +K:Partner:Soulblade Corrupter +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPut | TriggerDescription$ When CARDNAME enters the battlefield, support 2. (Put a +1/+1 counter on each of up to two other target creatures.) +SVar:TrigPut:DB$PutCounter | ValidTgts$ Creature.Other | TgtPrompt$ Select target creature other than CARDNAME | TargetMin$ 0 | TargetMax$ 2 | CounterType$ P1P1 | CounterNum$ 1 +DeckHas:Ability$Counters +DeckHints:Name$Soulblade Renewer +SVar:Picture:http://www.wizards.com/global/images/magic/general/soulblade_renewer.jpg +Oracle:Partner with Soulblade Corrupter (When this creature enters the battlefield, target player may put Soulblade Corrupter into their hand from their library, then shuffle.)\nWhen Soulblade Renewer enters the battlefield, support 2. (Put a +1/+1 counter on each of up to two other target creatures.) diff --git a/forge-gui/res/cardsfolder/s/soulblast.txt b/forge-gui/res/cardsfolder/s/soulblast.txt index 6c166f96f55..6cd61082d21 100644 --- a/forge-gui/res/cardsfolder/s/soulblast.txt +++ b/forge-gui/res/cardsfolder/s/soulblast.txt @@ -1,8 +1,8 @@ Name:Soulblast ManaCost:3 R R R Types:Instant -A:SP$ DealDamage | Cost$ 3 R R R Sac | NumDmg$ X | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | CostDesc$ As an additional cost to cast CARDNAME, sacrifice all creatures you control. | SpellDescription$ CARDNAME deals damage to target creature or player equal to the total power of the sacrificed creatures. +A:SP$ DealDamage | Cost$ 3 R R R Sac | NumDmg$ X | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | CostDesc$ As an additional cost to cast CARDNAME, sacrifice all creatures you control. | SpellDescription$ CARDNAME deals damage to any target equal to the total power of the sacrificed creatures. SVar:X:Sacrificed$CardPower SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/soulblast.jpg -Oracle:As an additional cost to cast Soulblast, sacrifice all creatures you control.\nSoulblast deals damage to target creature or player equal to the total power of the sacrificed creatures. +Oracle:As an additional cost to cast Soulblast, sacrifice all creatures you control.\nSoulblast deals damage to any target equal to the total power of the sacrificed creatures. diff --git a/forge-gui/res/cardsfolder/s/souls_fire.txt b/forge-gui/res/cardsfolder/s/souls_fire.txt index edf4157815a..602f990e699 100644 --- a/forge-gui/res/cardsfolder/s/souls_fire.txt +++ b/forge-gui/res/cardsfolder/s/souls_fire.txt @@ -1,8 +1,8 @@ Name:Soul's Fire ManaCost:2 R Types:Instant -A:SP$ Pump | Cost$ 2 R | ValidTgts$ Creature.YouCtrl | AILogic$ PowerDmg | TgtPrompt$ Select target creature you control | SubAbility$ SoulsDamage | StackDescription$ None | SpellDescription$ Target creature you control on the battlefield deals damage equal to its power to target creature or player. -SVar:SoulsDamage:DB$ DealDamage | ValidTgts$ Creature,Player | AILogic$ PowerDmg | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | ConditionDefined$ Targeted | ConditionPresent$ Creature | ConditionCompare$ EQ1 | DamageSource$ ParentTarget +A:SP$ Pump | Cost$ 2 R | ValidTgts$ Creature.YouCtrl | AILogic$ PowerDmg | TgtPrompt$ Select target creature you control | SubAbility$ SoulsDamage | StackDescription$ None | SpellDescription$ Target creature you control on the battlefield deals damage equal to its power to any target. +SVar:SoulsDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | AILogic$ PowerDmg | TgtPrompt$ Select any target | NumDmg$ X | References$ X | ConditionDefined$ Targeted | ConditionPresent$ Creature | ConditionCompare$ EQ1 | DamageSource$ ParentTarget SVar:X:ParentTargeted$CardPower SVar:Picture:http://www.wizards.com/global/images/magic/general/souls_fire.jpg -Oracle:Target creature you control on the battlefield deals damage equal to its power to target creature or player. +Oracle:Target creature you control on the battlefield deals damage equal to its power to any target. diff --git a/forge-gui/res/cardsfolder/s/sovereigns_bite.txt b/forge-gui/res/cardsfolder/s/sovereigns_bite.txt new file mode 100644 index 00000000000..c98053c5f3d --- /dev/null +++ b/forge-gui/res/cardsfolder/s/sovereigns_bite.txt @@ -0,0 +1,6 @@ +Name:Sovereign's Bite +ManaCost:1 B +Types:Sorcery +A:SP$ LoseLife | Cost$ 1 B | ValidTgts$ Player | TgtPrompt$ Select a player | LifeAmount$ 3 | SubAbility$ DBGainLife | SpellDescription$ Target player loses 3 life and you gain 3 life. +SVar:DBGainLife:DB$GainLife | LifeAmount$ 3 +Oracle:Target player loses 3 life and you gain 3 life. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/s/sower_of_discord.txt b/forge-gui/res/cardsfolder/s/sower_of_discord.txt new file mode 100644 index 00000000000..a640b57ce99 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/sower_of_discord.txt @@ -0,0 +1,16 @@ +Name:Sower of Discord +ManaCost:4 B B +Types:Creature Demon +PT:6/6 +K:Flying +K:ETBReplacement:Other:ChooseP +SVar:ChooseP:DB$ ChoosePlayer | Defined$ You | Choices$ Player | AILogic$ Curse | RememberChosen$ True | SubAbility$ ChoosePTwo | SpellDescription$ As CARDNAME enters the battlefield, choose two players. +SVar:ChoosePTwo:DB$ ChoosePlayer | Defined$ You | Choices$ NonChosenPlayer | AILogic$ Curse +T:Mode$ DamageDone | ActiveZones$ Battlefield | ValidTarget$ Player.Chosen | Execute$ TrigLoseLifeRemembered | TriggerDescription$ Whenever damage is dealt to one of the chosen players, the other chosen player also loses that much life. +T:Mode$ DamageDone | ActiveZones$ Battlefield | ValidTarget$ Player.IsRemembered | Execute$ TrigLoseLifeChosen | Secondary$ True | TriggerDescription$ Whenever damage is dealt to one of the chosen players, the other chosen player also loses that much life. +SVar:TrigLoseLifeRemembered:DB$ LoseLife | Defined$ Player.IsRemembered | LifeAmount$ X | References$ X +SVar:TrigLoseLifeChosen:DB$ LoseLife | Defined$ Player.Chosen | LifeAmount$ X | References$ X +SVar:X:TriggerCount$DamageAmount +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ DBCleanup | Static$ True +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:Flying\nAs Sower of Discord enters the battlefield, choose two players.\nWhenever damage is dealt to one of the chosen players, the other chosen player also loses that much life. diff --git a/forge-gui/res/cardsfolder/s/spark_jolt.txt b/forge-gui/res/cardsfolder/s/spark_jolt.txt index e568901b62b..5c000b3c311 100644 --- a/forge-gui/res/cardsfolder/s/spark_jolt.txt +++ b/forge-gui/res/cardsfolder/s/spark_jolt.txt @@ -1,7 +1,7 @@ Name:Spark Jolt ManaCost:R Types:Instant -A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. Scry 1. | SubAbility$ DBScry +A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. Scry 1. | SubAbility$ DBScry SVar:DBScry:DB$ Scry | ScryNum$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/spark_jolt.jpg -Oracle:Spark Jolt deals 1 damage to target creature or player. Scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) +Oracle:Spark Jolt deals 1 damage to any target. Scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.) diff --git a/forge-gui/res/cardsfolder/s/spark_spray.txt b/forge-gui/res/cardsfolder/s/spark_spray.txt index b63cc68f6d4..1fd1dc6984f 100644 --- a/forge-gui/res/cardsfolder/s/spark_spray.txt +++ b/forge-gui/res/cardsfolder/s/spark_spray.txt @@ -1,7 +1,7 @@ Name:Spark Spray ManaCost:R Types:Instant -A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. K:Cycling:R SVar:Picture:http://resources.wizards.com/magic/cards/scg/en-us/card44484.jpg -Oracle:Spark Spray deals 1 damage to target creature or player.\nCycling {R} ({R}, Discard this card: Draw a card.) +Oracle:Spark Spray deals 1 damage to any target.\nCycling {R} ({R}, Discard this card: Draw a card.) diff --git a/forge-gui/res/cardsfolder/s/sparkcaster.txt b/forge-gui/res/cardsfolder/s/sparkcaster.txt index 3ce3bfdfb33..bd368917a18 100644 --- a/forge-gui/res/cardsfolder/s/sparkcaster.txt +++ b/forge-gui/res/cardsfolder/s/sparkcaster.txt @@ -3,9 +3,9 @@ ManaCost:2 R G Types:Creature Kavu PT:5/3 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Self | Execute$ TrigChange | TriggerDescription$ When CARDNAME enters the battlefield, return a red or green creature you control to its owner's hand. -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 1 damage to target player. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 1 damage to target player or planeswalker. SVar:TrigChange:DB$ ChangeZone | Origin$ Battlefield | Destination$ Hand | Hidden$ True | ChangeType$ Creature.Red+YouCtrl,Creature.Green+YouCtrl | ChangeNum$ 1 | Mandatory$ True | AILogic$ NeverBounceItself -SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 1 +SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 SVar:NeedsToPlay:Creature.Red+YouCtrl+cmcLE4+inZoneBattlefield,Creature.Green+YouCtrl+cmcLE4+inZoneBattlefield SVar:Picture:http://www.wizards.com/global/images/magic/general/sparkcaster.jpg -Oracle:When Sparkcaster enters the battlefield, return a red or green creature you control to its owner's hand.\nWhen Sparkcaster enters the battlefield, it deals 1 damage to target player. +Oracle:When Sparkcaster enters the battlefield, return a red or green creature you control to its owner's hand.\nWhen Sparkcaster enters the battlefield, it deals 1 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/s/sparkmage_apprentice.txt b/forge-gui/res/cardsfolder/s/sparkmage_apprentice.txt index f04e94c61a8..23eb8ef39c1 100644 --- a/forge-gui/res/cardsfolder/s/sparkmage_apprentice.txt +++ b/forge-gui/res/cardsfolder/s/sparkmage_apprentice.txt @@ -2,7 +2,7 @@ Name:Sparkmage Apprentice ManaCost:1 R Types:Creature Human Wizard PT:1/1 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 1 damage to target creature or player. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 1 damage to any target. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/sparkmage_apprentice.jpg -Oracle:When Sparkmage Apprentice enters the battlefield, it deals 1 damage to target creature or player. +Oracle:When Sparkmage Apprentice enters the battlefield, it deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/sparktongue_dragon.txt b/forge-gui/res/cardsfolder/s/sparktongue_dragon.txt new file mode 100644 index 00000000000..286950cfd28 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/sparktongue_dragon.txt @@ -0,0 +1,9 @@ +Name:Sparktongue Dragon +ManaCost:3 R R +Types:Creature Dragon +K:Flying +T:Mode$ ChangesZone | OptionalDecider$ You | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigPayCost | TriggerDescription$ When CARDNAME enters the battlefield, you may pay {2}{R}. When you do, it deals 3 damage to any target. +SVar:TrigPayCost:AB$ ImmediateTrigger | Cost$ 2 R | Execute$ TrigABDealDamage | TriggerDescription$ When you pay {2}{R}, CARDNAME deals 3 damage to any target +SVar:TrigABDealDamage:DB$ DealDamage | NumDmg$ 3 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | SpellDescription$ CARDNAME deals 3 damage to any target. +Oracle:Flying\nWhen Sparktongue Dragon enters the battlefield, you may pay {2}{R}. When you do, it deals 3 damage to any target. +PT:3/3 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/s/spawn_of_thraxes.txt b/forge-gui/res/cardsfolder/s/spawn_of_thraxes.txt index f76cdd2a866..7545965a19d 100644 --- a/forge-gui/res/cardsfolder/s/spawn_of_thraxes.txt +++ b/forge-gui/res/cardsfolder/s/spawn_of_thraxes.txt @@ -3,8 +3,8 @@ ManaCost:5 R R Types:Creature Dragon PT:5/5 K:Flying -T:Mode$ ChangesZone | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals damage to target creature or player equal to the number of Mountains you control. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X +T:Mode$ ChangesZone | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals damage to any target equal to the number of Mountains you control. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X SVar:X:Count$Valid Mountain.YouCtrl SVar:Picture:http://www.wizards.com/global/images/magic/general/spawn_of_thraxes.jpg -Oracle:Flying\nWhen Spawn of Thraxes enters the battlefield, it deals damage to target creature or player equal to the number of Mountains you control. +Oracle:Flying\nWhen Spawn of Thraxes enters the battlefield, it deals damage to any target equal to the number of Mountains you control. diff --git a/forge-gui/res/cardsfolder/s/spawning_breath.txt b/forge-gui/res/cardsfolder/s/spawning_breath.txt index 73c3fa0be3c..cf5bf58da3a 100644 --- a/forge-gui/res/cardsfolder/s/spawning_breath.txt +++ b/forge-gui/res/cardsfolder/s/spawning_breath.txt @@ -1,10 +1,10 @@ Name:Spawning Breath ManaCost:1 R Types:Instant -A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SubAbility$ DBToken | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SubAbility$ DBToken | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenName$ Eldrazi Spawn | TokenTypes$ Creature,Eldrazi,Spawn | TokenOwner$ You | TokenColors$ Colorless | TokenPower$ 0 | TokenToughness$ 1 | TokenAbilities$ ABMana | TokenImage$ c_0_1_eldrazi_spawn3 | SpellDescription$ Create a 0/1 colorless Eldrazi Spawn creature token. It has "Sacrifice this creature: Add {C}." SVar:ABMana:AB$ Mana | Cost$ Sac<1/CARDNAME> | Produced$ C | Amount$ 1 | SpellDescription$ Add {C}. DeckHints:Type$Eldrazi DeckHas:Ability$Mana.Colorless & Ability$Token SVar:Picture:http://www.wizards.com/global/images/magic/general/spawning_breath.jpg -Oracle:Spawning Breath deals 1 damage to target creature or player. Create a 0/1 colorless Eldrazi Spawn creature token. It has "Sacrifice this creature: Add {C}." +Oracle:Spawning Breath deals 1 damage to any target. Create a 0/1 colorless Eldrazi Spawn creature token. It has "Sacrifice this creature: Add {C}." diff --git a/forge-gui/res/cardsfolder/s/spellseeker.txt b/forge-gui/res/cardsfolder/s/spellseeker.txt new file mode 100644 index 00000000000..e0edf383c7c --- /dev/null +++ b/forge-gui/res/cardsfolder/s/spellseeker.txt @@ -0,0 +1,7 @@ +Name:Spellseeker +ManaCost:2 U +Types:Creature Human Wizard +PT:1/1 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Self | Execute$ TrigChange | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters the battlefield, you may search your library for an instant or sorcery card with converted mana cost 2 or less, reveal it, put it into your hand, then shuffle your library. +SVar:TrigChange:DB$ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Instant.cmcLE2,Sorcery.cmcLE2 | ChangeNum$ 1 +Oracle:When Spellseeker enters the battlefield, you may search your library for an instant or sorcery card with converted mana cost 2 or less, reveal it, put it into your hand, then shuffle your library. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/s/spellweaver_eternal.txt b/forge-gui/res/cardsfolder/s/spellweaver_eternal.txt index aad11c43103..7f51d81e4da 100644 --- a/forge-gui/res/cardsfolder/s/spellweaver_eternal.txt +++ b/forge-gui/res/cardsfolder/s/spellweaver_eternal.txt @@ -3,6 +3,6 @@ ManaCost:1 U Types:Creature Zombie Naga Wizard PT:2/1 K:Prowess -K:Afflict 2 +K:Afflict:2 SVar:Picture:http://www.wizards.com/global/images/magic/general/spellweaver_eternal.jpg Oracle:Prowess (Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.)\nAfflict 2 (Whenever this creature becomes blocked, defending player loses 2 life.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/s/sphinx_bone_wand.txt b/forge-gui/res/cardsfolder/s/sphinx_bone_wand.txt index 99f4c553758..ee6d3d6fbc7 100644 --- a/forge-gui/res/cardsfolder/s/sphinx_bone_wand.txt +++ b/forge-gui/res/cardsfolder/s/sphinx_bone_wand.txt @@ -1,10 +1,10 @@ Name:Sphinx-Bone Wand ManaCost:7 Types:Artifact -T:Mode$ SpellCast | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | OptionalDecider$ You | TriggerDescription$ Whenever you cast an instant or sorcery spell, you may put a charge counter on CARDNAME. If you do, CARDNAME deals damage equal to the number of charge counters on it to target creature or player. +T:Mode$ SpellCast | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | OptionalDecider$ You | TriggerDescription$ Whenever you cast an instant or sorcery spell, you may put a charge counter on CARDNAME. If you do, CARDNAME deals damage equal to the number of charge counters on it to any target. SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ CHARGE | CounterNum$ 1 | SubAbility$ DBDealDamage -SVar:DBDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X +SVar:DBDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X SVar:X:Count$CardCounters.CHARGE SVar:BuffedBy:Instant,Sorcery SVar:Picture:http://www.wizards.com/global/images/magic/general/sphinx_bone_wand.jpg -Oracle:Whenever you cast an instant or sorcery spell, you may put a charge counter on Sphinx-Bone Wand. If you do, Sphinx-Bone Wand deals damage equal to the number of charge counters on it to target creature or player. +Oracle:Whenever you cast an instant or sorcery spell, you may put a charge counter on Sphinx-Bone Wand. If you do, Sphinx-Bone Wand deals damage equal to the number of charge counters on it to any target. diff --git a/forge-gui/res/cardsfolder/s/spider_spawning.txt b/forge-gui/res/cardsfolder/s/spider_spawning.txt index 9ba28684482..5bc99e78d4d 100644 --- a/forge-gui/res/cardsfolder/s/spider_spawning.txt +++ b/forge-gui/res/cardsfolder/s/spider_spawning.txt @@ -1,7 +1,7 @@ Name:Spider Spawning ManaCost:4 G Types:Sorcery -K:Flashback 6 B +K:Flashback:6 B A:SP$ Token | Cost$ 4 G | TokenImage$ g 1 2 spider ISD | TokenAmount$ X | References$ X | TokenName$ Spider | TokenTypes$ Creature,Spider | TokenOwner$ You | TokenColors$ Green | TokenPower$ 1 | TokenToughness$ 2 | TokenKeywords$ Reach | SpellDescription$ Create a 1/2 green Spider creature token with reach for each creature card in your graveyard. SVar:X:Count$TypeInYourYard.Creature SVar:Picture:http://www.wizards.com/global/images/magic/general/spider_spawning.jpg diff --git a/forge-gui/res/cardsfolder/s/spikeshot_elder.txt b/forge-gui/res/cardsfolder/s/spikeshot_elder.txt index 6e2e6142375..1574e3be868 100644 --- a/forge-gui/res/cardsfolder/s/spikeshot_elder.txt +++ b/forge-gui/res/cardsfolder/s/spikeshot_elder.txt @@ -2,7 +2,7 @@ Name:Spikeshot Elder ManaCost:R Types:Creature Goblin Shaman PT:1/1 -A:AB$ DealDamage | Cost$ 1 R R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to its power to target creature or player. +A:AB$ DealDamage | Cost$ 1 R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to its power to any target. SVar:X:Count$CardPower SVar:Picture:http://www.wizards.com/global/images/magic/general/spikeshot_elder.jpg -Oracle:{1}{R}{R}: Spikeshot Elder deals damage equal to its power to target creature or player. +Oracle:{1}{R}{R}: Spikeshot Elder deals damage equal to its power to any target. diff --git a/forge-gui/res/cardsfolder/s/spikeshot_goblin.txt b/forge-gui/res/cardsfolder/s/spikeshot_goblin.txt index 3c5c78adb9d..5598ef5c0f3 100644 --- a/forge-gui/res/cardsfolder/s/spikeshot_goblin.txt +++ b/forge-gui/res/cardsfolder/s/spikeshot_goblin.txt @@ -2,7 +2,7 @@ Name:Spikeshot Goblin ManaCost:2 R Types:Creature Goblin Shaman PT:1/2 -A:AB$ DealDamage | Cost$ R T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to its power to target creature or player. +A:AB$ DealDamage | Cost$ R T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to its power to any target. SVar:X:Count$CardPower SVar:Picture:http://www.wizards.com/global/images/magic/general/spikeshot_goblin.jpg -Oracle:{R}, {T}: Spikeshot Goblin deals damage equal to its power to target creature or player. +Oracle:{R}, {T}: Spikeshot Goblin deals damage equal to its power to any target. diff --git a/forge-gui/res/cardsfolder/s/spiraling_embers.txt b/forge-gui/res/cardsfolder/s/spiraling_embers.txt index 3eb1bca56b5..45ec681eb8a 100644 --- a/forge-gui/res/cardsfolder/s/spiraling_embers.txt +++ b/forge-gui/res/cardsfolder/s/spiraling_embers.txt @@ -1,7 +1,7 @@ Name:Spiraling Embers ManaCost:3 R Types:Sorcery Arcane -A:SP$ DealDamage | Cost$ 3 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage to target creature or player equal to the number of cards in your hand. +A:SP$ DealDamage | Cost$ 3 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage to any target equal to the number of cards in your hand. SVar:X:Count$InYourHand SVar:Picture:http://www.wizards.com/global/images/magic/general/spiraling_embers.jpg -Oracle:Spiraling Embers deals damage to target creature or player equal to the number of cards in your hand. +Oracle:Spiraling Embers deals damage to any target equal to the number of cards in your hand. diff --git a/forge-gui/res/cardsfolder/s/spire_barrage.txt b/forge-gui/res/cardsfolder/s/spire_barrage.txt index ede81a0bbfe..8848e85d9aa 100644 --- a/forge-gui/res/cardsfolder/s/spire_barrage.txt +++ b/forge-gui/res/cardsfolder/s/spire_barrage.txt @@ -1,7 +1,7 @@ Name:Spire Barrage ManaCost:4 R Types:Sorcery -A:SP$ DealDamage | Cost$ 4 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage to target creature or player equal to the number of Mountains you control. +A:SP$ DealDamage | Cost$ 4 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage to any target equal to the number of Mountains you control. SVar:X:Count$TypeYouCtrl.Mountain SVar:Picture:http://www.wizards.com/global/images/magic/general/spire_barrage.jpg -Oracle:Spire Barrage deals damage to target creature or player equal to the number of Mountains you control. +Oracle:Spire Barrage deals damage to any target equal to the number of Mountains you control. diff --git a/forge-gui/res/cardsfolder/upcoming/spire_garden.txt b/forge-gui/res/cardsfolder/s/spire_garden.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/spire_garden.txt rename to forge-gui/res/cardsfolder/s/spire_garden.txt diff --git a/forge-gui/res/cardsfolder/s/spirit_flare.txt b/forge-gui/res/cardsfolder/s/spirit_flare.txt index 93c08457783..14daafdc932 100644 --- a/forge-gui/res/cardsfolder/s/spirit_flare.txt +++ b/forge-gui/res/cardsfolder/s/spirit_flare.txt @@ -1,7 +1,7 @@ Name:Spirit Flare ManaCost:3 W Types:Instant -K:Flashback 1 W PayLife<3> +K:Flashback:1 W PayLife<3> A:SP$ Tap | Cost$ 3 W | TgtPrompt$ Select target untapped creature you control | ValidTgts$ Creature.untapped+YouCtrl | SubAbility$ SpiritDmg | RememberTapped$ True | SpellDescription$ Tap target untapped creature you control. If you do, it deals damage equal to its power to target attacking or blocking creature an opponent controls. SVar:SpiritDmg:DB$ DealDamage | ValidTgts$ Creature.attacking+OppCtrl,Creature.blocking+OppCtrl | TgtPrompt$ Select target attacking or blocking creature an opponent controls | NumDmg$ SpiritStrength | ConditionCheckSVar$ WasTapped | ConditionSVarCompare$ GE1 | References$ SpiritStrength,WasTapped SVar:SpiritStrength:Remembered$CardPower diff --git a/forge-gui/res/cardsfolder/s/spit_flame.txt b/forge-gui/res/cardsfolder/s/spit_flame.txt new file mode 100644 index 00000000000..42f7b90a5e3 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/spit_flame.txt @@ -0,0 +1,8 @@ +Name:Spit Flame +ManaCost:2 R +Types:Instant +A:SP$ DealDamage | Cost$ 2 R | NumDmg$ 4 | ValidTgts$ Creature | TgtPrompt$ Select target creature | SpellDescription$ CARDNAME deals 4 damage to target creature. +T:Mode$ ChangesZone | ValidCard$ Dragon.YouCtrl | Origin$ Any | Destination$ Battlefield | TriggerZones$ Graveyard | OptionalDecider$ You | Execute$ TrigABChangeZone | TriggerDescription$ Whenever a Dragon enters the battlefield under your control, you may pay {R}. If you do, return Spit Flame from your graveyard to your hand. +SVar:TrigABChangeZone:AB$ ChangeZone | ValidCard$ Card.Self | Cost$ R | Origin$ Graveyard | Destination$ Hand +DeckHints:Type$Dragon +Oracle:Spit Flame deals 4 damage to target creature.\nWhenever a Dragon enters the battlefield under your control, you may pay {R}. If you do, return Spit Flame from your graveyard to your hand. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/s/spitemare.txt b/forge-gui/res/cardsfolder/s/spitemare.txt index 7e3131f8728..274712fb963 100644 --- a/forge-gui/res/cardsfolder/s/spitemare.txt +++ b/forge-gui/res/cardsfolder/s/spitemare.txt @@ -2,9 +2,9 @@ Name:Spitemare ManaCost:2 RW RW Types:Creature Elemental PT:3/3 -T:Mode$ DamageDoneOnce | Execute$ TrigDamage | ValidTarget$ Card.Self | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME is dealt damage, it deals that much damage to target creature or player. -SVar:TrigDamage:DB$ DealDamage | NumDmg$ X | References$ X | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player +T:Mode$ DamageDoneOnce | Execute$ TrigDamage | ValidTarget$ Card.Self | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME is dealt damage, it deals that much damage to any target. +SVar:TrigDamage:DB$ DealDamage | NumDmg$ X | References$ X | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target SVar:X:TriggerCount$DamageAmount SVar:HasCombatEffect:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/spitemare.jpg -Oracle:Whenever Spitemare is dealt damage, it deals that much damage to target creature or player. +Oracle:Whenever Spitemare is dealt damage, it deals that much damage to any target. diff --git a/forge-gui/res/cardsfolder/s/split_tail_miko.txt b/forge-gui/res/cardsfolder/s/split_tail_miko.txt index 3f964fae4a6..ba5398211ee 100644 --- a/forge-gui/res/cardsfolder/s/split_tail_miko.txt +++ b/forge-gui/res/cardsfolder/s/split_tail_miko.txt @@ -2,6 +2,6 @@ Name:Split-Tail Miko ManaCost:1 W Types:Creature Fox Cleric PT:1/1 -A:AB$ PreventDamage | Cost$ W T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 2 | SpellDescription$ Prevent the next 2 damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ W T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 2 | SpellDescription$ Prevent the next 2 damage that would be dealt to any target this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/split_tail_miko.jpg -Oracle:{W}, {T}: Prevent the next 2 damage that would be dealt to target creature or player this turn. +Oracle:{W}, {T}: Prevent the next 2 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/s/spreading_seas.txt b/forge-gui/res/cardsfolder/s/spreading_seas.txt index b786c28f9a3..b7d7d105205 100644 --- a/forge-gui/res/cardsfolder/s/spreading_seas.txt +++ b/forge-gui/res/cardsfolder/s/spreading_seas.txt @@ -3,7 +3,7 @@ ManaCost:1 U Types:Enchantment Aura K:Enchant land A:SP$ Attach | Cost$ 1 U | ValidTgts$ Land | AILogic$ ChangeType -S:Mode$ Continuous | Affected$ Card.EnchantedBy | AddType$ Island | RemoveSubTypes$ True | RemoveAllAbilities$ True | Description$ Enchanted land is an Island. +S:Mode$ Continuous | Affected$ Card.EnchantedBy | AddType$ Island | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True | Description$ Enchanted land is an Island. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerDescription$ When CARDNAME enters the battlefield, draw a card. SVar:TrigDraw:DB$Draw | Defined$ You | NumCards$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/spreading_seas.jpg diff --git a/forge-gui/res/cardsfolder/s/staff_of_nin.txt b/forge-gui/res/cardsfolder/s/staff_of_nin.txt index 1826fc4a8bb..9255f6cfbff 100644 --- a/forge-gui/res/cardsfolder/s/staff_of_nin.txt +++ b/forge-gui/res/cardsfolder/s/staff_of_nin.txt @@ -3,6 +3,6 @@ ManaCost:6 Types:Artifact T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ At the beginning of your upkeep, draw a card. SVar:TrigDraw:DB$Draw | NumCards$ 1 | Defined$ You -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/staff_of_nin.jpg -Oracle:At the beginning of your upkeep, draw a card.\n{T}: Staff of Nin deals 1 damage to target creature or player. +Oracle:At the beginning of your upkeep, draw a card.\n{T}: Staff of Nin deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/staggershock.txt b/forge-gui/res/cardsfolder/s/staggershock.txt index 34b12cb4fce..97d18489283 100644 --- a/forge-gui/res/cardsfolder/s/staggershock.txt +++ b/forge-gui/res/cardsfolder/s/staggershock.txt @@ -2,6 +2,6 @@ Name:Staggershock ManaCost:2 R Types:Instant K:Rebound -A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/staggershock.jpg -Oracle:Staggershock deals 2 damage to target creature or player.\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.) +Oracle:Staggershock deals 2 damage to any target.\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.) diff --git a/forge-gui/res/cardsfolder/s/stalking_vengeance.txt b/forge-gui/res/cardsfolder/s/stalking_vengeance.txt index ca3f211a3bd..5629ebcd504 100644 --- a/forge-gui/res/cardsfolder/s/stalking_vengeance.txt +++ b/forge-gui/res/cardsfolder/s/stalking_vengeance.txt @@ -3,8 +3,8 @@ ManaCost:5 R R Types:Creature Avatar PT:5/5 K:Haste -T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.YouCtrl+Other | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever another creature you control dies, it deals damage equal to its power to target player. -SVar:TrigDamage:DB$DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ X +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.YouCtrl+Other | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever another creature you control dies, it deals damage equal to its power to target player or planeswalker. +SVar:TrigDamage:DB$DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ X SVar:X:TriggeredCard$CardPower SVar:Picture:http://www.wizards.com/global/images/magic/general/stalking_vengeance.jpg -Oracle:Haste\nWhenever another creature you control dies, it deals damage equal to its power to target player. +Oracle:Haste\nWhenever another creature you control dies, it deals damage equal to its power to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/s/standardize.txt b/forge-gui/res/cardsfolder/s/standardize.txt index a54c397776d..39bef978c2f 100644 --- a/forge-gui/res/cardsfolder/s/standardize.txt +++ b/forge-gui/res/cardsfolder/s/standardize.txt @@ -2,7 +2,7 @@ Name:Standardize ManaCost:U U Types:Instant A:SP$ ChooseType | Cost$ U U | Defined$ You | Type$ Creature | InvalidTypes$ Wall | SubAbility$ DBAnimateAll | SpellDescription$ Choose a creature type other than Wall. Each creature becomes that type until end of turn. -SVar:DBAnimateAll:DB$ AnimateAll | ValidCards$ Creature | Types$ ChosenType | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True +SVar:DBAnimateAll:DB$ AnimateAll | ValidCards$ Creature | Types$ ChosenType | RemoveCreatureTypes$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/standardize.jpg Oracle:Choose a creature type other than Wall. Each creature becomes that type until end of turn. diff --git a/forge-gui/res/cardsfolder/s/star_crowned_stag.txt b/forge-gui/res/cardsfolder/s/star_crowned_stag.txt new file mode 100644 index 00000000000..74be9d3be6a --- /dev/null +++ b/forge-gui/res/cardsfolder/s/star_crowned_stag.txt @@ -0,0 +1,7 @@ +Name:Star-Crowned Stag +ManaCost:3 W +Types:Creature Elk +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigTap | TriggerDescription$ Whenever CARDNAME attacks, tap target creature defending player controls. +SVar:TrigTap:DB$ Tap | ValidTgts$ Creature.DefenderCtrl | TgtPrompt$ Select target creature defending player controls. +Oracle:Whenever Star-Crowned attacks, tap target creature defending player controls. +PT:3/3 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/s/steamcore_weird.txt b/forge-gui/res/cardsfolder/s/steamcore_weird.txt index e1c7e64ed00..005d53f9f2d 100644 --- a/forge-gui/res/cardsfolder/s/steamcore_weird.txt +++ b/forge-gui/res/cardsfolder/s/steamcore_weird.txt @@ -2,10 +2,10 @@ Name:Steamcore Weird ManaCost:3 U Types:Creature Weird PT:1/3 -T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigDamage | TriggerDescription$ When CARDNAME enters the battlefield, if {R} was spent to cast CARDNAME, it deals 2 damage to target creature or player. -SVar:TrigDamage:DB$ DealDamage | NumDmg$ 2 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | ConditionManaSpent$ R +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigDamage | TriggerDescription$ When CARDNAME enters the battlefield, if {R} was spent to cast CARDNAME, it deals 2 damage to any target. +SVar:TrigDamage:DB$ DealDamage | NumDmg$ 2 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | ConditionManaSpent$ R SVar:ManaNeededToAvoidNegativeEffect:red SVar:RemRandomDeck:True DeckNeeds:Color$Red SVar:Picture:http://www.wizards.com/global/images/magic/general/steamcore_weird.jpg -Oracle:When Steamcore Weird enters the battlefield, if {R} was spent to cast Steamcore Weird, it deals 2 damage to target creature or player. +Oracle:When Steamcore Weird enters the battlefield, if {R} was spent to cast Steamcore Weird, it deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/stensia_banquet.txt b/forge-gui/res/cardsfolder/s/stensia_banquet.txt index 37ed0b440e6..b926fdf329a 100644 --- a/forge-gui/res/cardsfolder/s/stensia_banquet.txt +++ b/forge-gui/res/cardsfolder/s/stensia_banquet.txt @@ -1,10 +1,10 @@ Name:Stensia Banquet ManaCost:2 R Types:Sorcery -A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | NumDmg$ X | References$ X | SubAbility$ DBDraw | SpellDescription$ CARDNAME deals damage to target opponent equal to the number of Vampires you control. Draw a card. +A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Opponent,Planeswalker | TgtPrompt$ Select target opponent or planeswalker | NumDmg$ X | References$ X | SubAbility$ DBDraw | SpellDescription$ CARDNAME deals damage to target opponent or planeswalker equal to the number of Vampires you control. Draw a card. SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ 1 SVar:X:Count$TypeYouCtrl.Vampire SVar:RemRandomDeck:True DeckHints:Type$Vampire SVar:Picture:http://www.wizards.com/global/images/magic/general/stensia_banquet.jpg -Oracle:Stensia Banquet deals damage to target opponent equal to the number of Vampires you control.\nDraw a card. +Oracle:Stensia Banquet deals damage to target opponent or planeswalker equal to the number of Vampires you control.\nDraw a card. diff --git a/forge-gui/res/cardsfolder/s/stensia_bloodhall.txt b/forge-gui/res/cardsfolder/s/stensia_bloodhall.txt index 9fa2d177b68..152c01742f3 100644 --- a/forge-gui/res/cardsfolder/s/stensia_bloodhall.txt +++ b/forge-gui/res/cardsfolder/s/stensia_bloodhall.txt @@ -2,6 +2,6 @@ Name:Stensia Bloodhall ManaCost:no cost Types:Land A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}. -A:AB$ DealDamage | Cost$ 3 B R T | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target player. +A:AB$ DealDamage | Cost$ 3 B R T | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target player or planeswalker. SVar:Picture:http://www.wizards.com/global/images/magic/general/stensia_bloodhall.jpg -Oracle:{T}: Add {C}.\n{3}{B}{R}, {T}: Stensia Bloodhall deals 2 damage to target player. +Oracle:{T}: Add {C}.\n{3}{B}{R}, {T}: Stensia Bloodhall deals 2 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/s/stinging_barrier.txt b/forge-gui/res/cardsfolder/s/stinging_barrier.txt index b958bb0f9f2..f65074b6940 100644 --- a/forge-gui/res/cardsfolder/s/stinging_barrier.txt +++ b/forge-gui/res/cardsfolder/s/stinging_barrier.txt @@ -3,6 +3,6 @@ ManaCost:2 U U Types:Creature Wall PT:0/4 K:Defender -A:AB$ DealDamage | Cost$ U T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ U T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/stinging_barrier.jpg -Oracle:Defender (This creature can't attack.)\n{U}, {T}: Stinging Barrier deals 1 damage to target creature or player. +Oracle:Defender (This creature can't attack.)\n{U}, {T}: Stinging Barrier deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/stinging_licid.txt b/forge-gui/res/cardsfolder/s/stinging_licid.txt index d6f23abb229..0731f7ea8b2 100644 --- a/forge-gui/res/cardsfolder/s/stinging_licid.txt +++ b/forge-gui/res/cardsfolder/s/stinging_licid.txt @@ -2,7 +2,7 @@ Name:Stinging Licid ManaCost:1 U Types:Creature Licid PT:1/1 -A:AB$ Animate | Cost$ 1 U T | Defined$ Self | RemoveThisAbility$ True | Permanent$ True | RevertCost$ U | Keywords$ Enchant creature | Abilities$ SPAttach | Types$ Enchantment,Aura | RemoveCardTypes$ True | RemoveSubTypes$ True | SubAbility$ DBAttach | SpellDescription$ CARDNAME loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {U} to end this effect. +A:AB$ Animate | Cost$ 1 U T | Defined$ Self | RemoveThisAbility$ True | Permanent$ True | RevertCost$ U | Keywords$ Enchant creature | Abilities$ SPAttach | Types$ Enchantment,Aura | RemoveCardTypes$ True | RemoveEnchantmentTypes$ True | SubAbility$ DBAttach | SpellDescription$ CARDNAME loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {U} to end this effect. SVar:DBAttach:DB$ Attach | ValidTgts$ Creature | AILogic$ Curse SVar:SPAttach:SP$ Attach | Cost$ 0 | ValidTgts$ Creature T:Mode$ Taps | ValidCard$ Card.AttachedBy | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever enchanted creature becomes tapped, CARDNAME deals 2 damage to that creature's controller. diff --git a/forge-gui/res/cardsfolder/s/stinkdrinker_bandit.txt b/forge-gui/res/cardsfolder/s/stinkdrinker_bandit.txt index 738c9663b44..627281856bb 100644 --- a/forge-gui/res/cardsfolder/s/stinkdrinker_bandit.txt +++ b/forge-gui/res/cardsfolder/s/stinkdrinker_bandit.txt @@ -2,9 +2,10 @@ Name:Stinkdrinker Bandit ManaCost:3 B Types:Creature Goblin Rogue PT:2/1 -SVar:AltCost:Cost$ 1 B | Activation$ ProwlGoblin | Description$ Prowl {1}{B} (You may cast this for its prowl cost if you dealt combat damage to a player this turn with a Goblin or Rogue.) +K:Prowl:1 B T:Mode$ AttackerUnblocked | ValidCard$ Rogue.YouCtrl | Execute$ TrigPump | TriggerZones$ Battlefield | TriggerDescription$ Whenever a Rogue you control attacks and isn't blocked, it gets +2/+1 until end of turn. SVar:TrigPump:DB$Pump | NumAtt$ +2 | NumDef$ +1 | Defined$ TriggeredAttacker +DeckNeeds:Type$Rogue SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/stinkdrinker_bandit.jpg Oracle:Prowl {1}{B} (You may cast this for its prowl cost if you dealt combat damage to a player this turn with a Goblin or Rogue.)\nWhenever a Rogue you control attacks and isn't blocked, it gets +2/+1 until end of turn. diff --git a/forge-gui/res/cardsfolder/s/stinkweed_imp.txt b/forge-gui/res/cardsfolder/s/stinkweed_imp.txt index 29fabd27599..c6e5c14dbbf 100644 --- a/forge-gui/res/cardsfolder/s/stinkweed_imp.txt +++ b/forge-gui/res/cardsfolder/s/stinkweed_imp.txt @@ -5,6 +5,6 @@ PT:1/2 K:Flying T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Creature | CombatDamage$ True | TriggerZones$ Battlefield | Execute$ TrigDestroy | TriggerDescription$ Whenever CARDNAME deals combat damage to a creature, destroy that creature. SVar:TrigDestroy:DB$Destroy | Defined$ TriggeredTarget -K:Dredge 5 +K:Dredge:5 SVar:Picture:http://www.wizards.com/global/images/magic/general/stinkweed_imp.jpg Oracle:Flying\nWhenever Stinkweed Imp deals combat damage to a creature, destroy that creature.\nDredge 5 (If you would draw a card, instead you may put exactly five cards from the top of your library into your graveyard. If you do, return this card from your graveyard to your hand. Otherwise, draw a card.) diff --git a/forge-gui/res/cardsfolder/s/stitchers_supplier.txt b/forge-gui/res/cardsfolder/s/stitchers_supplier.txt new file mode 100644 index 00000000000..3c6f6dc2b6d --- /dev/null +++ b/forge-gui/res/cardsfolder/s/stitchers_supplier.txt @@ -0,0 +1,8 @@ +Name:Stitcher's Supplier +ManaCost:B +Types:Creature Zombie +PT:1/1 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigMill | TriggerDescription$ When CARDNAME enters the battlefield or dies, put the top three cards of your library into your graveyard. +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigMill | TriggerDescription$ When CARDNAME enters the battlefield or dies, put the top three cards of your library into your graveyard. +SVar:TrigMill:DB$Mill | NumCards$ 3 | Defined$ You +Oracle:When Stitcher’s Supplier enters the battlefield or dies, put the top three cards of your library into your graveyard. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/s/stoke_the_flames.txt b/forge-gui/res/cardsfolder/s/stoke_the_flames.txt index 6d20b9c26bf..25cf881f9d0 100644 --- a/forge-gui/res/cardsfolder/s/stoke_the_flames.txt +++ b/forge-gui/res/cardsfolder/s/stoke_the_flames.txt @@ -2,6 +2,6 @@ Name:Stoke the Flames ManaCost:2 R R Types:Instant K:Convoke -A:SP$ DealDamage | Cost$ 2 R R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target creature or player. +A:SP$ DealDamage | Cost$ 2 R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/stoke_the_flames.jpg -Oracle:Convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for {1} or one mana of that creature's color.)\nStoke the Flames deals 4 damage to target creature or player. +Oracle:Convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for {1} or one mana of that creature's color.)\nStoke the Flames deals 4 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/stolen_grain.txt b/forge-gui/res/cardsfolder/s/stolen_grain.txt index fa9d28eee98..179182c1595 100644 --- a/forge-gui/res/cardsfolder/s/stolen_grain.txt +++ b/forge-gui/res/cardsfolder/s/stolen_grain.txt @@ -1,7 +1,7 @@ Name:Stolen Grain ManaCost:4 B B Types:Sorcery -A:SP$ DealDamage | Cost$ 4 B B | ValidTgts$ Opponent | NumDmg$ 5 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 5 damage to target opponent. You gain 5 life. +A:SP$ DealDamage | Cost$ 4 B B | ValidTgts$ Opponent,Planeswalker | NumDmg$ 5 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 5 damage to target opponent or planeswalker. You gain 5 life. SVar:DBGainLife:DB$GainLife | LifeAmount$ 5 SVar:Picture:http://www.wizards.com/global/images/magic/general/stolen_grain.jpg -Oracle:Stolen Grain deals 5 damage to target opponent. You gain 5 life. +Oracle:Stolen Grain deals 5 damage to target opponent or planeswalker. You gain 5 life. diff --git a/forge-gui/res/cardsfolder/s/stomping_slabs.txt b/forge-gui/res/cardsfolder/s/stomping_slabs.txt index e94f61c9826..cc9f7b6505e 100644 --- a/forge-gui/res/cardsfolder/s/stomping_slabs.txt +++ b/forge-gui/res/cardsfolder/s/stomping_slabs.txt @@ -1,10 +1,10 @@ Name:Stomping Slabs ManaCost:2 R Types:Sorcery -A:SP$ Dig | Cost$ 2 R | DigNum$ 7 | Reveal$ True | RememberRevealed$ True | DestinationZone$ Library | LibraryPosition$ -1 | LibraryPosition2$ -1 | SubAbility$ DBDamage | SpellDescription$ Reveal the top seven cards of your library, then put those cards on the bottom of your library in any order. If a card named CARDNAME was revealed this way, CARDNAME deals 7 damage to target creature or player. -SVar:DBDamage:DB$ DealDamage | NumDmg$ 7 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | ConditionDefined$ Remembered | ConditionPresent$ Card.namedStomping Slabs | ConditionCompare$ GE1 | SubAbility$ DBCleanup +A:SP$ Dig | Cost$ 2 R | DigNum$ 7 | Reveal$ True | RememberRevealed$ True | DestinationZone$ Library | LibraryPosition$ -1 | LibraryPosition2$ -1 | SubAbility$ DBDamage | SpellDescription$ Reveal the top seven cards of your library, then put those cards on the bottom of your library in any order. If a card named CARDNAME was revealed this way, CARDNAME deals 7 damage to any target. +SVar:DBDamage:DB$ DealDamage | NumDmg$ 7 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | ConditionDefined$ Remembered | ConditionPresent$ Card.namedStomping Slabs | ConditionCompare$ GE1 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:RemRandomDeck:True DeckNeeds:Name$Stomping Slabs SVar:Picture:http://www.wizards.com/global/images/magic/general/stomping_slabs.jpg -Oracle:Reveal the top seven cards of your library, then put those cards on the bottom of your library in any order. If a card named Stomping Slabs was revealed this way, Stomping Slabs deals 7 damage to target creature or player. +Oracle:Reveal the top seven cards of your library, then put those cards on the bottom of your library in any order. If a card named Stomping Slabs was revealed this way, Stomping Slabs deals 7 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/storm_fleet_pyromancer.txt b/forge-gui/res/cardsfolder/s/storm_fleet_pyromancer.txt index 4be34ee8264..26e282d3f8d 100644 --- a/forge-gui/res/cardsfolder/s/storm_fleet_pyromancer.txt +++ b/forge-gui/res/cardsfolder/s/storm_fleet_pyromancer.txt @@ -2,8 +2,8 @@ Name:Storm Fleet Pyromancer ManaCost:4 R Types:Creature Human Pirate Wizard PT:3/2 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | CheckSVar$ RaidTest | Execute$ TrigDealDamage | TriggerDescription$ Raid — When CARDNAME enters the battlefield, if you attacked with a creature this turn, Storm Fleet Pyromancer deals 2 damage to target creature or player. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | CheckSVar$ RaidTest | Execute$ TrigDealDamage | TriggerDescription$ Raid — When CARDNAME enters the battlefield, if you attacked with a creature this turn, Storm Fleet Pyromancer deals 2 damage to any target. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 SVar:RaidTest:Count$AttackersDeclared SVar:Picture:http://www.wizards.com/global/images/magic/general/storm_fleet_pyromancer.jpg -Oracle:Raid — When Storm Fleet Pyromancer enters the battlefield, if you attacked with a creature this turn, Storm Fleet Pyromancer deals 2 damage to target creature or player. \ No newline at end of file +Oracle:Raid — When Storm Fleet Pyromancer enters the battlefield, if you attacked with a creature this turn, Storm Fleet Pyromancer deals 2 damage to any target. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/s/stormbind.txt b/forge-gui/res/cardsfolder/s/stormbind.txt index 5ec88f10c18..1c47dc35107 100644 --- a/forge-gui/res/cardsfolder/s/stormbind.txt +++ b/forge-gui/res/cardsfolder/s/stormbind.txt @@ -1,7 +1,7 @@ Name:Stormbind ManaCost:1 R G Types:Enchantment -A:AB$ DealDamage | Cost$ 2 Discard<1/Random> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:AB$ DealDamage | Cost$ 2 Discard<1/Random> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/stormbind.jpg SVar:NonStackingEffect:True -Oracle:{2}, Discard a card at random: Stormbind deals 2 damage to target creature or player. +Oracle:{2}, Discard a card at random: Stormbind deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/stormcloud_spirit.txt b/forge-gui/res/cardsfolder/s/stormcloud_spirit.txt new file mode 100644 index 00000000000..3898de65552 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/stormcloud_spirit.txt @@ -0,0 +1,6 @@ +Name:Stormcloud Spirit +ManaCost:3 U U +Types:Creature Spirit +K:Flying +Oracle:Flying (This creature can't be blocked except by creatures with flying or reach.) +PT:4/4 diff --git a/forge-gui/res/cardsfolder/s/stormscale_anarch.txt b/forge-gui/res/cardsfolder/s/stormscale_anarch.txt index dec94b7319d..b4adfc85430 100644 --- a/forge-gui/res/cardsfolder/s/stormscale_anarch.txt +++ b/forge-gui/res/cardsfolder/s/stormscale_anarch.txt @@ -2,8 +2,8 @@ Name:Stormscale Anarch ManaCost:2 R R Types:Creature Viashino Shaman PT:2/2 -A:AB$ DealDamage | Cost$ 2 R Discard<1/Random> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | SpellDescription$ CARDNAME deals 2 damage to target creature or player. If the discarded card was multicolored, CARDNAME deals 4 damage to that creature or player instead. +A:AB$ DealDamage | Cost$ 2 R Discard<1/Random> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | SpellDescription$ CARDNAME deals 2 damage to any target. If the discarded card was multicolored, CARDNAME deals 4 damage to that permanent or player instead. SVar:X:Discarded$CardMulticolor.4.2 SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/stormscale_anarch.jpg -Oracle:{2}{R}, Discard a card at random: Stormscale Anarch deals 2 damage to target creature or player. If the discarded card was multicolored, Stormscale Anarch deals 4 damage to that creature or player instead. +Oracle:{2}{R}, Discard a card at random: Stormscale Anarch deals 2 damage to any target. If the discarded card was multicolored, Stormscale Anarch deals 4 damage to that permanent or player instead. diff --git a/forge-gui/res/cardsfolder/s/strangling_soot.txt b/forge-gui/res/cardsfolder/s/strangling_soot.txt index 7128e9d643d..e5fb63f9e87 100644 --- a/forge-gui/res/cardsfolder/s/strangling_soot.txt +++ b/forge-gui/res/cardsfolder/s/strangling_soot.txt @@ -1,7 +1,7 @@ Name:Strangling Soot ManaCost:2 B Types:Instant -K:Flashback 5 R +K:Flashback:5 R A:SP$ Destroy | Cost$ 2 B | ValidTgts$ Creature.toughnessLE3 | TgtPrompt$ Select target creature with toughness 3 or less | SpellDescription$ Destroy target creature with toughness 3 or less. SVar:Picture:http://resources.wizards.com/magic/cards/tsp/en-us/card109710.jpg Oracle:Destroy target creature with toughness 3 or less.\nFlashback {5}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/s/strangling_spores.txt b/forge-gui/res/cardsfolder/s/strangling_spores.txt new file mode 100644 index 00000000000..9d3cd84af18 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/strangling_spores.txt @@ -0,0 +1,5 @@ +Name:Strangling Spores +ManaCost:3 B +Types:Instant +A:SP$Pump | Cost$3 B | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ -3 | NumDef$ -3 | IsCurse$ True | SpellDescription$ Target creature gets -3/-3 until end of turn. +Oracle:Target creature gets -3/-3 until end of turn. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/s/streambed_aquitects.txt b/forge-gui/res/cardsfolder/s/streambed_aquitects.txt index a0ee818f92b..ad6515c4fa5 100644 --- a/forge-gui/res/cardsfolder/s/streambed_aquitects.txt +++ b/forge-gui/res/cardsfolder/s/streambed_aquitects.txt @@ -3,6 +3,6 @@ ManaCost:1 U U Types:Creature Merfolk Scout PT:2/3 A:AB$ Pump | Cost$ T | ValidTgts$ Merfolk | TgtPrompt$ Select target Merfolk creature | NumAtt$ +1 | NumDef$ +1 | KW$ Islandwalk | SpellDescription$ Target Merfolk creature gets +1/+1 and gains islandwalk until end of turn. -A:AB$ Animate | Cost$ T | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ Island | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | RemoveAllAbilities$ True | SpellDescription$ Target land becomes an Island until end of turn. +A:AB$ Animate | Cost$ T | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ Island | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True | SpellDescription$ Target land becomes an Island until end of turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/streambed_aquitects.jpg Oracle:{T}: Target Merfolk creature gets +1/+1 and gains islandwalk until end of turn. (It can't be blocked as long as defending player controls an Island.)\n{T}: Target land becomes an Island until end of turn. diff --git a/forge-gui/res/cardsfolder/s/stronghold_furnace.txt b/forge-gui/res/cardsfolder/s/stronghold_furnace.txt index aeb3cb41755..18a5ed6d00f 100644 --- a/forge-gui/res/cardsfolder/s/stronghold_furnace.txt +++ b/forge-gui/res/cardsfolder/s/stronghold_furnace.txt @@ -1,11 +1,11 @@ Name:Stronghold Furnace ManaCost:no cost Types:Plane Rath -R:Event$ DamageDone | ActiveZones$ Command | ValidSource$ Card | ValidTarget$ Creature,Player | ReplaceWith$ DmgTwice | Description$ If a source would deal damage to a creature or player, it deals double that damage to that creature or player instead. +R:Event$ DamageDone | ActiveZones$ Command | ValidSource$ Card | ValidTarget$ Permanent,Player| ReplaceWith$ DmgTwice | Description$ If a source would deal damage to a permanent or player, it deals double that damage to that permanent or player instead. SVar:DmgTwice:DB$ ReplaceEffect | VarName$ DamageAmount | VarValue$ Y | References$ Y SVar:Y:ReplaceCount$DamageAmount/Twice -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, CARDNAME deals 1 damage to target creature or player. -SVar:RolledChaos:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 +T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, CARDNAME deals 1 damage to any target. +SVar:RolledChaos:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/stronghold_furnace.jpg SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:If a source would deal damage to a creature or player, it deals double that damage to that creature or player instead.\nWhenever you roll {CHAOS}, Stronghold Furnace deals 1 damage to target creature or player. +Oracle:If a source would deal damage to a permanent or player, it deals double that damage to that permanent or player instead.\nWhenever you roll {CHAOS}, Stronghold Furnace deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/stuffy_doll_avatar.txt b/forge-gui/res/cardsfolder/s/stuffy_doll_avatar.txt index df3b819dba1..c54401a9aa6 100644 --- a/forge-gui/res/cardsfolder/s/stuffy_doll_avatar.txt +++ b/forge-gui/res/cardsfolder/s/stuffy_doll_avatar.txt @@ -2,13 +2,13 @@ Name:Stuffy Doll Avatar ManaCost:no cost Types:Vanguard HandLifeModifier:+0/-6 -A:AB$ ChooseSource | Cost$ 0 | ActivationZone$ Command | Choices$ Card | RememberChosen$ True | AILogic$ NeedsPrevention | SubAbility$ DBTargetOpp | ActivationLimit$ 1 | SpellDescription$ If damage would be dealt to you this turn by a source of your choice, prevent that damage. CARDNAME deals damage to you and target opponent equal to half the damage prevented this way, rounded up. Activate this ability only once each turn. -SVar:DBTargetOpp:DB$ Pump | ValidTgts$ Opponent | TgtPrompt$ Select target opponent to give damage | RememberObjects$ Targeted | StackDescription$ None | SubAbility$ DBEffect -SVar:DBEffect:DB$ Effect | ReplacementEffects$ SelflessDamage | RememberObjects$ Remembered | SVars$ DamageEffectYou,DamageEffectPlayer,X | SubAbility$ DBCleanup | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ GE1 -SVar:SelflessDamage:Event$ DamageDone | ValidTarget$ You | ValidSource$ Card.IsRemembered | PreventionEffect$ True | ReplaceWith$ DamageEffectYou | Description$ If damage would be dealt to you this turn by a source of your choice, prevent that damage. Stuffy Doll Avatar deals damage to you and target opponent equal to half the damage prevented this way, rounded up. Activate this ability only once each turn. -SVar:DamageEffectYou:DB$ DealDamage | Defined$ You | DamageSource$ EffectSource | NumDmg$ X | SubAbility$ AvatarCombat -SVar:DamageEffectPlayer:DB$ DealDamage | Defined$ Player.IsRemembered | DamageSource$ EffectSource | NumDmg$ X +A:AB$ ChooseSource | Cost$ 0 | ActivationZone$ Command | Choices$ Card,Emblem | AILogic$ NeedsPrevention | SubAbility$ DBEffect | ActivationLimit$ 1 | SpellDescription$ If damage would be dealt to you this turn by a source of your choice, prevent that damage. CARDNAME deals damage to you and target opponent or planeswalker equal to half the damage prevented this way, rounded up. Activate this ability only once each turn. +SVar:DBEffect:DB$ Effect | ReplacementEffects$ SelflessDamage | RememberObjects$ Targeted | SVars$ DamageEffectYou,DamageEffectPlayer,DBDamageResolve,X | SubAbility$ DBCleanup | ConditionDefined$ ChosenCard | ConditionPresent$ Card | ConditionCompare$ GE1 | ValidTgts$ Opponent,Planeswalker | TgtPrompt$ Select target opponent or planeswalker to give damage +SVar:SelflessDamage:Event$ DamageDone | ValidTarget$ You | ValidSource$ Card.ChosenCard | PreventionEffect$ True | ReplaceWith$ DamageEffectYou | Description$ If damage would be dealt to you this turn by a source of your choice, prevent that damage. Stuffy Doll Avatar deals damage to you and target opponent or planeswalker equal to half the damage prevented this way, rounded up. Activate this ability only once each turn. +SVar:DamageEffectYou:DB$ DealDamage | Defined$ You | DamageSource$ EffectSource | NumDmg$ X | SubAbility$ DamageEffectPlayer | DamageMap$ True +SVar:DamageEffectPlayer:DB$ DealDamage | Defined$ Remembered | DamageSource$ EffectSource | NumDmg$ X | SubAbility$ DBDamageResolve +SVar:DBDamageResolve:DB$ DamageResolve SVar:X:ReplaceCount$DamageAmount/HalfUp SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenCard$ True SVar:Picture:https://downloads.cardforge.org/images/cards/VAN/Stuffy Doll Avatar.full.jpg -Oracle:Hand +0, life -6\n{0}: If damage would be dealt to you this turn by a source of your choice, prevent that damage. Stuffy Doll Avatar deals damage to you and target opponent equal to half the damage prevented this way, rounded up. Activate this ability only once each turn. +Oracle:Hand +0, life -6\n{0}: If damage would be dealt to you this turn by a source of your choice, prevent that damage. Stuffy Doll Avatar deals damage to you and target opponent or planeswalker equal to half the damage prevented this way, rounded up. Activate this ability only once each turn. diff --git a/forge-gui/res/cardsfolder/s/stunning_reversal.txt b/forge-gui/res/cardsfolder/s/stunning_reversal.txt new file mode 100644 index 00000000000..8b4d5148664 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/stunning_reversal.txt @@ -0,0 +1,12 @@ +Name:Stunning Reversal +ManaCost:3 B +Types:Instant +A:SP$ Effect | Cost$ 3 B | Name$ Stunning Reversal Effect | ReplacementEffects$ LoseReplace | SVars$ ExileEffect,DBSetLife,DrawSeven | SubAbility$ DBExile | SpellDescription$ The next time you would lose the game this turn, instead draw seven cards and your life total becomes 1. Exile CARDNAME. +SVar:LoseReplace:Event$ GameLoss | ActiveZones$ Command | ValidPlayer$ You | ReplaceWith$ DrawSeven | Description$ The next time you would lose the game this turn, instead draw seven cards and your life total becomes 1. +SVar:DrawSeven:DB$ Draw | NumCards$ 7 | SubAbility$ DBSetLife +SVar:DBSetLife:DB$ SetLife | Defined$ You | LifeAmount$ 1 | SubAbility$ ExileEffect +SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile +SVar:DBExile:DB$ ChangeZone | Defined$ Self | Origin$ Stack | Destination$ Exile +SVar:RemAIDeck:True +SVar:RemRandomDeck:True +Oracle:The next time you would lose the game this turn, instead draw seven cards and your life total becomes 1.\nExile Stunning Reversal. diff --git a/forge-gui/res/cardsfolder/s/stunt_double.txt b/forge-gui/res/cardsfolder/s/stunt_double.txt index 482cfa2a404..5736894dc2a 100644 --- a/forge-gui/res/cardsfolder/s/stunt_double.txt +++ b/forge-gui/res/cardsfolder/s/stunt_double.txt @@ -3,8 +3,7 @@ ManaCost:3 U Types:Creature Shapeshifter PT:0/0 K:Flash -K:ETBReplacement:Copy:ChooseCreature:Optional -SVar:ChooseCreature:DB$ ChooseCard | Defined$ You | Amount$ 1 | Choices$ Creature.Other | SubAbility$ DBCopy | RememberChosen$ True | AILogic$ Clone | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of any creature on the battlefield. -SVar:DBCopy:DB$ Clone | Defined$ Remembered +K:ETBReplacement:Copy:DBCopy:Optional +SVar:DBCopy:DB$ Clone | Choices$ Creature.Other | SpellDescription$ You may have CARDNAME enter the battlefield as a copy of any creature on the battlefield. SVar:Picture:http://www.wizards.com/global/images/magic/general/stunt_double.jpg Oracle:Flash\nYou may have Stunt Double enter the battlefield as a copy of any creature on the the battlefield. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/s/sudden_shock.txt b/forge-gui/res/cardsfolder/s/sudden_shock.txt index 8b72ebb195b..d34210505dd 100644 --- a/forge-gui/res/cardsfolder/s/sudden_shock.txt +++ b/forge-gui/res/cardsfolder/s/sudden_shock.txt @@ -2,6 +2,6 @@ Name:Sudden Shock ManaCost:1 R Types:Instant K:Split second -A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/sudden_shock.jpg -Oracle:Split second (As long as this spell is on the stack, players can't cast spells or activate abilities that aren't mana abilities.)\nSudden Shock deals 2 damage to target creature or player. +Oracle:Split second (As long as this spell is on the stack, players can't cast spells or activate abilities that aren't mana abilities.)\nSudden Shock deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/summoners_egg.txt b/forge-gui/res/cardsfolder/s/summoners_egg.txt index df8185e7170..7977f0e3e2d 100644 --- a/forge-gui/res/cardsfolder/s/summoners_egg.txt +++ b/forge-gui/res/cardsfolder/s/summoners_egg.txt @@ -1,6 +1,6 @@ Name:Summoner's Egg ManaCost:4 -Types:Artifact Creature Construct +Types:Artifact Creature Egg PT:0/4 T:Mode$ ChangesZone | Destination$ Battlefield | ValidCard$ Card.Self | OptionalDecider$ You | Execute$ TrigExile | TriggerDescription$ Imprint — When CARDNAME enters the battlefield, you may exile a card from your hand face down. SVar:TrigExile:DB$ ChangeZone | Origin$ Hand | Destination$ Exile | ChangeType$ Card | ChangeNum$ 1 | ExileFaceDown$ True | Imprint$ True diff --git a/forge-gui/res/cardsfolder/s/sun_crowned_hunters.txt b/forge-gui/res/cardsfolder/s/sun_crowned_hunters.txt index 5e8caa4acf1..db5bcb5375c 100644 --- a/forge-gui/res/cardsfolder/s/sun_crowned_hunters.txt +++ b/forge-gui/res/cardsfolder/s/sun_crowned_hunters.txt @@ -2,8 +2,8 @@ Name:Sun-Crowned Hunters ManaCost:4 R R Types:Creature Dinosaur PT:5/4 -T:Mode$ DamageDoneOnce | Execute$ DealDamage | ValidTarget$ Card.Self | TriggerZones$ Battlefield | TriggerDescription$ Enrage — Whenever CARDNAME is dealt damage, it deals 3 damage to target opponent. -SVar:DealDamage:DB$ DealDamage | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | NumDmg$ 3 +T:Mode$ DamageDoneOnce | Execute$ DealDamage | ValidTarget$ Card.Self | TriggerZones$ Battlefield | TriggerDescription$ Enrage — Whenever CARDNAME is dealt damage, it deals 3 damage to target opponent or planeswalker. +SVar:DealDamage:DB$ DealDamage | ValidTgts$ Opponent,Planeswalker | TgtPrompt$ Select target opponent or planeswalker | NumDmg$ 3 SVar:HasCombatEffect:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/sun_crowned_hunters.jpg -Oracle:Enrage — Whenever Sun-Crowned Hunters is dealt damage, it deals 3 damage to target opponent. +Oracle:Enrage — Whenever Sun-Crowned Hunters is dealt damage, it deals 3 damage to target opponent or planeswalker. diff --git a/forge-gui/res/cardsfolder/s/suncleanser.txt b/forge-gui/res/cardsfolder/s/suncleanser.txt new file mode 100644 index 00000000000..77edd05cce7 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/suncleanser.txt @@ -0,0 +1,11 @@ +Name:Suncleanser +ManaCost:1 W +Types:Creature Human Cleric +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigCharm | TriggerDescription$ When CARDNAME enters the battlefield, choose one —\n• Remove all counters from target creature. It can't have counters put on it for as long as CARDNAME remains on the battlefield.\n• Target opponent loses all counters. That player can't get counters for as long as CARDNAME remains on the battlefield. +SVar:TrigCharm:DB$ Charm | Choices$ CreatureDBRemoveCounter,OpponentDBRemoveCounter | CharmNum$ 1 +SVar:CreatureDBRemoveCounter:DB$ RemoveCounter | ValidTgts$ Creature | RememberObjects$ Targeted | TgtPrompt$ Select target creature | CounterType$ All | CounterNum$ All | SubAbility$ DBPumpCreature | SpellDescription$ Remove all counters from target creature. It can't have counters put on it for as long as CARDNAME remains on the battlefield. +SVar:OpponentDBRemoveCounter:DB$ RemoveCounter | ValidTgts$ Opponent | RememberObjects$ Targeted | TgtPrompt$ Select target opponent | CounterType$ All | CounterNum$ All | SubAbility$ DBPumpOpponent | SpellDescription$ Target opponent loses all counters. That player can't get counters for as long as CARDNAME remains on the battlefield. +SVar:DBPumpCreature:DB$ Pump | Defined$ Targeted | KW$ CARDNAME can't have counters put on it. | UntilLoseControlOfHost$ True +SVar:DBPumpOpponent:DB$ Pump | Defined$ Targeted | KW$ PLAYER can't have counters put on him or her. | UntilLoseControlOfHost$ True +Oracle:When Suncleanser enters the battlefield, choose one —\n• Remove all counters from target creature. It can't have counters put on it for as long as Suncleanser remains on the battlefield.\n• Target opponent loses all counters. That player can't get counters for as long as Suncleanser remains on the battlefield. +PT:1/4 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/s/sunfire_balm.txt b/forge-gui/res/cardsfolder/s/sunfire_balm.txt index 17e90ba0f6f..0b4583c9b68 100644 --- a/forge-gui/res/cardsfolder/s/sunfire_balm.txt +++ b/forge-gui/res/cardsfolder/s/sunfire_balm.txt @@ -1,9 +1,9 @@ Name:Sunfire Balm ManaCost:2 W Types:Instant -A:SP$ PreventDamage | Cost$ 2 W | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 4 | SpellDescription$ Prevent the next 4 damage that would be dealt to target creature or player this turn. +A:SP$ PreventDamage | Cost$ 2 W | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 4 | SpellDescription$ Prevent the next 4 damage that would be dealt to any target this turn. K:Cycling:1 W -T:Mode$ Cycled | ValidCard$ Card.Self | Execute$ TrigPrevent | OptionalDecider$ You | TriggerDescription$ When you cycle CARDNAME, you may prevent the next 1 damage that would be dealt to target creature or player this turn. -SVar:TrigPrevent:DB$ PreventDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 1 +T:Mode$ Cycled | ValidCard$ Card.Self | Execute$ TrigPrevent | OptionalDecider$ You | TriggerDescription$ When you cycle CARDNAME, you may prevent the next 1 damage that would be dealt to any target this turn. +SVar:TrigPrevent:DB$ PreventDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/sunfire_balm.jpg -Oracle:Prevent the next 4 damage that would be dealt to target creature or player this turn.\nCycling {1}{W} ({1}{W}, Discard this card: Draw a card.)\nWhen you cycle Sunfire Balm, you may prevent the next 1 damage that would be dealt to target creature or player this turn. +Oracle:Prevent the next 4 damage that would be dealt to any target this turn.\nCycling {1}{W} ({1}{W}, Discard this card: Draw a card.)\nWhen you cycle Sunfire Balm, you may prevent the next 1 damage that would be dealt to target permanent or player this turn. diff --git a/forge-gui/res/cardsfolder/s/sunflare_shaman.txt b/forge-gui/res/cardsfolder/s/sunflare_shaman.txt index 5e245c9c0cb..503479b7a6f 100644 --- a/forge-gui/res/cardsfolder/s/sunflare_shaman.txt +++ b/forge-gui/res/cardsfolder/s/sunflare_shaman.txt @@ -2,9 +2,10 @@ Name:Sunflare Shaman ManaCost:1 R Types:Creature Elemental Shaman PT:2/1 -A:AB$ DealDamage | Cost$ 1 R T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SubAbility$ DBDealDamage | SpellDescription$ CARDNAME deals X damage to target creature or player and X damage to itself, where X is the number of Elemental cards in your graveyard. -SVar:DBDealDamage:DB$ DealDamage | NumDmg$ X | References$ X | Defined$ Self +A:AB$ DealDamage | Cost$ 1 R T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | DamageMap$ True | SubAbility$ DBDealDamage | SpellDescription$ CARDNAME deals X damage to any target and X damage to itself, where X is the number of Elemental cards in your graveyard. +SVar:DBDealDamage:DB$ DealDamage | NumDmg$ X | References$ X | Defined$ Self | SubAbility$ DBDamageResolve +SVar:DBDamageResolve:DB$ DamageResolve SVar:X:Count$TypeInYourYard.Elemental SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/sunflare_shaman.jpg -Oracle:{1}{R}, {T}: Sunflare Shaman deals X damage to target creature or player and X damage to itself, where X is the number of Elemental cards in your graveyard. +Oracle:{1}{R}, {T}: Sunflare Shaman deals X damage to any target and X damage to itself, where X is the number of Elemental cards in your graveyard. diff --git a/forge-gui/res/cardsfolder/s/sunscorched_desert.txt b/forge-gui/res/cardsfolder/s/sunscorched_desert.txt index 63b764cc7d5..11c687b2140 100644 --- a/forge-gui/res/cardsfolder/s/sunscorched_desert.txt +++ b/forge-gui/res/cardsfolder/s/sunscorched_desert.txt @@ -1,8 +1,8 @@ Name:Sunscorched Desert ManaCost:no cost Types:Land Desert -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 1 damage to target player. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 1 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 1 damage to target player or planeswalker. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}. SVar:Picture:http://www.wizards.com/global/images/magic/general/sunscorched_desert.jpg -Oracle:When Sunscorched Desert enters the battlefield, it deals 1 damage to target player.\n{T}: Add {C}. \ No newline at end of file +Oracle:When Sunscorched Desert enters the battlefield, it deals 1 damage to target player or planeswalker.\n{T}: Add {C}. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/s/supreme_phantom.txt b/forge-gui/res/cardsfolder/s/supreme_phantom.txt new file mode 100644 index 00000000000..6fa8a8c200e --- /dev/null +++ b/forge-gui/res/cardsfolder/s/supreme_phantom.txt @@ -0,0 +1,8 @@ +Name:Supreme Phantom +ManaCost:1 U +Types:Creature Spirit +K:Flying +S:Mode$ Continuous | Affected$ Spirit.Other+YouCtrl | AddPower$ 1 | AddToughness$ 1 | Description$ Other Spirits you control get +1/+1. +DeckHints:Type$Spirit +Oracle:Flying\nOther Spirits you control get +1/+1. +PT:1/3 diff --git a/forge-gui/res/cardsfolder/s/suqata_firewalker.txt b/forge-gui/res/cardsfolder/s/suqata_firewalker.txt index 705a9bdb547..a15ca81da84 100644 --- a/forge-gui/res/cardsfolder/s/suqata_firewalker.txt +++ b/forge-gui/res/cardsfolder/s/suqata_firewalker.txt @@ -3,6 +3,6 @@ ManaCost:1 U U Types:Creature Human Wizard PT:0/1 S:Mode$ CantTarget | ValidCard$ Card.Self | ValidSource$ Card.Red | Description$ CARDNAME can't be the target of red spells or abilities from red sources. -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/suqata_firewalker.jpg -Oracle:Suq'Ata Firewalker can't be the target of red spells or abilities from red sources.\n{T}: Suq'Ata Firewalker deals 1 damage to target creature or player. +Oracle:Suq'Ata Firewalker can't be the target of red spells or abilities from red sources.\n{T}: Suq'Ata Firewalker deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/surestrike_trident.txt b/forge-gui/res/cardsfolder/s/surestrike_trident.txt index f1713f3ddf6..9828210c934 100644 --- a/forge-gui/res/cardsfolder/s/surestrike_trident.txt +++ b/forge-gui/res/cardsfolder/s/surestrike_trident.txt @@ -2,7 +2,7 @@ Name:Surestrike Trident ManaCost:2 Types:Artifact Equipment S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddKeyword$ First Strike | AddAbility$ SurestrikeTridentDmg | AddSVar$ SurestrikeTridentX | Description$ Equipped creature has first strike and "{T}, Unattach CARDNAME: This creature deals damage equal to its power to target player or planeswalker." -SVar:SurestrikeTridentDmg:AB$ DealDamage | Cost$ T Unattach | NumDmg$ SurestrikeTridentX | References$ SurestrikeTridentX | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | SpellDescription$ CARDNAME deals damage equal toits power to target player or planeswalker. +SVar:SurestrikeTridentDmg:AB$ DealDamage | Cost$ T Unattach | NumDmg$ SurestrikeTridentX | References$ SurestrikeTridentX | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | SpellDescription$ CARDNAME deals damage equal to its power to target player or planeswalker. SVar:SurestrikeTridentX:Count$CardPower K:Equip:4 SVar:Picture:http://www.wizards.com/global/images/magic/general/surestrike_trident.jpg diff --git a/forge-gui/res/cardsfolder/s/surge_mare.txt b/forge-gui/res/cardsfolder/s/surge_mare.txt new file mode 100644 index 00000000000..96de15dffe0 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/surge_mare.txt @@ -0,0 +1,11 @@ +Name:Surge Mare +ManaCost:U U +Types:Creature Horse Fish +K:CantBeBlockedBy Creature.Green +T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Opponent | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigDraw | TriggerDescription$ Whenever CARDNAME deals damage to an opponent, you may draw a card. If you do, discard a card. +SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1 | SubAbility$ DBDiscard +SVar:DBDiscard:DB$ Discard | Defined$ You | NumCards$ 1 | Mode$ TgtChoose +A:AB$ Pump | Cost$ 1 U | ValidCard$ Card.Self | NumAtt$ +2 | NumDef$ -2 | SpellDescription$ CARDNAME gets +2/-2 until end of turn. +DeckHas:Ability$Discard +Oracle:Surge Mare can't be blocked by green creatures.\nWhenever Surge Mare deals damage to an opponent, you may draw a card. If you do, discard a card.\n{1}{U}: Surge Mare gets +2/-2 until end of turn. +PT:0/5 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/s/surging_flame.txt b/forge-gui/res/cardsfolder/s/surging_flame.txt index 403f13ad206..d307b686446 100644 --- a/forge-gui/res/cardsfolder/s/surging_flame.txt +++ b/forge-gui/res/cardsfolder/s/surging_flame.txt @@ -1,7 +1,7 @@ Name:Surging Flame ManaCost:1 R Types:Instant -A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. K:Ripple:4 SVar:Picture:http://www.wizards.com/global/images/magic/general/surging_flame.jpg -Oracle:Ripple 4 (When you cast this spell, you may reveal the top four cards of your library. You may cast any revealed cards with the same name as this spell without paying their mana costs. Put the rest on the bottom of your library.)\nSurging Flame deals 2 damage to target creature or player. +Oracle:Ripple 4 (When you cast this spell, you may reveal the top four cards of your library. You may cast any revealed cards with the same name as this spell without paying their mana costs. Put the rest on the bottom of your library.)\nSurging Flame deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/s/suspicious_bookcase.txt b/forge-gui/res/cardsfolder/s/suspicious_bookcase.txt new file mode 100644 index 00000000000..f66779c7f53 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/suspicious_bookcase.txt @@ -0,0 +1,8 @@ +Name:Suspicious Bookcase +ManaCost:2 +Types:Artifact Creature Wall +PT:0/4 +K:Defender +A:AB$ Pump | Cost$ 3 T | ValidTgts$ Creature | KW$ HIDDEN Unblockable | SpellDescription$ Target creature can't be blocked this turn. | TgtPrompt$ Select target creature. +SVar:Picture:http://www.wizards.com/global/images/magic/general/suspicious_bookcase.jpg +Oracle:Defender\n{3}{T}: Target creature can't be blocked this turn. diff --git a/forge-gui/res/cardsfolder/s/swift_maneuver.txt b/forge-gui/res/cardsfolder/s/swift_maneuver.txt index 81bd50ea604..288b47150d1 100644 --- a/forge-gui/res/cardsfolder/s/swift_maneuver.txt +++ b/forge-gui/res/cardsfolder/s/swift_maneuver.txt @@ -1,8 +1,8 @@ Name:Swift Maneuver ManaCost:1 W Types:Instant -A:SP$ PreventDamage | Cost$ 1 W | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 2 | SubAbility$ DelTrigSlowtrip | SpellDescription$ Prevent the next 2 damage that would be dealt to target creature or player this turn. Draw a card at the beginning of the next turn's upkeep. +A:SP$ PreventDamage | Cost$ 1 W | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 2 | SubAbility$ DelTrigSlowtrip | SpellDescription$ Prevent the next 2 damage that would be dealt to any target this turn. Draw a card at the beginning of the next turn's upkeep. SVar:DelTrigSlowtrip:DB$ DelayedTrigger | Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Player | Execute$ DrawSlowtrip | TriggerDescription$ Draw a card. SVar:DrawSlowtrip:DB$Draw | NumCards$ 1 | Defined$ You SVar:Picture:http://www.wizards.com/global/images/magic/general/swift_maneuver.jpg -Oracle:Prevent the next 2 damage that would be dealt to target creature or player this turn.\nDraw a card at the beginning of the next turn's upkeep. +Oracle:Prevent the next 2 damage that would be dealt to any target this turn.\nDraw a card at the beginning of the next turn's upkeep. diff --git a/forge-gui/res/cardsfolder/s/sword_of_the_ages.txt b/forge-gui/res/cardsfolder/s/sword_of_the_ages.txt index 06cf2895624..c70f869073e 100644 --- a/forge-gui/res/cardsfolder/s/sword_of_the_ages.txt +++ b/forge-gui/res/cardsfolder/s/sword_of_the_ages.txt @@ -2,10 +2,10 @@ Name:Sword of the Ages ManaCost:6 Types:Artifact K:CARDNAME enters the battlefield tapped. -A:AB$ DealDamage | Cost$ T Sac<1/CARDNAME> Sac | NumDmg$ Y | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | CostDesc$ Sacrifice Sword of the Ages and any number of creatures you control: | References$ X,Y | SubAbility$ DBExile | SpellDescription$ CARDNAME deals X damage to target creature or player, where X is the total power of the creatures sacrificed this way, then exile CARDNAME and those creature cards. +A:AB$ DealDamage | Cost$ T Sac<1/CARDNAME> Sac | NumDmg$ Y | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | CostDesc$ Sacrifice Sword of the Ages and any number of creatures you control: | References$ X,Y | SubAbility$ DBExile | SpellDescription$ CARDNAME deals X damage to any target, where X is the total power of the creatures sacrificed this way, then exile CARDNAME and those creature cards. SVar:DBExile:DB$ ChangeZone | Defined$ SacrificedCards | Origin$ Graveyard | Destination$ Exile SVar:X:XChoice SVar:Y:Sacrificed$CardPower SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/sword_of_the_ages.jpg -Oracle:Sword of the Ages enters the battlefield tapped.\n{T}, Sacrifice Sword of the Ages and any number of creatures you control: Sword of the Ages deals X damage to target creature or player, where X is the total power of the creatures sacrificed this way, then exile Sword of the Ages and those creature cards. +Oracle:Sword of the Ages enters the battlefield tapped.\n{T}, Sacrifice Sword of the Ages and any number of creatures you control: Sword of the Ages deals X damage to any target, where X is the total power of the creatures sacrificed this way, then exile Sword of the Ages and those creature cards. diff --git a/forge-gui/res/cardsfolder/s/sylvan_might.txt b/forge-gui/res/cardsfolder/s/sylvan_might.txt index a8668d84a56..92e90cc5c98 100644 --- a/forge-gui/res/cardsfolder/s/sylvan_might.txt +++ b/forge-gui/res/cardsfolder/s/sylvan_might.txt @@ -1,7 +1,7 @@ Name:Sylvan Might ManaCost:1 G Types:Instant -K:Flashback 2 G G +K:Flashback:2 G G A:SP$ Pump | Cost$ 1 G | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +2 | NumDef$ +2 | KW$ Trample | SpellDescription$ Target creature gets +2/+2 and gains trample until end of turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/sylvan_might.jpg Oracle:Target creature gets +2/+2 and gains trample until end of turn.\nFlashback {2}{G}{G} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/s/sylvia_brightspear.txt b/forge-gui/res/cardsfolder/s/sylvia_brightspear.txt new file mode 100644 index 00000000000..7039b061e0d --- /dev/null +++ b/forge-gui/res/cardsfolder/s/sylvia_brightspear.txt @@ -0,0 +1,10 @@ +Name:Sylvia Brightspear +ManaCost:2 W +Types:Legendary Creature Human Knight +PT:2/2 +K:Partner:Khorvath Brightflame:Khorvath +K:Double Strike +S:Mode$ Continuous | Affected$ Dragon.YourTeamCtrl | AddKeyword$ Double Strike | Description$ Dragons your team controls have double strike. +DeckHints:Name$Khorvath Brightflame +SVar:Picture:http://www.wizards.com/global/images/magic/general/sylvia_brightspear.jpg +Oracle:Partner with Khorvath Brightflame (When this creature enters the battlefield, target player may put Khorvath into their hand from their library, then shuffle.)\nDouble strike\nDragons your team controls have double strike. diff --git a/forge-gui/res/cardsfolder/t/tainted_well.txt b/forge-gui/res/cardsfolder/t/tainted_well.txt index 0f3278fa234..a7d6b83352f 100644 --- a/forge-gui/res/cardsfolder/t/tainted_well.txt +++ b/forge-gui/res/cardsfolder/t/tainted_well.txt @@ -3,7 +3,7 @@ ManaCost:2 B Types:Enchantment Aura K:Enchant land A:SP$ Attach | Cost$ 2 B | ValidTgts$ Land | AILogic$ ChangeType -S:Mode$ Continuous | Affected$ Card.EnchantedBy | AddType$ Swamp | RemoveSubTypes$ True | RemoveAllAbilities$ True | Description$ Enchanted land is a Swamp. +S:Mode$ Continuous | Affected$ Card.EnchantedBy | AddType$ Swamp | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True | Description$ Enchanted land is a Swamp. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerDescription$ When CARDNAME enters the battlefield, draw a card. SVar:TrigDraw:DB$Draw | Defined$ You | NumCards$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/tainted_well.jpg diff --git a/forge-gui/res/cardsfolder/t/takara.txt b/forge-gui/res/cardsfolder/t/takara.txt index 9879c07cae1..bedf1ee9500 100644 --- a/forge-gui/res/cardsfolder/t/takara.txt +++ b/forge-gui/res/cardsfolder/t/takara.txt @@ -2,7 +2,7 @@ Name:Takara ManaCost:no cost Types:Vanguard HandLifeModifier:+3/-8 -A:AB$ DealDamage | ActivationZone$ Command | Cost$ Sac<1/Creature> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | ActivationZone$ Command | Cost$ Sac<1/Creature> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:RemAIDeck:True SVar:Picture:https://downloads.cardforge.org/images/cards/VAN/Takara.full.jpg -Oracle:Hand +3, life -8\nSacrifice a creature: Takara deals 1 damage to target creature or player. +Oracle:Hand +3, life -8\nSacrifice a creature: Takara deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/t/take_vengeance.txt b/forge-gui/res/cardsfolder/t/take_vengeance.txt new file mode 100644 index 00000000000..db7fbaab85d --- /dev/null +++ b/forge-gui/res/cardsfolder/t/take_vengeance.txt @@ -0,0 +1,5 @@ +Name:Take Vengeance +ManaCost:1 W +Types:Sorcery +A:SP$ Destroy | Cost$ 1 W | ValidTgts$ Creature.tapped | TgtPrompt$ Select target tapped creature | SpellDescription$ Destroy target tapped creature. +Oracle:Destroy target tapped creature. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/t/takeno_samurai_general.txt b/forge-gui/res/cardsfolder/t/takeno_samurai_general.txt index ad7d8ae063d..836119c873e 100644 --- a/forge-gui/res/cardsfolder/t/takeno_samurai_general.txt +++ b/forge-gui/res/cardsfolder/t/takeno_samurai_general.txt @@ -2,7 +2,7 @@ Name:Takeno, Samurai General ManaCost:5 W Types:Legendary Creature Human Samurai PT:3/3 -K:Bushido 2 +K:Bushido:2 S:Mode$ Continuous | Affected$ Creature.Samurai+Other+YouCtrl | AffectedZone$ Battlefield | AddPower$ AffectedX | AddToughness$ AffectedX | Description$ Each other Samurai creature you control gets +1/+1 for each point of bushido it has. SVar:AffectedX:Count$BushidoPoint SVar:PlayMain1:TRUE diff --git a/forge-gui/res/cardsfolder/t/takenos_cavalry.txt b/forge-gui/res/cardsfolder/t/takenos_cavalry.txt index 833d3ca7dac..50eaa8d70d4 100644 --- a/forge-gui/res/cardsfolder/t/takenos_cavalry.txt +++ b/forge-gui/res/cardsfolder/t/takenos_cavalry.txt @@ -2,7 +2,7 @@ Name:Takeno's Cavalry ManaCost:3 W Types:Creature Human Samurai Archer PT:1/1 -K:Bushido 1 +K:Bushido:1 A:AB$ DealDamage | Cost$ T | ValidTgts$ Spirit.attacking,Spirit.blocking | TgtPrompt$ Select target attacking or blocking Spirit | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target attacking or blocking Spirit. SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/takenos_cavalry.jpg diff --git a/forge-gui/res/cardsfolder/t/takklemaggot.txt b/forge-gui/res/cardsfolder/t/takklemaggot.txt index cff83591be1..70529d3ce76 100644 --- a/forge-gui/res/cardsfolder/t/takklemaggot.txt +++ b/forge-gui/res/cardsfolder/t/takklemaggot.txt @@ -10,7 +10,7 @@ SVar:TrigPutCounter:DB$ PutCounter | Defined$ Enchanted | CounterType$ M0M1 | Co T:Mode$ ChangesZone | ValidCard$ Card.AttachedBy | Origin$ Battlefield | Destination$ Graveyard | Execute$ TrigChoose | TriggerDescription$ When enchanted creature dies, that creature's controller chooses a creature that CARDNAME could enchant. If they do, return CARDNAME to the battlefield under your control attached to that creature. If they don't, return CARDNAME to the battlefield under your control as a non-Aura enchantment. It loses "enchant creature" and gains "At the beginning of that player's upkeep, CARDNAME deals 1 damage to them." SVar:TrigChoose:DB$ ChooseCard | Defined$ TriggeredCardController | Choices$ Creature.CanBeEnchantedBy | Mandatory$ True | SubAbility$ DBChangeZone SVar:DBChangeZone:DB$ ChangeZone | Defined$ Self | Origin$ Graveyard | Destination$ Battlefield | GainControl$ True | AttachedTo$ ChosenCard | ConditionDefined$ ChosenCard | ConditionPresent$ Creature | ConditionCompare$ GE1 | SubAbility$ DBAnimate -SVar:DBAnimate:DB$ Animate | Defined$ Self | Types$ Enchantment | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | RemoveKeywords$ Enchant creature | Triggers$ TrigUpkeep | ConditionDefined$ ChosenCard | ConditionPresent$ Creature | ConditionCompare$ EQ0 | SubAbility$ DBPump | Permanent$ True +SVar:DBAnimate:DB$ Animate | Defined$ Self | Types$ Enchantment | RemoveEnchantmentTypes$ True | RemoveKeywords$ Enchant creature | Triggers$ TrigUpkeep | ConditionDefined$ ChosenCard | ConditionPresent$ Creature | ConditionCompare$ EQ0 | SubAbility$ DBPump | Permanent$ True SVar:DBPump:DB$ Pump | RememberObjects$ TriggeredCardController | SubAbility$ DBChangeZone2 | ConditionDefined$ ChosenCard | ConditionPresent$ Creature | ConditionCompare$ EQ0 SVar:DBChangeZone2:DB$ ChangeZone | Defined$ Self | Origin$ Graveyard | Destination$ Battlefield | GainControl$ True | ConditionDefined$ ChosenCard | ConditionPresent$ Creature | ConditionCompare$ EQ0 SVar:TrigUpkeep:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Player.IsRemembered | Execute$ TrigDmg | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of that player's upkeep, CARDNAME deals 1 damage to them. diff --git a/forge-gui/res/cardsfolder/t/talon_of_pain.txt b/forge-gui/res/cardsfolder/t/talon_of_pain.txt index aaabe97bc56..a9bddca85e1 100644 --- a/forge-gui/res/cardsfolder/t/talon_of_pain.txt +++ b/forge-gui/res/cardsfolder/t/talon_of_pain.txt @@ -3,9 +3,9 @@ ManaCost:4 Types:Artifact T:Mode$ DamageDone | ValidSource$ Card.Other+YouCtrl | ValidTarget$ Opponent | TriggerZones$ Battlefield | Execute$ TalonPutCounter | TriggerDescription$ Whenever a source you control other than CARDNAME deals damage to an opponent, put a charge counter on CARDNAME. SVar:TalonPutCounter:DB$ PutCounter | CounterType$ CHARGE | CounterNum$ 1 -A:AB$ DealDamage | Cost$ X T SubCounter | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to target creature or player. +A:AB$ DealDamage | Cost$ X T SubCounter | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to any target. SVar:X:Count$xPaid # The X cost won't be limited by the number of charge counters, but if enough aren't present, the spell will be cancelled. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/talon_of_pain.jpg -Oracle:Whenever a source you control other than Talon of Pain deals damage to an opponent, put a charge counter on Talon of Pain.\n{X}, {T}, Remove X charge counters from Talon of Pain: Talon of Pain deals X damage to target creature or player. +Oracle:Whenever a source you control other than Talon of Pain deals damage to an opponent, put a charge counter on Talon of Pain.\n{X}, {T}, Remove X charge counters from Talon of Pain: Talon of Pain deals X damage to any target. diff --git a/forge-gui/res/cardsfolder/t/talons_of_wildwood.txt b/forge-gui/res/cardsfolder/t/talons_of_wildwood.txt new file mode 100644 index 00000000000..30b2374ba04 --- /dev/null +++ b/forge-gui/res/cardsfolder/t/talons_of_wildwood.txt @@ -0,0 +1,9 @@ +Name:Talons of Wildwood +ManaCost:1 G +Types:Enchantment Aura +K:Enchant creature +A:SP$ Attach | Cost$ 1 G | ValidTgts$ Creature | AILogic$ Pump +S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 1 | AddToughness$ 1 | AddKeyword$ Trample | Description$ Enchanted creature gets +1/+1 and has trample. +A:AB$ ChangeZone | Cost$ 2 G | Origin$ Graveyard | Destination$ Hand | ActivationZone$ Graveyard | SpellDescription$ Return CARDNAME from your graveyard to your hand. +SVar:DiscardMe:1 +Oracle:Enchant creature\nEnchanted creature gets +1/+1 and has trample. (It can deal excess combat damage to the player or planeswalker it's attacking.)\n{2}{G}: Return Talons of Wildwood from your graveyard to your hand. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/t/tar_pitcher.txt b/forge-gui/res/cardsfolder/t/tar_pitcher.txt index 459932e20bf..445997f8457 100644 --- a/forge-gui/res/cardsfolder/t/tar_pitcher.txt +++ b/forge-gui/res/cardsfolder/t/tar_pitcher.txt @@ -2,8 +2,8 @@ Name:Tar Pitcher ManaCost:3 R Types:Creature Goblin Shaman PT:2/2 -A:AB$ DealDamage | Cost$ T Sac<1/Goblin> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:AB$ DealDamage | Cost$ T Sac<1/Goblin> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:AIPreference:SacCost$Goblin.token,Goblin.Other SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/tar_pitcher.jpg -Oracle:{T}, Sacrifice a Goblin: Tar Pitcher deals 2 damage to target creature or player. +Oracle:{T}, Sacrifice a Goblin: Tar Pitcher deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/t/tarfire.txt b/forge-gui/res/cardsfolder/t/tarfire.txt index 5b1541a8829..3f05012d5f3 100644 --- a/forge-gui/res/cardsfolder/t/tarfire.txt +++ b/forge-gui/res/cardsfolder/t/tarfire.txt @@ -1,6 +1,6 @@ Name:Tarfire ManaCost:R Types:Tribal Instant Goblin -A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:SP$ DealDamage | Cost$ R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/tarfire.jpg -Oracle:Tarfire deals 2 damage to target creature or player. +Oracle:Tarfire deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/t/taste_of_blood.txt b/forge-gui/res/cardsfolder/t/taste_of_blood.txt index e3c28202b42..57a6d54aff9 100644 --- a/forge-gui/res/cardsfolder/t/taste_of_blood.txt +++ b/forge-gui/res/cardsfolder/t/taste_of_blood.txt @@ -1,7 +1,7 @@ Name:Taste of Blood ManaCost:B Types:Sorcery -A:SP$ DealDamage | Cost$ B | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 1 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 1 damage to target player and you gain 1 life. +A:SP$ DealDamage | Cost$ B | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 1 damage to target player or planeswalker and you gain 1 life. SVar:DBGainLife:DB$GainLife | Defined$ You | LifeAmount$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/taste_of_blood.jpg -Oracle:Taste of Blood deals 1 damage to target player and you gain 1 life. +Oracle:Taste of Blood deals 1 damage to target player or planeswalker and you gain 1 life. diff --git a/forge-gui/res/cardsfolder/t/tawnos_urzas_apprentice.txt b/forge-gui/res/cardsfolder/t/tawnos_urzas_apprentice.txt new file mode 100644 index 00000000000..9ffb43649b1 --- /dev/null +++ b/forge-gui/res/cardsfolder/t/tawnos_urzas_apprentice.txt @@ -0,0 +1,7 @@ +Name:Tawnos, Urza's Apprentice +ManaCost:U R +Types:Legendary Creature Human Artificer +PT:1/3 +K:Haste +A:AB$ CopySpellAbility | Cost$ U R T | TargetType$ Activated.YouCtrl,Triggered.YouCtrl | ValidTgts$ Artifact | SpellDescription$ Copy target activated or triggered ability you control from an artifact source. You may choose new targets for the copy. (Mana abilities can’t be targeted.) +Oracle:Haste\n{U}{R}, {T}: Copy target activated or triggered ability you control from an artifact source. You may choose new targets for the copy. (Mana abilities can’t be targeted.) diff --git a/forge-gui/res/cardsfolder/t/teekas_dragon.txt b/forge-gui/res/cardsfolder/t/teekas_dragon.txt index 24eda7760fb..6ded565be38 100644 --- a/forge-gui/res/cardsfolder/t/teekas_dragon.txt +++ b/forge-gui/res/cardsfolder/t/teekas_dragon.txt @@ -4,6 +4,6 @@ Types:Artifact Creature Dragon PT:5/5 K:Flying K:Trample -K:Rampage 4 +K:Rampage:4 SVar:Picture:http://www.wizards.com/global/images/magic/general/teekas_dragon.jpg Oracle:Flying, trample, rampage 4 (Whenever this creature becomes blocked, it gets +4/+4 until end of turn for each creature blocking it beyond the first.) diff --git a/forge-gui/res/cardsfolder/t/telimtors_darts.txt b/forge-gui/res/cardsfolder/t/telimtors_darts.txt index 01fd513d48e..f512f11ae11 100644 --- a/forge-gui/res/cardsfolder/t/telimtors_darts.txt +++ b/forge-gui/res/cardsfolder/t/telimtors_darts.txt @@ -1,6 +1,6 @@ Name:Telim'Tor's Darts ManaCost:2 Types:Artifact -A:AB$ DealDamage | Cost$ 2 T | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target player. +A:AB$ DealDamage | Cost$ 2 T | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target player or planeswalker. SVar:Picture:http://www.wizards.com/global/images/magic/general/telimtors_darts.jpg -Oracle:{2}, {T}: Telim'Tor's Darts deals 1 damage to target player. +Oracle:{2}, {T}: Telim'Tor's Darts deals 1 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/t/tempting_licid.txt b/forge-gui/res/cardsfolder/t/tempting_licid.txt index 4791c1189d1..c989133f14f 100644 --- a/forge-gui/res/cardsfolder/t/tempting_licid.txt +++ b/forge-gui/res/cardsfolder/t/tempting_licid.txt @@ -2,7 +2,7 @@ Name:Tempting Licid ManaCost:2 G Types:Creature Licid PT:2/2 -A:AB$ Animate | Cost$ G T | Defined$ Self | RemoveThisAbility$ True | Permanent$ True | RevertCost$ G | Keywords$ Enchant creature | Abilities$ SPAttach | Types$ Enchantment,Aura | RemoveCardTypes$ True | RemoveSubTypes$ True | SubAbility$ DBAttach | SpellDescription$ CARDNAME loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {G} to end this effect. +A:AB$ Animate | Cost$ G T | Defined$ Self | RemoveThisAbility$ True | Permanent$ True | RevertCost$ G | Keywords$ Enchant creature | Abilities$ SPAttach | Types$ Enchantment,Aura | RemoveCardTypes$ True | RemoveEnchantmentTypes$ True | SubAbility$ DBAttach | SpellDescription$ CARDNAME loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {G} to end this effect. SVar:DBAttach:DB$ Attach | ValidTgts$ Creature | AILogic$ Pump SVar:SPAttach:SP$ Attach | Cost$ 0 | ValidTgts$ Creature S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddHiddenKeyword$ All creatures able to block CARDNAME do so. | Description$ All creatures able to block enchanted creature do so. diff --git a/forge-gui/res/cardsfolder/t/temur_war_shaman.txt b/forge-gui/res/cardsfolder/t/temur_war_shaman.txt index 374ad791f2e..63beaae6536 100644 --- a/forge-gui/res/cardsfolder/t/temur_war_shaman.txt +++ b/forge-gui/res/cardsfolder/t/temur_war_shaman.txt @@ -5,6 +5,6 @@ PT:4/5 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigManifest | TriggerDescription$ When CARDNAME enters the battlefield, manifest the top card of your library. (Put that card onto the battlefield face down as a 2/2 creature. You may turn it face up at any time for its mana cost if it is a creature card.) SVar:TrigManifest:DB$ Manifest | Amount$ 1 | Defined$ TopOfLibrary T:Mode$ TurnFaceUp | ValidCard$ Permanent.Creature+YouCtrl | Execute$ TrigFight | TriggerZones$ Battlefield | OptionalDecider$ You | TriggerDescription$ Whenever a permanent you control is turned face up, if it is a creature, you may have it fight target creature you don't control. -SVar:TrigFight:DB$ Fight | Defined$ TriggeredCard | ValidTgts$ Creature.YouDontCtrl | TgtPrompt$ Select target creature you don't control | ConditionDefined$ TriggeredCard | ConditionPresent$ Creature +SVar:TrigFight:DB$ Fight | Defined$ TriggeredCardLKICopy | ValidTgts$ Creature.YouDontCtrl | TgtPrompt$ Select target creature you don't control SVar:Picture:http://www.wizards.com/global/images/magic/general/temur_war_shaman.jpg Oracle:When Temur War Shaman enters the battlefield, manifest the top card of your library. (Put that card onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.)\nWhenever a permanent you control is turned face up, if it's a creature, you may have it fight target creature you don't control. diff --git a/forge-gui/res/cardsfolder/t/tephraderm.txt b/forge-gui/res/cardsfolder/t/tephraderm.txt index 4390bd657b0..2af3f9f1a10 100644 --- a/forge-gui/res/cardsfolder/t/tephraderm.txt +++ b/forge-gui/res/cardsfolder/t/tephraderm.txt @@ -4,7 +4,7 @@ Types:Creature Beast PT:4/5 T:Mode$ DamageDone | ValidSource$ Creature | ValidTarget$ Card.Self | Execute$ TrigDealDamage1 | TriggerDescription$ Whenever a creature deals damage to CARDNAME, CARDNAME deals that much damage to that creature. T:Mode$ DamageDone | ValidSource$ Instant,Sorcery | ValidTarget$ Card.Self | Execute$ TrigDealDamage2 | TriggerDescription$ Whenever a spell deals damage to CARDNAME, CARDNAME deals that much damage to that spell's controller. -SVar:TrigDealDamage1:DB$ DealDamage | Defined$ TriggeredSource | NumDmg$ X | References$ X +SVar:TrigDealDamage1:DB$ DealDamage | Defined$ TriggeredSourceLKICopy | NumDmg$ X | References$ X SVar:TrigDealDamage2:DB$ DealDamage | Defined$ TriggeredSourceController | NumDmg$ X | References$ X SVar:X:TriggerCount$DamageAmount SVar:Picture:http://www.wizards.com/global/images/magic/general/tephraderm.jpg diff --git a/forge-gui/res/cardsfolder/t/terraformer.txt b/forge-gui/res/cardsfolder/t/terraformer.txt index af5a9886ad9..486a1a9225d 100644 --- a/forge-gui/res/cardsfolder/t/terraformer.txt +++ b/forge-gui/res/cardsfolder/t/terraformer.txt @@ -3,7 +3,7 @@ ManaCost:2 U Types:Creature Human Wizard PT:2/2 A:AB$ ChooseType | Cost$ 1 | Type$ Basic Land | SubAbility$ DBAnimate | SpellDescription$ Choose a basic land type. Each land you control becomes that type until end of turn. -SVar:DBAnimate:DB$ AnimateAll | ValidCards$ Land.YouCtrl | Types$ ChosenType | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | RemoveAllAbilities$ True +SVar:DBAnimate:DB$ AnimateAll | ValidCards$ Land.YouCtrl | Types$ ChosenType | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/terraformer.jpg Oracle:{1}: Choose a basic land type. Each land you control becomes that type until end of turn. diff --git a/forge-gui/res/cardsfolder/t/territorial_allosaurus.txt b/forge-gui/res/cardsfolder/t/territorial_allosaurus.txt index 2e105dedc07..7107c646f8e 100644 --- a/forge-gui/res/cardsfolder/t/territorial_allosaurus.txt +++ b/forge-gui/res/cardsfolder/t/territorial_allosaurus.txt @@ -4,6 +4,6 @@ Types:Creature Dinosaur PT:5/5 K:Kicker:2 G T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self+kicked | Execute$ TrigKicker | TriggerDescription$ When CARDNAME enters the battlefield, if it was kicked, it fights another target creature. -SVar:TrigKicker:DB$ Fight | Defined$ TriggeredCard | ValidTgts$ Creature.Other | TgtPrompt$ Choose another target creature +SVar:TrigKicker:DB$ Fight | Defined$ TriggeredCardLKICopy | ValidTgts$ Creature.Other | TgtPrompt$ Choose another target creature SVar:PlayMain1:TRUE -Oracle:Kicker {2}{G} (You may pay an additional {2}{G} as you cast this spell.)\nWhen Territorial Allosaurus enters the battlefield, if it was kicked, it fights another target creature. \ No newline at end of file +Oracle:Kicker {2}{G} (You may pay an additional {2}{G} as you cast this spell.)\nWhen Territorial Allosaurus enters the battlefield, if it was kicked, it fights another target creature. diff --git a/forge-gui/res/cardsfolder/t/tezzeret_artifice_master.txt b/forge-gui/res/cardsfolder/t/tezzeret_artifice_master.txt new file mode 100644 index 00000000000..ea22b9b1bb4 --- /dev/null +++ b/forge-gui/res/cardsfolder/t/tezzeret_artifice_master.txt @@ -0,0 +1,12 @@ +Name:Tezzeret, Artifice Master +ManaCost:3 U U +Types:Legendary Planeswalker Tezzeret +A:AB$ Token | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | TokenOwner$ You | TokenAmount$ 1 | TokenPower$ 1 | TokenToughness$ 1 | TokenColors$ Colorless | TokenName$ Thopter | TokenTypes$ Thopter,Artifact,Creature | TokenKeywords$ Flying | TokenImage$ c 1 1 thopter m19 | SpellDescription$ Create a 1/1 colorless Thopter artifact creature token with flying. +A:AB$ Draw | Cost$ AddCounter<0/LOYALTY> | Planeswalker$ True | Defined$ You | NumCards$ X | References$ X | SpellDescription$ Draw a card. If you control three or more artifacts, draw two cards instead. +SVar:X:Count$Metalcraft.2.1 +A:AB$ Effect | Cost$ SubCounter<9/LOYALTY> | Planeswalker$ True | Ultimate$ True | Name$ Emblem - Tezzeret, Artifice Master | Image$ emblem_tezzeret_artifice_master | Duration$ Permanent | Triggers$ EffT | SpellDescription$ You get an emblem with "At the beginning of your end step, search your library for a permanent card, put it onto the battlefield, then shuffle your library." +SVar:EffT:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | Execute$ EffTrigTutor | TriggerDescription$ At the beginning of your end step, search your library for a permanent card, put it onto the battlefield, then shuffle your library. +SVar:EffTrigTutor:DB$ ChangeZone | Origin$ Library | Destination$ Battlefield | ChangeType$ Card.Permanent | ChangeNum$ 1 +DeckHas:Ability$Token +Oracle:[+1]: Create a 1/1 colorless Thopter artifact creature token with flying.\n[0]: Draw a card. If you control three or more artifacts, draw two cards instead.\n[-9]: You get an emblem with "At the beginning of your end step, search your library for a permanent card, put it onto the battlefield, then shuffle your library." +Loyalty:5 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/t/tezzeret_cruel_machinist.txt b/forge-gui/res/cardsfolder/t/tezzeret_cruel_machinist.txt new file mode 100644 index 00000000000..c24d77aad20 --- /dev/null +++ b/forge-gui/res/cardsfolder/t/tezzeret_cruel_machinist.txt @@ -0,0 +1,9 @@ +Name:Tezzeret, Cruel Machinist +ManaCost:4 U U +Loyalty:4 +Types:Legendary Planeswalker Tezzeret +A:AB$ Draw | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | NumCards$ 1 | Defined$ You | SpellDescription$ Draw a card. +A:AB$ Animate | Cost$ AddCounter<0/LOYALTY> | ValidTgts$ Artifact.YouCtrl | TgtPrompt$ Select target artifact you control | Power$ 5 | Toughness$ 5 | Types$ Artifact | SpellDescription$ Until your next turn, target artifact you control becomes a 5/5 creature in addition to its other types. +A:AB$ ChangeZone | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True | Origin$ Hand | Destination$ Battlefield | ChangeType$ Card | ChangeNum$ X | References$ X | FaceDown$ True | FaceDownPower$ 5 | FaceDownToughness$ 5 | FaceDownAddType$ Artifact,Creature | StackDescription$ SpellDescription | SpellDescription$ Put any number of cards from your hand onto the battlefield face down. They're 5/5 artifact creatures. +SVar:X:Count$InYourHand +Oracle:[+1]: Draw a card.\n[0]: Until your next turn, target artifact you control becomes a 5/5 creature in addition to its other types.\n[-7]: Put any number of cards from your hand onto the battlefield face down. They're 5/5 artifact creatures. diff --git a/forge-gui/res/cardsfolder/t/tezzerets_gatebreaker.txt b/forge-gui/res/cardsfolder/t/tezzerets_gatebreaker.txt new file mode 100644 index 00000000000..e8d42e9975a --- /dev/null +++ b/forge-gui/res/cardsfolder/t/tezzerets_gatebreaker.txt @@ -0,0 +1,9 @@ +Name:Tezzeret's Gatebreaker +ManaCost:4 +Types:Artifact +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDig | TriggerDescription$ When CARDNAME enters the battlefield, look at the top five cards of your library. You may reveal a blue or artifact card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. +SVar:TrigDig:DB$ Dig | DigNum$ 5 | ChangeNum$ 1 | Optional$ True | ForceRevealToController$ True | ChangeValid$ Card.Blue,Card.Artifact | RestRandomOrder$ True +A:AB$ Effect | Cost$ 5 U T Sac<1/CARDNAME> | Name$ CARDNAME Effect | StaticAbilities$ KWPump | SpellDescription$ Creatures you control can't be blocked this turn. +SVar:KWPump:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Creature.YouCtrl | AddHiddenKeyword$ Unblockable | Description$ Creatures you control can't be blocked this turn. +DeckHints:Color$Blue +Oracle:When Tezzeret's Gatebreaker enters the battlefield, look at the top five cards of your library. You may reveal a blue or artifact card from among them and put it into your hand. Put the rest on the bottom of your library in a random order.\n{5}{U}, {T}, Sacrifice Tezzeret's Gatebreaker: Creatures you control can't be blocked this turn. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/t/tezzerets_strider.txt b/forge-gui/res/cardsfolder/t/tezzerets_strider.txt new file mode 100644 index 00000000000..4749d526e3f --- /dev/null +++ b/forge-gui/res/cardsfolder/t/tezzerets_strider.txt @@ -0,0 +1,8 @@ +Name:Tezzeret's Strider +ManaCost:3 +Types:Artifact Creature Golem +PT:3/1 +S:Mode$ Continuous | Affected$ Card.Self | AddKeyword$ Menace | IsPresent$ Planeswalker.Tezzeret+YouCtrl | Description$ As long as you control a Tezzeret planeswalker, CARDNAME has menace. +SVar:BuffedBy:Tezzeret +DeckNeeds:Type$Tezzeret +Oracle:As long as you control a Tezzeret planeswalker, Tezzeret’s Strider has menace. (It can’t be blocked except by two or more creatures.) diff --git a/forge-gui/res/cardsfolder/t/thantis_the_warweaver.txt b/forge-gui/res/cardsfolder/t/thantis_the_warweaver.txt new file mode 100644 index 00000000000..1f9141d2e59 --- /dev/null +++ b/forge-gui/res/cardsfolder/t/thantis_the_warweaver.txt @@ -0,0 +1,10 @@ +Name:Thantis, the Warweaver +ManaCost:3 B R G +Types:Legendary Creature Spider +PT:5/5 +K:Vigilance +K:Reach +S:Mode$ Continuous | Affected$ Creature | AddHiddenKeyword$ CARDNAME attacks each combat if able. | Description$ All creatures attack each combat if able. +T:Mode$ Attacks | ValidCard$ Creature | Attacked$ You,Planeswalker.YouCtrl | TriggerZones$ Battlefield | Execute$ DragonWake | TriggerDescription$ Whenever a creature attacks you or a planeswalker you control, put a +1/+1 counter on CARDNAME. +SVar:DragonWake:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 +Oracle:Vigilance, reach\nAll creatures attack each combat if able.\nWhenever a creature attacks you or a planeswalker you control, put a +1/+1 counter on Thantis, the Warweaver. diff --git a/forge-gui/res/cardsfolder/t/the_flame_of_keld.txt b/forge-gui/res/cardsfolder/t/the_flame_of_keld.txt index bf2c79f4146..020ffdfc947 100644 --- a/forge-gui/res/cardsfolder/t/the_flame_of_keld.txt +++ b/forge-gui/res/cardsfolder/t/the_flame_of_keld.txt @@ -9,5 +9,4 @@ SVar:FlameOfKeldDamageEvent:Event$ DamageDone | ActiveZones$ Command | ValidSour SVar:DmgPlus2:DB$ ReplaceEffect | VarName$ DamageAmount | VarValue$ X | References$ X SVar:X:ReplaceCount$DamageAmount/Plus.2 SVar:RemRandomDeck:True -SVar:RemAIDeck:True Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI — Discard your hand.\nII — Draw two cards.\nIII — If a red source you control would deal damage to a permanent or player this turn, it deals that much damage plus 2 to that permanent or player instead. diff --git a/forge-gui/res/cardsfolder/t/the_mirari_conjecture.txt b/forge-gui/res/cardsfolder/t/the_mirari_conjecture.txt index 5b1892fad06..692e5a00d4e 100644 --- a/forge-gui/res/cardsfolder/t/the_mirari_conjecture.txt +++ b/forge-gui/res/cardsfolder/t/the_mirari_conjecture.txt @@ -4,7 +4,7 @@ Types:Enchantment Saga K:Saga:3:DBChangeZoneI,DBChangeZoneII,DBEffect SVar:DBChangeZoneI:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Instant.YouCtrl | SpellDescription$ Return target instant card from your graveyard to your hand. SVar:DBChangeZoneII:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Sorcery.YouCtrl | SpellDescription$ Return target sorcery card from your graveyard to your hand. -SVar:DBEffect:DB$ Effect | Name$ The Mirari Conjecture Effect | Triggers$ InstantSorceryCast | SVars$ TrigCopySpell | SpellDescription$ Whenever you cast a creature spell this turn, draw a card. +SVar:DBEffect:DB$ Effect | Name$ The Mirari Conjecture Effect | Triggers$ InstantSorceryCast | SVars$ TrigCopySpell | SpellDescription$ Until end of turn, whenever you cast an instant or sorcery spell, copy it. You may choose new targets for the copy. SVar:InstantSorceryCast:Mode$ SpellCast | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ You | Execute$ TrigCopySpell | TriggerZones$ Command | TriggerDescription$ Until end of turn, whenever you cast an instant or sorcery spell, copy it. You may choose new targets for the copy. SVar:TrigCopySpell:DB$ CopySpellAbility | Defined$ TriggeredSpellAbility SVar:NeedsToPlay:Instant.YouCtrl+inZoneGraveyard,Sorcery.YouCtrl+inZoneGraveyard diff --git a/forge-gui/res/cardsfolder/t/thelonite_monk.txt b/forge-gui/res/cardsfolder/t/thelonite_monk.txt index c17d9afed8c..11a2e316de5 100644 --- a/forge-gui/res/cardsfolder/t/thelonite_monk.txt +++ b/forge-gui/res/cardsfolder/t/thelonite_monk.txt @@ -2,7 +2,7 @@ Name:Thelonite Monk ManaCost:2 G G Types:Creature Insect Monk Cleric PT:1/2 -A:AB$ Animate | Cost$ T Sac<1/Creature.Green/green creature> | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ Forest | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | RemoveAllAbilities$ True | Permanent$ True | SpellDescription$ Target land becomes a Forest. (This effect lasts indefinitely.) +A:AB$ Animate | Cost$ T Sac<1/Creature.Green/green creature> | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ Forest | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True | Permanent$ True | SpellDescription$ Target land becomes a Forest. (This effect lasts indefinitely.) SVar:AIPreference:SacCost$Creature.Green+token SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/thelonite_monk.jpg diff --git a/forge-gui/res/cardsfolder/t/thieves_fortune.txt b/forge-gui/res/cardsfolder/t/thieves_fortune.txt index a06798986b5..0355d6548b9 100644 --- a/forge-gui/res/cardsfolder/t/thieves_fortune.txt +++ b/forge-gui/res/cardsfolder/t/thieves_fortune.txt @@ -1,8 +1,9 @@ Name:Thieves' Fortune ManaCost:2 U Types:Tribal Instant Rogue -A:SP$ Dig | Cost$ U | Activation$ Prowl | DigNum$ 4 | ChangeNum$ 1 | PrecostDesc$ Prowl {U} | SpellDescription$ (You may cast this for its prowl cost if you dealt combat damage to a player this turn with a Rogue.) +K:Prowl:U A:SP$ Dig | Cost$ 2 U | DigNum$ 4 | ChangeNum$ 1 | SpellDescription$ Look at the top four cards of your library. Put one of them into your hand and the rest on the bottom of your library in any order. SVar:RemAIDeck:True +DeckNeeds:Type$Rogue SVar:Picture:http://www.wizards.com/global/images/magic/general/thieves_fortune.jpg -Oracle:Prowl {U} (You may cast this for its prowl cost if you dealt combat damage to a player this turn with a Rogue.)\nLook at the top four cards of your library. Put one of them into your hand and the rest on the bottom of your library in any order. \ No newline at end of file +Oracle:Prowl {U} (You may cast this for its prowl cost if you dealt combat damage to a player this turn with a Rogue.)\nLook at the top four cards of your library. Put one of them into your hand and the rest on the bottom of your library in any order. diff --git a/forge-gui/res/cardsfolder/t/think_twice.txt b/forge-gui/res/cardsfolder/t/think_twice.txt index dd611bfe0b7..e6102126e34 100644 --- a/forge-gui/res/cardsfolder/t/think_twice.txt +++ b/forge-gui/res/cardsfolder/t/think_twice.txt @@ -1,7 +1,7 @@ Name:Think Twice ManaCost:1 U Types:Instant -K:Flashback 2 U +K:Flashback:2 U A:SP$ Draw | Cost$ 1 U | NumCards$ 1 | SpellDescription$ Draw a card. SVar:Picture:http://www.wizards.com/global/images/magic/general/think_twice.jpg Oracle:Draw a card.\nFlashback {2}{U} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/t/thorn_lieutenant.txt b/forge-gui/res/cardsfolder/t/thorn_lieutenant.txt new file mode 100644 index 00000000000..c8778761d09 --- /dev/null +++ b/forge-gui/res/cardsfolder/t/thorn_lieutenant.txt @@ -0,0 +1,9 @@ +Name:Thorn Lieutenant +ManaCost:1 G +Types:Creature Elf Warrior +T:Mode$ BecomesTarget | ValidTarget$ Card.Self | ValidSource$ Spell.OppCtrl,Activated.OppCtrl,Triggered.OppCtrl | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ When CARDNAME becomes the target of a spell or ability an opponent controls, create a 1/1 green Elf Warrior creature token. +SVar:TrigToken:DB$ Token | TokenOwner$ You | TokenAmount$ 1 | TokenToughness$ 1 | TokenPower$ 1 | TokenColors$ Green | TokenName$ Elf Warrior | TokenTypes$ Elf,Warrior,Creature | TokenImage$ g 1 1 elf warrior m19 +A:AB$ Pump | Cost$ 5 G | NumAtt$ +4 | NumDef$ +4 | SpellDescription$ CARDNAME gets +4/+4 until end of turn. +DeckHas:Ability$Token +Oracle:Whenever Thorn Lieutenant becomes the target of a spell or ability an opponent controls, create a 1/1 green Elf Warrior creature token.\n{5}{G}: Thorn Lieutenant gets +4/+4 until end of turn. +PT:2/3 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/t/thorn_thallid.txt b/forge-gui/res/cardsfolder/t/thorn_thallid.txt index c79fd5d606a..35c5fd290c9 100644 --- a/forge-gui/res/cardsfolder/t/thorn_thallid.txt +++ b/forge-gui/res/cardsfolder/t/thorn_thallid.txt @@ -4,6 +4,6 @@ Types:Creature Fungus PT:2/2 T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of your upkeep, put a spore counter on CARDNAME. SVar:TrigPutCounter:DB$PutCounter | Defined$ Self | CounterType$ SPORE | CounterNum$ 1 | SpellDescription$ Put a spore counter on CARDNAME. -A:AB$ DealDamage | Cost$ SubCounter<3/SPORE> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ SubCounter<3/SPORE> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/thorn_thallid.jpg -Oracle:At the beginning of your upkeep, put a spore counter on Thorn Thallid.\nRemove three spore counters from Thorn Thallid: Thorn Thallid deals 1 damage to target creature or player. +Oracle:At the beginning of your upkeep, put a spore counter on Thorn Thallid.\nRemove three spore counters from Thorn Thallid: Thorn Thallid deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/t/thorncaster_sliver.txt b/forge-gui/res/cardsfolder/t/thorncaster_sliver.txt index 128037db6cf..3bc8eb01037 100644 --- a/forge-gui/res/cardsfolder/t/thorncaster_sliver.txt +++ b/forge-gui/res/cardsfolder/t/thorncaster_sliver.txt @@ -2,9 +2,9 @@ Name:Thorncaster Sliver ManaCost:4 R Types:Creature Sliver PT:2/2 -S:Mode$ Continuous | Affected$ Creature.Sliver+YouCtrl | AddTrigger$ SliverThornAttack | AddSVar$ ThorncasterSliverDamage & HasAttackEffect | Description$ Sliver creatures you control have "Whenever this creature attacks, it deals 1 damage to target creature or player." -SVar:SliverThornAttack:Mode$ Attacks | ValidCard$ Card.Self | Execute$ ThorncasterSliverDamage | TriggerDescription$ Whenever this creature attacks, it deals 1 damage to target creature or player. -SVar:ThorncasterSliverDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to damage | NumDmg$ 1 +S:Mode$ Continuous | Affected$ Creature.Sliver+YouCtrl | AddTrigger$ SliverThornAttack | AddSVar$ ThorncasterSliverDamage & HasAttackEffect | Description$ Sliver creatures you control have "Whenever this creature attacks, it deals 1 damage to any target." +SVar:SliverThornAttack:Mode$ Attacks | ValidCard$ Card.Self | Execute$ ThorncasterSliverDamage | TriggerDescription$ Whenever this creature attacks, it deals 1 damage to any target. +SVar:ThorncasterSliverDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to damage | NumDmg$ 1 SVar:HasAttackEffect:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/thorncaster_sliver.jpg -Oracle:Sliver creatures you control have "Whenever this creature attacks, it deals 1 damage to target creature or player." +Oracle:Sliver creatures you control have "Whenever this creature attacks, it deals 1 damage to any target." diff --git a/forge-gui/res/cardsfolder/t/thornscape_battlemage.txt b/forge-gui/res/cardsfolder/t/thornscape_battlemage.txt index 7b23078c541..fd397abc468 100644 --- a/forge-gui/res/cardsfolder/t/thornscape_battlemage.txt +++ b/forge-gui/res/cardsfolder/t/thornscape_battlemage.txt @@ -3,11 +3,11 @@ ManaCost:2 G Types:Creature Elf Wizard PT:2/2 K:Kicker:R:W -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self+kicked 1 | Execute$ TrigKicker | TriggerDescription$ When CARDNAME enters the battlefield, if it was kicked with its {R} kicker, it deals 2 damage to target creature or player. -SVar:TrigKicker:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self+kicked 1 | Execute$ TrigKicker | TriggerDescription$ When CARDNAME enters the battlefield, if it was kicked with its {R} kicker, it deals 2 damage to any target. +SVar:TrigKicker:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self+kicked 2 | Execute$ TrigKicker2 | TriggerDescription$ When CARDNAME enters the battlefield, if it was kicked with its {W} kicker, destroy target artifact. SVar:TrigKicker2:DB$ Destroy | ValidTgts$ Artifact | TgtPrompt$ Select target artifact SVar:PlayMain1:TRUE DeckHints:Color$Red|White SVar:Picture:http://www.wizards.com/global/images/magic/general/thornscape_battlemage.jpg -Oracle:Kicker {R} and/or {W} (You may pay an additional {R} and/or {W} as you cast this spell.)\nWhen Thornscape Battlemage enters the battlefield, if it was kicked with its {R} kicker, it deals 2 damage to target creature or player.\nWhen Thornscape Battlemage enters the battlefield, if it was kicked with its {W} kicker, destroy target artifact. +Oracle:Kicker {R} and/or {W} (You may pay an additional {R} and/or {W} as you cast this spell.)\nWhen Thornscape Battlemage enters the battlefield, if it was kicked with its {R} kicker, it deals 2 damage to any target.\nWhen Thornscape Battlemage enters the battlefield, if it was kicked with its {W} kicker, destroy target artifact. diff --git a/forge-gui/res/cardsfolder/t/thornscape_master.txt b/forge-gui/res/cardsfolder/t/thornscape_master.txt index 3baaad474e3..aebc8727e24 100644 --- a/forge-gui/res/cardsfolder/t/thornscape_master.txt +++ b/forge-gui/res/cardsfolder/t/thornscape_master.txt @@ -2,7 +2,7 @@ Name:Thornscape Master ManaCost:2 G G Types:Creature Human Wizard PT:2/2 -A:AB$ DealDamage | Cost$ R R T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:AB$ DealDamage | Cost$ R R T | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature. A:AB$ Protection | Cost$ W W T | ValidTgts$ Creature | TgtPrompt$ Select target creature | Gains$ Choice | Choices$ AnyColor | SpellDescription$ Target creature gains protection from the color of your choice until end of turn. SVar:RemRandomDeck:True DeckNeeds:Color$Red|White diff --git a/forge-gui/res/cardsfolder/t/thornwind_faeries.txt b/forge-gui/res/cardsfolder/t/thornwind_faeries.txt index 3f8e7e0478c..07ba4014472 100644 --- a/forge-gui/res/cardsfolder/t/thornwind_faeries.txt +++ b/forge-gui/res/cardsfolder/t/thornwind_faeries.txt @@ -3,7 +3,7 @@ ManaCost:1 U U Types:Creature Faerie PT:1/1 K:Flying -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:NonCombatPriority:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/thornwind_faeries.jpg -Oracle:Flying\n{T}: Thornwind Faeries deals 1 damage to target creature or player. +Oracle:Flying\n{T}: Thornwind Faeries deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/t/thrasher_brute.txt b/forge-gui/res/cardsfolder/t/thrasher_brute.txt new file mode 100644 index 00000000000..648eefb2d1e --- /dev/null +++ b/forge-gui/res/cardsfolder/t/thrasher_brute.txt @@ -0,0 +1,10 @@ +Name:Thrasher Brute +ManaCost:3 B +Types:Creature Orc Warrior +PT:4/3 +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigDrain | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME or another Warrior enters the battlefield under your team's control, target opponent loses 1 life and you gain 1 life. +T:Mode$ ChangesZone | ValidCard$ Warrior.Other+YourTeamCtrl | Origin$ Any | Destination$ Battlefield | Execute$ TrigDrain | TriggerZones$ Battlefield | Secondary$ True | TriggerDescription$ Whenever CARDNAME or another Warrior enters the battlefield under your team's control, target opponent loses 1 life and you gain 1 life. +SVar:TrigDrain:DB$ LoseLife | ValidTgts$ Opponent | LifeAmount$ 1 | SubAbility$ DBGainLife +SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 1 +SVar:BuffedBy:Warrior +Oracle:Whenever Thrasher Brute or another Warrior enters the battlefield under your team's control, target opponent loses 1 life and you gain 1 life. diff --git a/forge-gui/res/cardsfolder/t/thrill_of_the_hunt.txt b/forge-gui/res/cardsfolder/t/thrill_of_the_hunt.txt index aba73be7b7e..cdb5880505b 100644 --- a/forge-gui/res/cardsfolder/t/thrill_of_the_hunt.txt +++ b/forge-gui/res/cardsfolder/t/thrill_of_the_hunt.txt @@ -1,7 +1,7 @@ Name:Thrill of the Hunt ManaCost:G Types:Instant -K:Flashback W +K:Flashback:W A:SP$ Pump | Cost$ G | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +1 | NumDef$ +2 | SpellDescription$ Target creature gets +1/+2 until end of turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/thrill_of_the_hunt.jpg Oracle:Target creature gets +1/+2 until end of turn.\nFlashback {W} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/t/thrilling_encore.txt b/forge-gui/res/cardsfolder/t/thrilling_encore.txt new file mode 100644 index 00000000000..cb7d570c9ac --- /dev/null +++ b/forge-gui/res/cardsfolder/t/thrilling_encore.txt @@ -0,0 +1,5 @@ +Name:Thrilling Encore +ManaCost:4 B +Types:Instant +A:SP$ ChangeZone | Cost$ 4 B | Origin$ Graveyard | Destination$ Battlefield | Defined$ ThisTurnEntered_Graveyard_from_Battlefield_Creature.nonToken | SpellDescription$ Put onto the battlefield under your control all creature cards in all graveyards that were put there from the battlefield this turn. +Oracle:Put onto the battlefield under your control all creature cards in all graveyards that were put there from the battlefield this turn. diff --git a/forge-gui/res/cardsfolder/t/thud.txt b/forge-gui/res/cardsfolder/t/thud.txt new file mode 100644 index 00000000000..aa8944ad13d --- /dev/null +++ b/forge-gui/res/cardsfolder/t/thud.txt @@ -0,0 +1,6 @@ +Name:Thud +ManaCost:R +Types:Sorcery +A:SP$ DealDamage | Cost$ R Sac<1/Creature> | NumDmg$ X | References$ X | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | SpellDescription$ CARDNAME deals damage equal to the sacrificed creature's power to any target. +SVar:X:Sacrificed$CardPower +Oracle:As an additional cost to cast this spell, sacrifice a creature.\nThud deals damage equal to the sacrificed creature's power to any target. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/t/thumbscrews.txt b/forge-gui/res/cardsfolder/t/thumbscrews.txt index 0fc8cc177d7..5b0d4d1fd1d 100644 --- a/forge-gui/res/cardsfolder/t/thumbscrews.txt +++ b/forge-gui/res/cardsfolder/t/thumbscrews.txt @@ -1,7 +1,7 @@ Name:Thumbscrews ManaCost:2 Types:Artifact -T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | IsPresent$ Card.YouCtrl | PresentZone$ Hand | PresentCompare$ GE5 | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ At the beginning of your upkeep, if you have five or more cards in hand, CARDNAME deals 1 damage to target opponent. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Opponent | NumDmg$ 1 +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | IsPresent$ Card.YouCtrl | PresentZone$ Hand | PresentCompare$ GE5 | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ At the beginning of your upkeep, if you have five or more cards in hand, CARDNAME deals 1 damage to target opponent or planeswalker. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Opponent,Planeswalker | NumDmg$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/thumbscrews.jpg -Oracle:At the beginning of your upkeep, if you have five or more cards in hand, Thumbscrews deals 1 damage to target opponent. +Oracle:At the beginning of your upkeep, if you have five or more cards in hand, Thumbscrews deals 1 damage to target opponent or planeswalker. diff --git a/forge-gui/res/cardsfolder/t/thunderblade_charge.txt b/forge-gui/res/cardsfolder/t/thunderblade_charge.txt index 015440f901f..5bd869e6fd6 100644 --- a/forge-gui/res/cardsfolder/t/thunderblade_charge.txt +++ b/forge-gui/res/cardsfolder/t/thunderblade_charge.txt @@ -1,8 +1,8 @@ Name:Thunderblade Charge ManaCost:1 R R Types:Sorcery -A:SP$ DealDamage | Cost$ 1 R R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. +A:SP$ DealDamage | Cost$ 1 R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. T:Mode$ DamageDoneOnce | CombatDamage$ True | ValidSource$ Creature.YouCtrl | TriggerZones$ Graveyard | ValidTarget$ Player | Execute$ TrigPlay | TriggerDescription$ Whenever one or more creatures you control deal combat damage to a player, if CARDNAME is in your graveyard, you may pay {2}{R}{R}{R}. If you do, you may cast it without paying its mana cost. SVar:TrigPlay:AB$ Play | Cost$ 2 R R R | ActivationZone$ Graveyard | WithoutManaCost$ True | Optional$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/thunderblade_charge.jpg -Oracle:Thunderblade Charge deals 3 damage to target creature or player.\nWhenever one or more creatures you control deal combat damage to a player, if Thunderblade Charge is in your graveyard, you may pay {2}{R}{R}{R}. If you do, you may cast it without paying its mana cost. +Oracle:Thunderblade Charge deals 3 damage to any target.\nWhenever one or more creatures you control deal combat damage to a player, if Thunderblade Charge is in your graveyard, you may pay {2}{R}{R}{R}. If you do, you may cast it without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/t/thunderbolt.txt b/forge-gui/res/cardsfolder/t/thunderbolt.txt index d963d2ac624..61ae19504b8 100644 --- a/forge-gui/res/cardsfolder/t/thunderbolt.txt +++ b/forge-gui/res/cardsfolder/t/thunderbolt.txt @@ -2,7 +2,7 @@ Name:Thunderbolt ManaCost:1 R Types:Instant A:SP$ Charm | Cost$ 1 R | Choices$ DBDmg,DBDmg2 -SVar:DBDmg:DB$ DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target player. +SVar:DBDmg:DB$ DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target player or planeswalker. SVar:DBDmg2:DB$ DealDamage | ValidTgts$ Creature.withFlying | TgtPrompt$ Select target creature with Flying | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target creature with flying. SVar:Picture:http://www.wizards.com/global/images/magic/general/thunderbolt.jpg -Oracle:Choose one —\n• Thunderbolt deals 3 damage to target player.\n• Thunderbolt deals 4 damage to target creature with flying. +Oracle:Choose one —\n• Thunderbolt deals 3 damage to target player or planeswalker.\n• Thunderbolt deals 4 damage to target creature with flying. diff --git a/forge-gui/res/cardsfolder/t/thunderheads.txt b/forge-gui/res/cardsfolder/t/thunderheads.txt index 3b5da0fa6b9..7a432e38b26 100644 --- a/forge-gui/res/cardsfolder/t/thunderheads.txt +++ b/forge-gui/res/cardsfolder/t/thunderheads.txt @@ -1,7 +1,7 @@ Name:Thunderheads ManaCost:2 U Types:Instant -K:Replicate 2 U +K:Replicate:2 U A:SP$ Token | Cost$ 2 U | TokenName$ Weird | TokenOwner$ You | TokenPower$ 3 | TokenToughness$ 3 | TokenKeywords$ Defender<>Flying | TokenSVars$ ThunderheadsEOT | AtEOT$ Exile | TokenAmount$ 1 | TokenColors$ Blue | TokenTypes$ Creature,Weird | SpellDescription$ Create a 3/3 blue Weird creature token with defender and flying. Exile it at the beginning of the next end step. SVar:ThunderheadsEOT:SVar:EndOfTurnLeavePlay:True SVar:RemAIDeck:True diff --git a/forge-gui/res/cardsfolder/t/thunderous_wrath.txt b/forge-gui/res/cardsfolder/t/thunderous_wrath.txt index 3cc70c0d287..1d6bd487400 100644 --- a/forge-gui/res/cardsfolder/t/thunderous_wrath.txt +++ b/forge-gui/res/cardsfolder/t/thunderous_wrath.txt @@ -2,6 +2,6 @@ Name:Thunderous Wrath ManaCost:4 R R Types:Instant K:Miracle:R -A:SP$ DealDamage | Cost$ 4 R R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 5 | SpellDescription$ CARDNAME deals 5 damage to target creature or player. +A:SP$ DealDamage | Cost$ 4 R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 5 | SpellDescription$ CARDNAME deals 5 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/thunderous_wrath.jpg -Oracle:Thunderous Wrath deals 5 damage to target creature or player.\nMiracle {R} (You may cast this card for its miracle cost when you draw it if it's the first card you drew this turn.) +Oracle:Thunderous Wrath deals 5 damage to any target.\nMiracle {R} (You may cast this card for its miracle cost when you draw it if it's the first card you drew this turn.) diff --git a/forge-gui/res/cardsfolder/t/ticking_gnomes.txt b/forge-gui/res/cardsfolder/t/ticking_gnomes.txt index e0f16608fc2..4423476f975 100644 --- a/forge-gui/res/cardsfolder/t/ticking_gnomes.txt +++ b/forge-gui/res/cardsfolder/t/ticking_gnomes.txt @@ -3,6 +3,6 @@ ManaCost:3 Types:Artifact Creature Gnome PT:3/3 K:Echo:3 -A:AB$ DealDamage | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/ticking_gnomes.jpg -Oracle:Echo {3} (At the beginning of your upkeep, if this came under your control since the beginning of your last upkeep, sacrifice it unless you pay its echo cost.)\nSacrifice Ticking Gnomes: Ticking Gnomes deals 1 damage to target creature or player. +Oracle:Echo {3} (At the beginning of your upkeep, if this came under your control since the beginning of your last upkeep, sacrifice it unless you pay its echo cost.)\nSacrifice Ticking Gnomes: Ticking Gnomes deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/t/tidal_warrior.txt b/forge-gui/res/cardsfolder/t/tidal_warrior.txt index 5facec674cb..319fc99a204 100644 --- a/forge-gui/res/cardsfolder/t/tidal_warrior.txt +++ b/forge-gui/res/cardsfolder/t/tidal_warrior.txt @@ -2,7 +2,7 @@ Name:Tidal Warrior ManaCost:U Types:Creature Merfolk Warrior PT:1/1 -A:AB$ Animate | Cost$ T | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ Island | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | RemoveAllAbilities$ True | SpellDescription$ Target land becomes an Island until end of turn. +A:AB$ Animate | Cost$ T | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ Island | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True | SpellDescription$ Target land becomes an Island until end of turn. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/tidal_warrior.jpg Oracle:{T}: Target land becomes an Island until end of turn. diff --git a/forge-gui/res/cardsfolder/t/tideshaper_mystic.txt b/forge-gui/res/cardsfolder/t/tideshaper_mystic.txt index 8e50fab4939..0329908b82d 100644 --- a/forge-gui/res/cardsfolder/t/tideshaper_mystic.txt +++ b/forge-gui/res/cardsfolder/t/tideshaper_mystic.txt @@ -3,7 +3,7 @@ ManaCost:U Types:Creature Merfolk Wizard PT:1/1 A:AB$ ChooseType | Cost$ T | Defined$ You | Type$ Basic Land | PlayerTurn$ True | SubAbility$ DBAnimate | SpellDescription$ Target land becomes the basic land type of your choice until end of turn. Activate this ability only during your turn. -SVar:DBAnimate:DB$ Animate | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ ChosenType | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | RemoveAllAbilities$ True +SVar:DBAnimate:DB$ Animate | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ ChosenType | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/tideshaper_mystic.jpg Oracle:{T}: Target land becomes the basic land type of your choice until end of turn. Activate this ability only during your turn. diff --git a/forge-gui/res/cardsfolder/t/titan_of_eternal_fire.txt b/forge-gui/res/cardsfolder/t/titan_of_eternal_fire.txt index 16449820c2b..f046e311b1d 100644 --- a/forge-gui/res/cardsfolder/t/titan_of_eternal_fire.txt +++ b/forge-gui/res/cardsfolder/t/titan_of_eternal_fire.txt @@ -2,7 +2,7 @@ Name:Titan of Eternal Fire ManaCost:5 R Types:Creature Giant PT:5/6 -S:Mode$ Continuous | Affected$ Creature.Human+YouCtrl | AddAbility$ Damage | Description$ Each Human creature you control has "{R}, {T}: This creature deals 1 damage to target creature or player." -SVar:Damage:AB$ DealDamage | Cost$ R T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +S:Mode$ Continuous | Affected$ Creature.Human+YouCtrl | AddAbility$ Damage | Description$ Each Human creature you control has "{R}, {T}: This creature deals 1 damage to any target." +SVar:Damage:AB$ DealDamage | Cost$ R T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/titan_of_eternal_fire.jpg -Oracle:Each Human creature you control has "{R}, {T}: This creature deals 1 damage to target creature or player." +Oracle:Each Human creature you control has "{R}, {T}: This creature deals 1 damage to any target." diff --git a/forge-gui/res/cardsfolder/t/titans_revenge.txt b/forge-gui/res/cardsfolder/t/titans_revenge.txt index 7f5763a221e..baa37a28f95 100644 --- a/forge-gui/res/cardsfolder/t/titans_revenge.txt +++ b/forge-gui/res/cardsfolder/t/titans_revenge.txt @@ -1,9 +1,9 @@ Name:Titan's Revenge ManaCost:X R R Types:Sorcery -A:SP$ DealDamage | Cost$ X R R | NumDmg$ X | References$ X | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | SubAbility$ DBClash | SpellDescription$ CARDNAME deals X damage to target creature or player. Clash with an opponent. If you win, return CARDNAME to it's owner's hand. +A:SP$ DealDamage | Cost$ X R R | NumDmg$ X | References$ X | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | SubAbility$ DBClash | SpellDescription$ CARDNAME deals X damage to any target. Clash with an opponent. If you win, return CARDNAME to it's owner's hand. SVar:DBClash:DB$Clash | WinSubAbility$ DBReturn SVar:DBReturn:DB$ChangeZone | Defined$ Self | Origin$ Stack | Destination$ Hand SVar:X:Count$xPaid SVar:Picture:http://www.wizards.com/global/images/magic/general/titans_revenge.jpg -Oracle:Titan's Revenge deals X damage to target creature or player. Clash with an opponent. If you win, return Titan's Revenge to its owner's hand. (Each clashing player reveals the top card of their library, then puts that card on the top or bottom. A player wins if their card had a higher converted mana cost.) +Oracle:Titan's Revenge deals X damage to any target. Clash with an opponent. If you win, return Titan's Revenge to its owner's hand. (Each clashing player reveals the top card of their library, then puts that card on the top or bottom. A player wins if their card had a higher converted mana cost.) diff --git a/forge-gui/res/cardsfolder/t/tolarian_winds.txt b/forge-gui/res/cardsfolder/t/tolarian_winds.txt index 977b2f88f8c..db1aeba0d12 100644 --- a/forge-gui/res/cardsfolder/t/tolarian_winds.txt +++ b/forge-gui/res/cardsfolder/t/tolarian_winds.txt @@ -2,7 +2,7 @@ Name:Tolarian Winds ManaCost:1 U Types:Instant A:SP$ Discard | Cost$ 1 U | Defined$ You | RememberDiscarded$ True | Mode$ Hand | SubAbility$ DBDraw | SpellDescription$ Discard all the cards in your hand, then draw that many cards. -SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ X | SubAbility$ DBCleanup +SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ X | References$ X | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Remembered$Amount SVar:RemAIDeck:True diff --git a/forge-gui/res/cardsfolder/t/toothy_imaginary_friend.txt b/forge-gui/res/cardsfolder/t/toothy_imaginary_friend.txt new file mode 100644 index 00000000000..e7810a52adc --- /dev/null +++ b/forge-gui/res/cardsfolder/t/toothy_imaginary_friend.txt @@ -0,0 +1,13 @@ +Name:Toothy, Imaginary Friend +ManaCost:3 U +Types:Legendary Creature Illusion +PT:1/1 +K:Partner:Pir, Imaginative Rascal:Pir +T:Mode$ Drawn | ValidCard$ Card.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever you draw a card, put a +1/+1 counter on CARDNAME. +SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME leaves the battlefield, draw a card for each +1/+1 counter on it. +SVar:TrigDraw:DB$Draw | Defined$ You | NumCards$ X | References$ X +SVar:X:TriggeredCard$CardCounters.P1P1 +DeckHas:Ability$Counters +SVar:Picture:http://www.wizards.com/global/images/magic/general/toothy_imaginary_friend.jpg +Oracle:Partner with Pir, Imaginative Rascal (When this creature enters the battlefield, target player may put Pir into their hand from their library, then shuffle.)\nWhenever you draw a card, put a +1/+1 counter on Toothy, Imaginary Friend.\nWhen Toothy leaves the battlefield, draw a card for each +1/+1 counter on it. diff --git a/forge-gui/res/cardsfolder/t/torch_song.txt b/forge-gui/res/cardsfolder/t/torch_song.txt index 0a3de644b17..dfeb03df6e4 100644 --- a/forge-gui/res/cardsfolder/t/torch_song.txt +++ b/forge-gui/res/cardsfolder/t/torch_song.txt @@ -1,9 +1,9 @@ Name:Torch Song ManaCost:2 R Types:Enchantment -A:AB$ DealDamage | Cost$ 2 R Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to target creature or player, where X is the number of verse counters on CARDNAME. +A:AB$ DealDamage | Cost$ 2 R Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to any target, where X is the number of verse counters on CARDNAME. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of your upkeep, you may put a verse counter on CARDNAME. SVar:TrigPutCounter:DB$PutCounter | Defined$ Self | CounterType$ VERSE | CounterNum$ 1 SVar:X:Count$CardCounters.VERSE SVar:Picture:http://www.wizards.com/global/images/magic/general/torch_song.jpg -Oracle:At the beginning of your upkeep, you may put a verse counter on Torch Song.\n{2}{R}, Sacrifice Torch Song: Torch Song deals X damage to target creature or player, where X is the number of verse counters on Torch Song. +Oracle:At the beginning of your upkeep, you may put a verse counter on Torch Song.\n{2}{R}, Sacrifice Torch Song: Torch Song deals X damage to any target, where X is the number of verse counters on Torch Song. diff --git a/forge-gui/res/cardsfolder/t/torrent_of_fire.txt b/forge-gui/res/cardsfolder/t/torrent_of_fire.txt index c7326d13632..0144c996ee6 100644 --- a/forge-gui/res/cardsfolder/t/torrent_of_fire.txt +++ b/forge-gui/res/cardsfolder/t/torrent_of_fire.txt @@ -1,7 +1,7 @@ Name:Torrent of Fire ManaCost:3 R R Types:Sorcery -A:SP$ DealDamage | Cost$ 3 R R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage to target creature or player equal to the highest converted mana cost among permanents you control. +A:SP$ DealDamage | Cost$ 3 R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage to any target equal to the highest converted mana cost among permanents you control. SVar:X:Count$MaxCMCYouCtrl SVar:Picture:http://www.wizards.com/global/images/magic/general/torrent_of_fire.jpg -Oracle:Torrent of Fire deals damage to target creature or player equal to the highest converted mana cost among permanents you control. +Oracle:Torrent of Fire deals damage to any target equal to the highest converted mana cost among permanents you control. diff --git a/forge-gui/res/cardsfolder/t/toshiro_umezawa.txt b/forge-gui/res/cardsfolder/t/toshiro_umezawa.txt index 2af01ed9fc5..cc5733ee16e 100644 --- a/forge-gui/res/cardsfolder/t/toshiro_umezawa.txt +++ b/forge-gui/res/cardsfolder/t/toshiro_umezawa.txt @@ -2,7 +2,7 @@ Name:Toshiro Umezawa ManaCost:1 B B Types:Legendary Creature Human Samurai PT:2/2 -K:Bushido 1 +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 card 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:Picture:http://www.wizards.com/global/images/magic/general/toshiro_umezawa.jpg diff --git a/forge-gui/res/cardsfolder/t/touch_of_death.txt b/forge-gui/res/cardsfolder/t/touch_of_death.txt index 85d0ddb47c2..b618ffc0ebd 100644 --- a/forge-gui/res/cardsfolder/t/touch_of_death.txt +++ b/forge-gui/res/cardsfolder/t/touch_of_death.txt @@ -1,9 +1,9 @@ Name:Touch of Death ManaCost:2 B Types:Sorcery -A:SP$ DealDamage | Cost$ 2 B | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target player. You gain 1 life. Draw a card at the beginning of the next turn's upkeep. | SubAbility$ DBGainLife +A:SP$ DealDamage | Cost$ 2 B | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target player or planeswalker. You gain 1 life. Draw a card at the beginning of the next turn's upkeep. | SubAbility$ DBGainLife SVar:DBGainLife:DB$GainLife | LifeAmount$ 1 | SubAbility$ DelTrigSlowtrip SVar:DelTrigSlowtrip:DB$ DelayedTrigger | Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Player | Execute$ DrawSlowtrip | TriggerDescription$ Draw a card. SVar:DrawSlowtrip:DB$Draw | NumCards$ 1 | Defined$ You SVar:Picture:http://www.wizards.com/global/images/magic/general/touch_of_death.jpg -Oracle:Touch of Death deals 1 damage to target player. You gain 1 life.\nDraw a card at the beginning of the next turn's upkeep. +Oracle:Touch of Death deals 1 damage to target player or planeswalker. You gain 1 life.\nDraw a card at the beginning of the next turn's upkeep. diff --git a/forge-gui/res/cardsfolder/t/touch_of_the_void.txt b/forge-gui/res/cardsfolder/t/touch_of_the_void.txt index 6cdf8845b82..569d8f7cb0f 100644 --- a/forge-gui/res/cardsfolder/t/touch_of_the_void.txt +++ b/forge-gui/res/cardsfolder/t/touch_of_the_void.txt @@ -2,7 +2,7 @@ Name:Touch of the Void ManaCost:2 R Types:Sorcery K:Devoid -A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | RememberDamaged$ True | ReplaceDyingDefined$ Remembered | SubAbility$ DBCleanup | SpellDescription$ CARDNAME deals 3 damage to target creature or player. If a creature dealt damage this way would die this turn, exile it instead. +A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | RememberDamaged$ True | ReplaceDyingDefined$ Remembered | SubAbility$ DBCleanup | SpellDescription$ CARDNAME deals 3 damage to any target. If a creature dealt damage this way would die this turn, exile it instead. SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/touch_of_the_void.jpg -Oracle:Devoid (This card has no color.)\nTouch of the Void deals 3 damage to target creature or player. If a creature dealt damage this way would die this turn, exile it instead. +Oracle:Devoid (This card has no color.)\nTouch of the Void deals 3 damage to any target. If a creature dealt damage this way would die this turn, exile it instead. diff --git a/forge-gui/res/cardsfolder/t/tower_of_coireall.txt b/forge-gui/res/cardsfolder/t/tower_of_coireall.txt index 367b989621c..2220a76a264 100644 --- a/forge-gui/res/cardsfolder/t/tower_of_coireall.txt +++ b/forge-gui/res/cardsfolder/t/tower_of_coireall.txt @@ -2,7 +2,7 @@ Name:Tower of Coireall ManaCost:2 Types:Artifact A:AB$ Effect | Cost$ T | ValidTgts$ Creature | TgtPrompt$ Select target creature | RememberObjects$ Targeted | Name$ Tower of Coireall Effect | StaticAbilities$ KWPump | SpellDescription$ Target creature can't be blocked by Walls this turn. -SVar:KWPump:Mode$ CantBlockBy | ValidAttacker$ Creature.Remembered | ValidBlocker$ Creature.Wall | EffectZone$ Command | Description$ Remembered creature can't be blocked by Walls this turn. +SVar:KWPump:Mode$ CantBlockBy | ValidAttacker$ Creature.IsRemembered | ValidBlocker$ Creature.Wall | EffectZone$ Command | Description$ Remembered creature can't be blocked by Walls this turn. SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/tower_of_coireall.jpg Oracle:{T}: Target creature can't be blocked by Walls this turn. diff --git a/forge-gui/res/cardsfolder/t/trackers_instincts.txt b/forge-gui/res/cardsfolder/t/trackers_instincts.txt index 8c7c942423e..e697f51701c 100644 --- a/forge-gui/res/cardsfolder/t/trackers_instincts.txt +++ b/forge-gui/res/cardsfolder/t/trackers_instincts.txt @@ -1,7 +1,7 @@ Name:Tracker's Instincts ManaCost:1 G Types:Sorcery -K:Flashback 2 U +K:Flashback:2 U A:SP$ Dig | Cost$ 1 G | DigNum$ 4 | Reveal$ True | ChangeNum$ 1 | ChangeValid$ Creature | DestinationZone2$ Graveyard | SpellDescription$ Reveal the top four cards of your library. Put a creature card from among them into your hand and the rest into your graveyard. SVar:Picture:http://www.wizards.com/global/images/magic/general/trackers_instincts.jpg Oracle:Reveal the top four cards of your library. Put a creature card from among them into your hand and the rest into your graveyard.\nFlashback {2}{U} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/t/train_of_thought.txt b/forge-gui/res/cardsfolder/t/train_of_thought.txt index 566fc1966d4..607256cc789 100644 --- a/forge-gui/res/cardsfolder/t/train_of_thought.txt +++ b/forge-gui/res/cardsfolder/t/train_of_thought.txt @@ -1,7 +1,7 @@ Name:Train of Thought ManaCost:1 U Types:Sorcery -K:Replicate 1 U +K:Replicate:1 U A:SP$Draw | Cost$ 1 U | Defined$ You | NumCards$ 1 | SpellDescription$ Draw a card. SVar:Picture:http://www.wizards.com/global/images/magic/general/train_of_thought.jpg Oracle:Replicate {1}{U} (When you cast this spell, copy it for each time you paid its replicate cost.)\nDraw a card. diff --git a/forge-gui/res/cardsfolder/t/traitors_clutch.txt b/forge-gui/res/cardsfolder/t/traitors_clutch.txt index 0c02dbb83c3..4f99d5edc63 100644 --- a/forge-gui/res/cardsfolder/t/traitors_clutch.txt +++ b/forge-gui/res/cardsfolder/t/traitors_clutch.txt @@ -1,7 +1,7 @@ Name:Traitor's Clutch ManaCost:4 B Types:Instant -K:Flashback 1 B +K:Flashback:1 B A:SP$ Pump | Cost$ 4 B | ValidTgts$ Creature | NumAtt$ +1 | KW$ Shadow | SubAbility$ DBAnimate | SpellDescription$ Target creature gets +1/+0, becomes black, and gains shadow until end of turn. SVar:DBAnimate:DB$Animate | Defined$ Targeted | Colors$ Black | OverwriteColors$ True SVar:DiscardMe:1 diff --git a/forge-gui/res/cardsfolder/t/transmogrifying_licid.txt b/forge-gui/res/cardsfolder/t/transmogrifying_licid.txt index 1cacae55404..881847c36f7 100644 --- a/forge-gui/res/cardsfolder/t/transmogrifying_licid.txt +++ b/forge-gui/res/cardsfolder/t/transmogrifying_licid.txt @@ -2,7 +2,7 @@ Name:Transmogrifying Licid ManaCost:3 Types:Artifact Creature Licid PT:2/2 -A:AB$ Animate | Cost$ 1 T | Defined$ Self | RemoveThisAbility$ True | Permanent$ True | Permanent$ True | RevertCost$ 1 | Keywords$ Enchant creature | Abilities$ SPAttach | Types$ Enchantment,Aura | RemoveCardTypes$ True | RemoveSubTypes$ True | SubAbility$ DBAttach | SpellDescription$ CARDNAME loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {1} to end this effect. +A:AB$ Animate | Cost$ 1 T | Defined$ Self | RemoveThisAbility$ True | Permanent$ True | Permanent$ True | RevertCost$ 1 | Keywords$ Enchant creature | Abilities$ SPAttach | Types$ Enchantment,Aura | RemoveCardTypes$ True | RemoveEnchantmentTypes$ True | SubAbility$ DBAttach | SpellDescription$ CARDNAME loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {1} to end this effect. SVar:DBAttach:DB$ Attach | ValidTgts$ Creature | AILogic$ Pump SVar:SPAttach:SP$ Attach | Cost$ 0 | ValidTgts$ Creature S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 1 | AddToughness$ 1 | AddType$ Artifact | Description$ Enchanted creature gets +1/+1 and is an artifact in addition to its other types. diff --git a/forge-gui/res/cardsfolder/t/transmogrifying_wand.txt b/forge-gui/res/cardsfolder/t/transmogrifying_wand.txt new file mode 100644 index 00000000000..aee61cab269 --- /dev/null +++ b/forge-gui/res/cardsfolder/t/transmogrifying_wand.txt @@ -0,0 +1,8 @@ +Name:Transmogrifying Wand +ManaCost:3 +Types:Artifact +K:etbCounter:CHARGE:3 +A:AB$ Destroy | Cost$ 1 T SubCounter<1/CHARGE> | ValidTgts$ Creature | TgtPrompt$ Select target creature | SorcerySpeed$ True | SubAbility$ OxToken | SpellDescription$ Destroy target creature. +SVar:OxToken:DB$Token | TokenAmount$ 1 | TokenName$ Ox | TokenTypes$ Creature,Ox | TokenOwner$ TargetedController | TokenColors$ White | TokenPower$ 2 | TokenToughness$ 4 | TokenImage$ w 2 4 ox | SpellDescription$ Its controller creates a 2/4 white Ox creature token +SVar:Picture:http://www.wizards.com/global/images/magic/general/transmogrifying_wand.jpg +Oracle:Transmogrifying Wand enters the battlefield with three charge counters on it.\n{1}, {T}, Remove a charge counter from Transmogrifying Wand: Destroy target creature. Its controller creates a 2/4 white Ox creature token. Activate this ability only any time you could cast a sorcery. diff --git a/forge-gui/res/cardsfolder/t/travel_preparations.txt b/forge-gui/res/cardsfolder/t/travel_preparations.txt index dece9c0fa61..440d1f44377 100644 --- a/forge-gui/res/cardsfolder/t/travel_preparations.txt +++ b/forge-gui/res/cardsfolder/t/travel_preparations.txt @@ -1,7 +1,7 @@ Name:Travel Preparations ManaCost:1 G Types:Sorcery -K:Flashback 1 W +K:Flashback:1 W A:SP$ PutCounter | Cost$ 1 G | CounterNum$ 1 | CounterType$ P1P1 | TargetMin$ 0 | TargetMax$ 2 | ValidTgts$ Creature | TgtPrompt$ Select target creatures | SpellDescription$ Put a +1/+1 counter on each of up to two target creatures. SVar:Picture:http://www.wizards.com/global/images/magic/general/travel_preparations.jpg Oracle:Put a +1/+1 counter on each of up to two target creatures.\nFlashback {1}{W} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/t/treasure_map_treasure_cove.txt b/forge-gui/res/cardsfolder/t/treasure_map_treasure_cove.txt index 40c9b360616..5da0a728389 100644 --- a/forge-gui/res/cardsfolder/t/treasure_map_treasure_cove.txt +++ b/forge-gui/res/cardsfolder/t/treasure_map_treasure_cove.txt @@ -5,7 +5,7 @@ A:AB$ Scry | Cost$ 1 T | ScryNum$ 1 | SubAbility$ DBLandmark | SpellDescription$ SVar:DBLandmark:DB$ PutCounter | Defined$ Self | CounterType$ LANDMARK | CounterNum$ 1 | SubAbility$ DBBranch SVar:DBBranch:DB$ Branch | BranchConditionSVar$ XMarksTheSpot | References$ XMarksTheSpot | TrueSubAbility$ DBRemoveCtrs SVar:DBRemoveCtrs:DB$ RemoveCounter | Defined$ Self | CounterType$ LANDMARK | CounterNum$ All | SubAbility$ DBTransform -SVar:DBTransform:DB$ SetState | Defined$ Self | Mode$ Transform | SubAbility$ DBTreasureTokens +SVar:DBTransform:DB$ SetState | Defined$ Self | Mode$ Transform | SubAbility$ DBTreasureTokens SVar:DBTreasureTokens:DB$ Token | TokenAmount$ 3 | TokenName$ Treasure | TokenTypes$ Artifact,Treasure | TokenOwner$ You | TokenColors$ Colorless | TokenImage$ c treasure | TokenAbilities$ ABTreasureMana | TokenAltImages$ c_treasure2,c_treasure3,c_treasure4 | References$ ABTreasureMana SVar:ABTreasureMana:AB$ Mana | Cost$ T Sac<1/CARDNAME> | Produced$ Any | Amount$ 1 | SpellDescription$ Add one mana of any color. SVar:XMarksTheSpot:Count$Valid Card.Self+counters_GE3_LANDMARK diff --git a/forge-gui/res/cardsfolder/t/tree_of_perdition.txt b/forge-gui/res/cardsfolder/t/tree_of_perdition.txt index c14e374727d..579f9b5abe2 100644 --- a/forge-gui/res/cardsfolder/t/tree_of_perdition.txt +++ b/forge-gui/res/cardsfolder/t/tree_of_perdition.txt @@ -3,6 +3,6 @@ ManaCost:3 B Types:Creature Plant PT:0/13 K:Defender -A:AB$ ExchangeLifeVariant | Cost$ T | ConditionPresent$ Creature.StrictlySelf | ValidTgts$ Opponent | Mode$ Toughness | SpellDescription$ Exchange your life total with CARDNAME's toughness. +A:AB$ ExchangeLifeVariant | Cost$ T | ConditionPresent$ Creature.StrictlySelf | ValidTgts$ Opponent | Mode$ Toughness | SpellDescription$ Exchange target opponent's life total with CARDNAME's toughness. | StackDescription$ SpellDescription SVar:Picture:http://www.wizards.com/global/images/magic/general/tree_of_perdition.jpg Oracle:Defender\n{T}: Exchange target opponent's life total with Tree of Perdition's toughness. diff --git a/forge-gui/res/cardsfolder/t/treefolk_healer.txt b/forge-gui/res/cardsfolder/t/treefolk_healer.txt index 47cfa57f5e6..affc173e74d 100644 --- a/forge-gui/res/cardsfolder/t/treefolk_healer.txt +++ b/forge-gui/res/cardsfolder/t/treefolk_healer.txt @@ -2,8 +2,8 @@ Name:Treefolk Healer ManaCost:4 G Types:Creature Treefolk Cleric PT:2/3 -A:AB$ PreventDamage | Cost$ 2 W T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 2 | SpellDescription$ Prevent the next 2 damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ 2 W T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 2 | SpellDescription$ Prevent the next 2 damage that would be dealt to any target this turn. SVar:RemRandomDeck:True DeckNeeds:Color$white SVar:Picture:http://www.wizards.com/global/images/magic/general/treefolk_healer.jpg -Oracle:{2}{W}, {T}: Prevent the next 2 damage that would be dealt to target creature or player this turn. +Oracle:{2}{W}, {T}: Prevent the next 2 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/t/trial_of_zeal.txt b/forge-gui/res/cardsfolder/t/trial_of_zeal.txt index 0e574dd727e..6955893b0fd 100644 --- a/forge-gui/res/cardsfolder/t/trial_of_zeal.txt +++ b/forge-gui/res/cardsfolder/t/trial_of_zeal.txt @@ -1,11 +1,11 @@ Name:Trial of Zeal ManaCost:2 R Types:Enchantment -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 3 damage to target creature or player. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 3 damage to any target. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | TriggerZones$ Battlefield | ValidCard$ Cartouche.YouCtrl | Execute$ TrigReturn | TriggerDescription$ When a Cartouche enters the battlefield under your control, return CARDNAME to its owner's hand. SVar:TrigReturn:DB$ChangeZone | Origin$ Battlefield | Destination$ Hand | Defined$ Self SVar:PlayMain1:TRUE DeckHints:Type$Cartouche SVar:Picture:http://www.wizards.com/global/images/magic/general/trial_of_zeal.jpg -Oracle:When Trial of Zeal enters the battlefield, it deals 3 damage to target creature or player.\nWhen a Cartouche enters the battlefield under your control, return Trial of Zeal to its owner's hand. +Oracle:When Trial of Zeal enters the battlefield, it deals 3 damage to any target.\nWhen a Cartouche enters the battlefield under your control, return Trial of Zeal to its owner's hand. diff --git a/forge-gui/res/cardsfolder/t/tribal_flames.txt b/forge-gui/res/cardsfolder/t/tribal_flames.txt index 60e590822bc..4e7fbfb80a9 100644 --- a/forge-gui/res/cardsfolder/t/tribal_flames.txt +++ b/forge-gui/res/cardsfolder/t/tribal_flames.txt @@ -1,7 +1,7 @@ Name:Tribal Flames ManaCost:1 R Types:Sorcery -A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ Domain — Tribal Flames deals X damage to target creature or player, where X is the number of basic land types among lands you control. +A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ Domain — Tribal Flames deals X damage to any target, where X is the number of basic land types among lands you control. SVar:X:Count$Domain SVar:Picture:http://resources.wizards.com/magic/cards/tsb/en-us/card108916.jpg -Oracle:Domain — Tribal Flames deals X damage to target creature or player, where X is the number of basic land types among lands you control. +Oracle:Domain — Tribal Flames deals X damage to any target, where X is the number of basic land types among lands you control. diff --git a/forge-gui/res/cardsfolder/t/trickery_charm.txt b/forge-gui/res/cardsfolder/t/trickery_charm.txt index 92b0b42d5d6..861cf054962 100644 --- a/forge-gui/res/cardsfolder/t/trickery_charm.txt +++ b/forge-gui/res/cardsfolder/t/trickery_charm.txt @@ -4,7 +4,7 @@ Types:Instant A:SP$ Charm | Cost$ U | Choices$ DBPump,DBChooseType,DBRearrage SVar:DBPump:DB$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ Flying | SpellDescription$ Target creature gains flying until end of turn. SVar:DBChooseType:DB$ ChooseType | Type$ Creature | Defined$ You | SubAbility$ DBAnimate | SpellDescription$ Target creature becomes the creature type of your choice until end of turn. -SVar:DBAnimate:DB$ Animate | ValidTgts$ Creature | TgtPrompt$ Select target creature | Types$ ChosenType | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True +SVar:DBAnimate:DB$ Animate | ValidTgts$ Creature | TgtPrompt$ Select target creature | Types$ ChosenType | RemoveCreatureTypes$ True SVar:DBRearrage:DB$ RearrangeTopOfLibrary | Defined$ You | NumCards$ 4 | SpellDescription$ Look at the top four cards of your library, then put them back in any order. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/trickery_charm.jpg diff --git a/forge-gui/res/cardsfolder/t/triskelavus.txt b/forge-gui/res/cardsfolder/t/triskelavus.txt index d3ce3315168..776bf815c3b 100644 --- a/forge-gui/res/cardsfolder/t/triskelavus.txt +++ b/forge-gui/res/cardsfolder/t/triskelavus.txt @@ -4,7 +4,7 @@ Types:Artifact Creature Construct PT:1/1 K:Flying K:etbCounter:P1P1:3 -A:AB$ Token | Cost$ 1 SubCounter<1/P1P1> | TokenAmount$ 1 | TokenName$ Triskelavite | TokenTypes$ Artifact,Creature,Triskelavite | TokenOwner$ You | TokenColors$ Colorless | TokenPower$ 1 | TokenToughness$ 1 | TokenKeywords$ Flying | SpellDescription$ Create a 1/1 colorless Triskelavite artifact creature token with flying. It has "Sacrifice this creature: This creature deals 1 damage to target creature or player." | TokenAbilities$ ABDamage -SVar:ABDamage:AB$DealDamage | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ Token | Cost$ 1 SubCounter<1/P1P1> | TokenAmount$ 1 | TokenName$ Triskelavite | TokenTypes$ Artifact,Creature,Triskelavite | TokenOwner$ You | TokenColors$ Colorless | TokenPower$ 1 | TokenToughness$ 1 | TokenKeywords$ Flying | SpellDescription$ Create a 1/1 colorless Triskelavite artifact creature token with flying. It has "Sacrifice this creature: This creature deals 1 damage to any target." | TokenAbilities$ ABDamage +SVar:ABDamage:AB$DealDamage | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/triskelavus.jpg -Oracle:Flying\nTriskelavus enters the battlefield with three +1/+1 counters on it.\n{1}, Remove a +1/+1 counter from Triskelavus: Create a 1/1 colorless Triskelavite artifact creature token with flying. It has "Sacrifice this creature: This creature deals 1 damage to target creature or player." +Oracle:Flying\nTriskelavus enters the battlefield with three +1/+1 counters on it.\n{1}, Remove a +1/+1 counter from Triskelavus: Create a 1/1 colorless Triskelavite artifact creature token with flying. It has "Sacrifice this creature: This creature deals 1 damage to any target." diff --git a/forge-gui/res/cardsfolder/t/triskelion.txt b/forge-gui/res/cardsfolder/t/triskelion.txt index a117fb198d9..0fdcd30667f 100644 --- a/forge-gui/res/cardsfolder/t/triskelion.txt +++ b/forge-gui/res/cardsfolder/t/triskelion.txt @@ -3,6 +3,6 @@ ManaCost:6 Types:Artifact Creature Construct PT:1/1 K:etbCounter:P1P1:3 -A:AB$ DealDamage | AILogic$ Triskelion | Cost$ SubCounter<1/P1P1> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | AILogic$ Triskelion | Cost$ SubCounter<1/P1P1> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/triskelion.jpg -Oracle:Triskelion enters the battlefield with three +1/+1 counters on it.\nRemove a +1/+1 counter from Triskelion: Triskelion deals 1 damage to target creature or player. +Oracle:Triskelion enters the battlefield with three +1/+1 counters on it.\nRemove a +1/+1 counter from Triskelion: Triskelion deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/t/troubled_healer.txt b/forge-gui/res/cardsfolder/t/troubled_healer.txt index 82e2976fe25..1cb74b6e177 100644 --- a/forge-gui/res/cardsfolder/t/troubled_healer.txt +++ b/forge-gui/res/cardsfolder/t/troubled_healer.txt @@ -2,7 +2,7 @@ Name:Troubled Healer ManaCost:2 W Types:Creature Human Cleric PT:1/2 -A:AB$ PreventDamage | Cost$ Sac<1/Land> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 2 | SpellDescription$ Prevent the next 2 damage that would be dealt to target creature or player this turn. +A:AB$ PreventDamage | Cost$ Sac<1/Land> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select target any target | Amount$ 2 | SpellDescription$ Prevent the next 2 damage that would be dealt to target permanent or player this turn. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/troubled_healer.jpg -Oracle:Sacrifice a land: Prevent the next 2 damage that would be dealt to target creature or player this turn. +Oracle:Sacrifice a land: Prevent the next 2 damage that would be dealt to any target this turn. diff --git a/forge-gui/res/cardsfolder/t/trusty_packbeast.txt b/forge-gui/res/cardsfolder/t/trusty_packbeast.txt new file mode 100644 index 00000000000..73f0b734957 --- /dev/null +++ b/forge-gui/res/cardsfolder/t/trusty_packbeast.txt @@ -0,0 +1,8 @@ +Name:Trusty Packbeast +ManaCost:2 W +Types:Creature Beast +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigChangeZone | TriggerDescription$ When CARDNAME enters the battlefield, return target artifact card from your graveyard to your hand. +SVar:TrigChangeZone:DB$ ChangeZone | ValidTgts$ Artifact.YouCtrl | Origin$ Graveyard | Destination$ Hand | TgtPrompt$ Select target artifact from your graveyard +DeckHints:Type$Artifact +Oracle:When Trusty Packbeast enters the battlefield, return target artifact card from your graveyard to your hand. +PT:2/3 diff --git a/forge-gui/res/cardsfolder/t/tundra_kavu.txt b/forge-gui/res/cardsfolder/t/tundra_kavu.txt index 2ca8fabc976..355c92c1a6b 100644 --- a/forge-gui/res/cardsfolder/t/tundra_kavu.txt +++ b/forge-gui/res/cardsfolder/t/tundra_kavu.txt @@ -4,8 +4,8 @@ Types:Creature Kavu PT:2/2 A:AB$ Pump | Cost$ T | ValidTgts$ Land | TgtPrompt$ Select target land | SubAbility$ TypeChoice | StackDescription$ Target land becomes a | SpellDescription$ Target land becomes a Plains or an Island until end of turn. SVar:TypeChoice:DB$ GenericChoice | Choices$ SVar1,SVar2 | StackDescription$ Plains or an Island until end of turn. -SVar:SVar1:DB$ Animate | Defined$ Targeted | Types$ Plains | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | RemoveAllAbilities$ True | SpellDescription$ Targeted land becomes a Plains until end of turn. -SVar:SVar2:DB$ Animate | Defined$ Targeted | Types$ Island | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | RemoveAllAbilities$ True | SpellDescription$ Targeted land becomes an Island until end of turn. +SVar:SVar1:DB$ Animate | Defined$ Targeted | Types$ Plains | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True | SpellDescription$ Targeted land becomes a Plains until end of turn. +SVar:SVar2:DB$ Animate | Defined$ Targeted | Types$ Island | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True | SpellDescription$ Targeted land becomes an Island until end of turn. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/tundra_kavu.jpg Oracle:{T}: Target land becomes a Plains or an Island until end of turn. diff --git a/forge-gui/res/cardsfolder/t/turn_burn.txt b/forge-gui/res/cardsfolder/t/turn_burn.txt index 68076e365e9..d66bd6e5b88 100644 --- a/forge-gui/res/cardsfolder/t/turn_burn.txt +++ b/forge-gui/res/cardsfolder/t/turn_burn.txt @@ -12,5 +12,5 @@ ALTERNATE Name:Burn ManaCost:1 R Types:Instant -A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. -Oracle:Burn deals 2 damage to target creature or player.\nFuse (You may cast one or both halves of this card from your hand.) +A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. +Oracle:Burn deals 2 damage to any target.\nFuse (You may cast one or both halves of this card from your hand.) diff --git a/forge-gui/res/cardsfolder/t/turntimber_sower.txt b/forge-gui/res/cardsfolder/t/turntimber_sower.txt new file mode 100644 index 00000000000..b8c871a0564 --- /dev/null +++ b/forge-gui/res/cardsfolder/t/turntimber_sower.txt @@ -0,0 +1,9 @@ +Name:Turntimber Sower +ManaCost:2 G +Types:Creature Elf Druid +PT:3/3 +T:Mode$ ChangesZone | ValidCard$ Land.YouOwn | Origin$ Any | Destination$ Graveyard | Execute$ TrigToken | TriggerZones$ Battlefield | TriggerDescription$ Whenever one or more land cards are put into your graveyard from anywhere, create a 0/1 green Plant creature token. +SVar:TrigToken:DB$Token | TokenAmount$ 1 | TokenName$ Plant | TokenTypes$ Creature,Plant | TokenOwner$ You | TokenColors$ Green | TokenPower$ 0 | TokenToughness$ 1 | TokenImage$ g 0 1 plant c18 +SVar:RemRandomDeck:True +A:AB$ ChangeZone | Cost$ G Sac<3/Creature> | TgtPrompt$ Choose target land card in your graveyard | ValidTgts$ Land.YouCtrl | Origin$ Graveyard | Destination$ Hand | SpellDescription$ Return target land card from your graveyard to your hand. +Oracle:Whenever one or more land cards are put into your graveyard from anywhere, create a 0/1 green Plant creature token.\n{G}, Sacrifice three creatures: Return target land card from your graveyard to your hand. diff --git a/forge-gui/res/cardsfolder/t/tuvasa_the_sunlit.txt b/forge-gui/res/cardsfolder/t/tuvasa_the_sunlit.txt new file mode 100644 index 00000000000..54e048fd514 --- /dev/null +++ b/forge-gui/res/cardsfolder/t/tuvasa_the_sunlit.txt @@ -0,0 +1,11 @@ +Name:Tuvasa the Sunlit +ManaCost:G W U +Types:Legendary Creature Merfolk Shaman +PT:1/1 +S:Mode$ Continuous | Affected$ Card.Self | AddPower$ X | AddToughness$ X | Description$ CARDNAME gets +1/+1 for each enchantment you control. +SVar:X:Count$Valid Enchantment.YouCtrl +T:Mode$ SpellCast | ValidCard$ Enchantment | ValidActivatingPlayer$ You | CheckSVar$ Y | SVarCompare$ EQ1 | References$ Y | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever you cast your first enchantment spell each turn, draw a card. +SVar:Y:Count$ThisTurnCast_Enchantment.YouCtrl +SVar:TrigDraw:DB$ Draw | NumCards$ 1 | Defined$ You +SVar:BuffedBy:Enchantment +Oracle:Tuvasa the Sunlit gets +1/+1 for each enchantment you control.\nWhenever you cast your first enchantment spell each turn, draw a card. diff --git a/forge-gui/res/cardsfolder/t/twin_bolt.txt b/forge-gui/res/cardsfolder/t/twin_bolt.txt index e8f54121cf8..60bad2af70c 100644 --- a/forge-gui/res/cardsfolder/t/twin_bolt.txt +++ b/forge-gui/res/cardsfolder/t/twin_bolt.txt @@ -1,6 +1,6 @@ Name:Twin Bolt ManaCost:1 R Types:Instant -A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to distribute damage to | NumDmg$ 2 | TargetMin$ 1 | TargetMax$ 2 | DividedAsYouChoose$ 2 | SpellDescription$ CARDNAME deals 2 damage divided as you choose among one or two target creatures and/or players. +A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to distribute damage to | NumDmg$ 2 | TargetMin$ 1 | TargetMax$ 2 | DividedAsYouChoose$ 2 | SpellDescription$ CARDNAME deals 2 damage divided as you choose among one or two targets. SVar:Picture:http://www.wizards.com/global/images/magic/general/twin_bolt.jpg -Oracle:Twin Bolt deals 2 damage divided as you choose among one or two target creatures and/or players. +Oracle:Twin Bolt deals 2 damage divided as you choose among one or two targets. diff --git a/forge-gui/res/cardsfolder/t/two_headed_zombie.txt b/forge-gui/res/cardsfolder/t/two_headed_zombie.txt new file mode 100644 index 00000000000..32d7bf1327a --- /dev/null +++ b/forge-gui/res/cardsfolder/t/two_headed_zombie.txt @@ -0,0 +1,6 @@ +Name:Two-Headed Zombie +ManaCost:3 B +Types:Creature Zombie +K:Menace +PT:4/2 +Oracle:Menace \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/t/tymaret_the_murder_king.txt b/forge-gui/res/cardsfolder/t/tymaret_the_murder_king.txt index cd9f9771978..cd3c9d5f2a0 100644 --- a/forge-gui/res/cardsfolder/t/tymaret_the_murder_king.txt +++ b/forge-gui/res/cardsfolder/t/tymaret_the_murder_king.txt @@ -2,7 +2,7 @@ Name:Tymaret, the Murder King ManaCost:B R Types:Legendary Creature Zombie Warrior PT:2/2 -A:AB$ DealDamage | Cost$ 1 R Sac<1/Creature.Other/another creature> | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target player. +A:AB$ DealDamage | Cost$ 1 R Sac<1/Creature.Other/another creature> | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target player or planeswalker. A:AB$ ChangeZone | Cost$ 1 B Sac<1/Creature> | Origin$ Graveyard | Destination$ Hand | Defined$ Self | ActivationZone$ Graveyard | SpellDescription$ Return CARDNAME from your graveyard to your hand. SVar:Picture:http://www.wizards.com/global/images/magic/general/tymaret_the_murder_king.jpg -Oracle:{1}{R}, Sacrifice another creature: Tymaret, the Murder King deals 2 damage to target player.\n{1}{B}, Sacrifice a creature: Return Tymaret from your graveyard to your hand. +Oracle:{1}{R}, Sacrifice another creature: Tymaret, the Murder King deals 2 damage to target player or planeswalker.\n{1}{B}, Sacrifice a creature: Return Tymaret from your graveyard to your hand. diff --git a/forge-gui/res/cardsfolder/t/tyrant_of_valakut.txt b/forge-gui/res/cardsfolder/t/tyrant_of_valakut.txt index de23c06c228..a16c00a4cb3 100644 --- a/forge-gui/res/cardsfolder/t/tyrant_of_valakut.txt +++ b/forge-gui/res/cardsfolder/t/tyrant_of_valakut.txt @@ -4,7 +4,7 @@ Types:Creature Dragon PT:5/4 K:Surge:3 R R K:Flying -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self+surged | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, if its surge cost was paid, it deals 3 damage to target creature or player. -SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self+surged | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, if its surge cost was paid, it deals 3 damage to any target. +SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 SVar:Picture:http://www.wizards.com/global/images/magic/general/tyrant_of_valakut.jpg -Oracle:Surge {3}{R}{R} (You may cast this spell for its surge cost if you or a teammate has cast another spell this turn.)\nFlying\nWhen Tyrant of Valakut enters the battlefield, if its surge cost was paid, it deals 3 damage to target creature or player. +Oracle:Surge {3}{R}{R} (You may cast this spell for its surge cost if you or a teammate has cast another spell this turn.)\nFlying\nWhen Tyrant of Valakut enters the battlefield, if its surge cost was paid, it deals 3 damage to any target. diff --git a/forge-gui/res/cardsfolder/u/ugin_the_spirit_dragon.txt b/forge-gui/res/cardsfolder/u/ugin_the_spirit_dragon.txt index e6e355c2eae..9b0c7011047 100644 --- a/forge-gui/res/cardsfolder/u/ugin_the_spirit_dragon.txt +++ b/forge-gui/res/cardsfolder/u/ugin_the_spirit_dragon.txt @@ -2,11 +2,11 @@ Name:Ugin, the Spirit Dragon ManaCost:8 Types:Legendary Planeswalker Ugin Loyalty:7 -A:AB$ DealDamage | Cost$ AddCounter<2/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. +A:AB$ DealDamage | Cost$ AddCounter<2/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. A:AB$ ChangeZoneAll | Cost$ SubCounter | UseAllOriginZones$ True | Planeswalker$ True | ChangeType$ Permanent.nonColorless+cmcLEChosenX | References$ X | Origin$ Battlefield | Destination$ Exile | SpellDescription$ Exile each permanent with converted mana cost X or less that's one or more colors. SVar:X:XChoice A:AB$ GainLife | Cost$ SubCounter<10/LOYALTY> | Planeswalker$ True | Ultimate$ True | LifeAmount$ 7 | SubAbility$ DBDraw | SpellDescription$ You gain 7 life, draw seven cards, then put up to seven permanent cards from your hand onto the battlefield. SVar:DBDraw:DB$ Draw | NumCards$ 7 | SubAbility$ DBChangeZone SVar:DBChangeZone:DB$ ChangeZone | Origin$ Hand | Destination$ Battlefield | ChangeType$ Permanent | ChangeNum$ 7 SVar:Picture:http://www.wizards.com/global/images/magic/general/ugin_the_spirit_dragon.jpg -Oracle:[+2]: Ugin, the Spirit Dragon deals 3 damage to target creature or player.\n[-X]: Exile each permanent with converted mana cost X or less that's one or more colors.\n[-10]: You gain 7 life, draw seven cards, then put up to seven permanent cards from your hand onto the battlefield. +Oracle:[+2]: Ugin, the Spirit Dragon deals 3 damage to any target.\n[-X]: Exile each permanent with converted mana cost X or less that's one or more colors.\n[-10]: You gain 7 life, draw seven cards, then put up to seven permanent cards from your hand onto the battlefield. diff --git a/forge-gui/res/cardsfolder/u/unburial_rites.txt b/forge-gui/res/cardsfolder/u/unburial_rites.txt index a3cf54927b5..b00ff3b7906 100644 --- a/forge-gui/res/cardsfolder/u/unburial_rites.txt +++ b/forge-gui/res/cardsfolder/u/unburial_rites.txt @@ -1,7 +1,7 @@ Name:Unburial Rites ManaCost:4 B Types:Sorcery -K:Flashback 3 W +K:Flashback:3 W A:SP$ ChangeZone | Cost$ 4 B | Origin$ Graveyard | Destination$ Battlefield | TgtPrompt$ Choose target creature card in your graveyard | ValidTgts$ Creature.YouCtrl | SpellDescription$ Return target creature card from your graveyard to the battlefield. SVar:DiscardMe:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/unburial_rites.jpg diff --git a/forge-gui/res/cardsfolder/u/uncomfortable_chill.txt b/forge-gui/res/cardsfolder/u/uncomfortable_chill.txt new file mode 100644 index 00000000000..413ad7e4d8d --- /dev/null +++ b/forge-gui/res/cardsfolder/u/uncomfortable_chill.txt @@ -0,0 +1,6 @@ +Name:Uncomfortable Chill +ManaCost:2 U +Types:Instant +A:SP$ PumpAll | Cost$ 2 U | ValidCards$ Creature.OppCtrl | NumAtt$ -2 | NumDef$ -0 | SubAbility$ DBDraw | SpellDescription$ Creatures your opponents control get -2/-0 until end of turn.\nDraw a card. +SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ 1 +Oracle:Creatures your opponents control get -2/-0 until end of turn.\nDraw a card. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/u/undying_flames.txt b/forge-gui/res/cardsfolder/u/undying_flames.txt index f3317f701ea..a167c519787 100644 --- a/forge-gui/res/cardsfolder/u/undying_flames.txt +++ b/forge-gui/res/cardsfolder/u/undying_flames.txt @@ -2,10 +2,10 @@ Name:Undying Flames ManaCost:4 R R Types:Sorcery K:Epic -A:SP$ DigUntil | Cost$ 4 R R | Defined$ You | Valid$ Card.nonLand | ValidDescription$ nonland | FoundDestination$ Exile | RevealedDestination$ Exile | RememberFound$ True | SubAbility$ UndyingDamage | SpellDescription$ Exile cards from the top of your library until you exile a nonland card. Undying Flames deals damage to target creature or player equal to that card's converted mana cost. -SVar:UndyingDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ FlameX | References$ FlameX | SubAbility$ DBCleanup +A:SP$ DigUntil | Cost$ 4 R R | Defined$ You | Valid$ Card.nonLand | ValidDescription$ nonland | FoundDestination$ Exile | RevealedDestination$ Exile | RememberFound$ True | SubAbility$ UndyingDamage | SpellDescription$ Exile cards from the top of your library until you exile a nonland card. Undying Flames deals damage to any target equal to that card's converted mana cost. +SVar:UndyingDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ FlameX | References$ FlameX | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:FlameX:Remembered$CardManaCost SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/undying_flames.jpg -Oracle:Exile cards from the top of your library until you exile a nonland card. Undying Flames deals damage to target creature or player equal to that card's converted mana cost.\nEpic (For the rest of the game, you can't cast spells. At the beginning of each of your upkeeps, copy this spell except for its epic ability. You may choose a new target for the copy.) +Oracle:Exile cards from the top of your library until you exile a nonland card. Undying Flames deals damage to any target equal to that card's converted mana cost.\nEpic (For the rest of the game, you can't cast spells. At the beginning of each of your upkeeps, copy this spell except for its epic ability. You may choose a new target for the copy.) diff --git a/forge-gui/res/cardsfolder/u/unfriendly_fire.txt b/forge-gui/res/cardsfolder/u/unfriendly_fire.txt index ed5ce9c6a0e..373623dca5e 100644 --- a/forge-gui/res/cardsfolder/u/unfriendly_fire.txt +++ b/forge-gui/res/cardsfolder/u/unfriendly_fire.txt @@ -1,6 +1,6 @@ Name:Unfriendly Fire ManaCost:4 R Types:Instant -A:SP$ DealDamage | Cost$ 4 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target creature or player. +A:SP$ DealDamage | Cost$ 4 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/unfriendly_fire.jpg -Oracle:Unfriendly Fire deals 4 damage to target creature or player. +Oracle:Unfriendly Fire deals 4 damage to any target. diff --git a/forge-gui/res/cardsfolder/u/unnatural_selection.txt b/forge-gui/res/cardsfolder/u/unnatural_selection.txt index 58515141bd3..bd0254a1d5b 100644 --- a/forge-gui/res/cardsfolder/u/unnatural_selection.txt +++ b/forge-gui/res/cardsfolder/u/unnatural_selection.txt @@ -2,7 +2,7 @@ Name:Unnatural Selection ManaCost:1 U Types:Enchantment A:AB$ ChooseType | Cost$ 1 | Defined$ You | Type$ Creature | InvalidTypes$ Wall | SubAbility$ DBAnimate | SpellDescription$ Choose a creature type other than Wall. Target creature becomes that type until end of turn. -SVar:DBAnimate:DB$ Animate | ValidTgts$ Creature | TgtPrompt$ Select target creature | Types$ ChosenType | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True +SVar:DBAnimate:DB$ Animate | ValidTgts$ Creature | TgtPrompt$ Select target creature | Types$ ChosenType | RemoveCreatureTypes$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/unnatural_selection.jpg Oracle:{1}: Choose a creature type other than Wall. Target creature becomes that type until end of turn. diff --git a/forge-gui/res/cardsfolder/u/unstable_footing.txt b/forge-gui/res/cardsfolder/u/unstable_footing.txt index 10ee21d4f3a..aaff190f980 100644 --- a/forge-gui/res/cardsfolder/u/unstable_footing.txt +++ b/forge-gui/res/cardsfolder/u/unstable_footing.txt @@ -2,9 +2,9 @@ Name:Unstable Footing ManaCost:R Types:Instant K:Kicker:3 R -A:SP$ Effect | Cost$ R | Name$ Unstable Footing | StaticAbilities$ STCantPrevent | SubAbility$ DBDamage | SpellDescription$ Damage can't be prevented this turn. If CARDNAME was kicked, it deals 5 damage to target player. +A:SP$ Effect | Cost$ R | Name$ Unstable Footing | StaticAbilities$ STCantPrevent | SubAbility$ DBDamage | SpellDescription$ Damage can't be prevented this turn. If CARDNAME was kicked, it deals 5 damage to target player or planeswalker. SVar:STCantPrevent:Mode$ Continuous | EffectZone$ Command | GlobalRule$ Damage can't be prevented. | Description$ Damage can't be prevented. -SVar:DBDamage:DB$ DealDamage | ValidTgts$ Player | TgtPrompt$ Select another target player | NumDmg$ 5 | NoPrevention$ True | Condition$ Kicked | ConditionDescription$ If it was kicked, +SVar:DBDamage:DB$ DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 5 | NoPrevention$ True | Condition$ Kicked | ConditionDescription$ If it was kicked, SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/unstable_footing.jpg -Oracle:Kicker {3}{R} (You may pay an additional {3}{R} as you cast this spell.)\nDamage can't be prevented this turn. If Unstable Footing was kicked, it deals 5 damage to target player. +Oracle:Kicker {3}{R} (You may pay an additional {3}{R} as you cast this spell.)\nDamage can't be prevented this turn. If Unstable Footing was kicked, it deals 5 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/u/unstable_frontier.txt b/forge-gui/res/cardsfolder/u/unstable_frontier.txt index 0190d6b2336..0e3276eaf00 100644 --- a/forge-gui/res/cardsfolder/u/unstable_frontier.txt +++ b/forge-gui/res/cardsfolder/u/unstable_frontier.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Land A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}. A:AB$ ChooseType | Cost$ T | Defined$ You | Type$ Basic Land | SubAbility$ DBAnimate | SpellDescription$ Target land you control becomes the basic land type of your choice until end of turn. -SVar:DBAnimate:DB$ Animate | ValidTgts$ Land.YouCtrl | TgtPrompt$ Select target land you control | Types$ ChosenType | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | RemoveAllAbilities$ True +SVar:DBAnimate:DB$ Animate | ValidTgts$ Land.YouCtrl | TgtPrompt$ Select target land you control | Types$ ChosenType | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/unstable_frontier.jpg Oracle:{T}: Add {C}.\n{T}: Target land you control becomes the basic land type of your choice until end of turn. diff --git a/forge-gui/res/cardsfolder/u/unyaro_bee_sting.txt b/forge-gui/res/cardsfolder/u/unyaro_bee_sting.txt index cb49dc80e8f..947883355ae 100644 --- a/forge-gui/res/cardsfolder/u/unyaro_bee_sting.txt +++ b/forge-gui/res/cardsfolder/u/unyaro_bee_sting.txt @@ -1,6 +1,6 @@ Name:Unyaro Bee Sting ManaCost:3 G Types:Sorcery -A:SP$ DealDamage | Cost$ 3 G | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:SP$ DealDamage | Cost$ 3 G | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/unyaro_bee_sting.jpg -Oracle:Unyaro Bee Sting deals 2 damage to target creature or player. +Oracle:Unyaro Bee Sting deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/u/unyaro_bees.txt b/forge-gui/res/cardsfolder/u/unyaro_bees.txt index 2060c653418..9c0f5c81713 100644 --- a/forge-gui/res/cardsfolder/u/unyaro_bees.txt +++ b/forge-gui/res/cardsfolder/u/unyaro_bees.txt @@ -4,6 +4,6 @@ Types:Creature Insect PT:0/1 K:Flying A:AB$ Pump | Cost$ G | NumAtt$ +1 | NumDef$ +1 | SpellDescription$ CARDNAME gets +1/+1 until end of turn. -A:AB$ DealDamage | Cost$ 3 G Sac<1/CARDNAME> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature or player. +A:AB$ DealDamage | Cost$ 3 G Sac<1/CARDNAME> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/unyaro_bees.jpg -Oracle:Flying\n{G}: Unyaro Bees gets +1/+1 until end of turn.\n{3}{G}, Sacrifice Unyaro Bees: Unyaro Bees deals 2 damage to target creature or player. +Oracle:Flying\n{G}: Unyaro Bees gets +1/+1 until end of turn.\n{3}{G}, Sacrifice Unyaro Bees: Unyaro Bees deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/u/ursine_champion.txt b/forge-gui/res/cardsfolder/u/ursine_champion.txt new file mode 100644 index 00000000000..6e674de8c8f --- /dev/null +++ b/forge-gui/res/cardsfolder/u/ursine_champion.txt @@ -0,0 +1,7 @@ +Name:Ursine Champion +ManaCost:1 G +Types:Creature Human Beserker +A:AB$ Pump | Cost$ 5 G | Defined$ Self | NumAtt$ +3 | NumDef$ +3 | SubAbility$ DBAnimate | ActivationLimit$ 1 | SpellDescription$ CARDNAME gets +3/+3 and becomes a Bear Berserker until end of turn. Activate this ability only once each turn. +SVar:DBAnimate:DB$Animate | Defined$ Self | Types$ Bear,Beserker | RemoveCreatureTypes$ True +Oracle:{5}{G}: Ursine Champion gets +3/+3 and becomes a Bear Berserker until end of turn. Activate this ability only once each turn. +PT:2/2 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/u/urza.txt b/forge-gui/res/cardsfolder/u/urza.txt index d8c4abd367b..850289d72e8 100644 --- a/forge-gui/res/cardsfolder/u/urza.txt +++ b/forge-gui/res/cardsfolder/u/urza.txt @@ -2,6 +2,6 @@ Name:Urza ManaCost:no cost Types:Vanguard HandLifeModifier:-1/+10 -A:AB$ DealDamage | ActivationZone$ Command | Cost$ 3 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | ActivationZone$ Command | Cost$ 3 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:https://downloads.cardforge.org/images/cards/VAN/Urza.full.jpg -Oracle:Hand -1, life +10\n{3}: Urza deals 1 damage to target creature or player. +Oracle:Hand -1, life +10\n{3}: Urza deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/u/urzas_rage.txt b/forge-gui/res/cardsfolder/u/urzas_rage.txt index ca8354f3530..20019710afa 100644 --- a/forge-gui/res/cardsfolder/u/urzas_rage.txt +++ b/forge-gui/res/cardsfolder/u/urzas_rage.txt @@ -3,9 +3,9 @@ ManaCost:2 R Types:Instant K:Kicker:8 R K:CARDNAME can't be countered. -A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SubAbility$ Kicked | SpellDescription$ CARDNAME deals 3 damage to target creature or player. If CARDNAME was kicked, instead it deals 10 damage to that creature or player and the damage can't be prevented. +A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SubAbility$ Kicked | SpellDescription$ CARDNAME deals 3 damage to any target. If CARDNAME was kicked, instead it deals 10 damage to that permanent or player and the damage can't be prevented. SVar:Kicked:DB$ DealDamage | Defined$ Targeted | NumDmg$ 10 | References$ 10 | NoPrevention$ True | Condition$ Kicked | ConditionDescription$ If Urza's Rage was kicked, SVar:X:Count$Kicked.0.3 SVar:Y:Count$Kicked.10.0 SVar:Picture:http://www.wizards.com/global/images/magic/general/urzas_rage.jpg -Oracle:Kicker {8}{R} (You may pay an additional {8}{R} as you cast this spell.)\nUrza's Rage can't be countered by spells or abilities.\nUrza's Rage deals 3 damage to target creature or player. If Urza's Rage was kicked, instead it deals 10 damage to that creature or player and the damage can't be prevented. +Oracle:Kicker {8}{R} (You may pay an additional {8}{R} as you cast this spell.)\nUrza's Rage can't be countered by spells or abilities.\nUrza's Rage deals 3 damage to any target. If Urza's Rage was kicked, instead it deals 10 damage to that permanent or player and the damage can't be prevented. diff --git a/forge-gui/res/cardsfolder/upcoming/affectionate_indrik.txt b/forge-gui/res/cardsfolder/upcoming/affectionate_indrik.txt new file mode 100644 index 00000000000..9ed6d1ed190 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/affectionate_indrik.txt @@ -0,0 +1,8 @@ +Name:Affectionate Indrik +ManaCost:5 G +Types:Creature Beast +PT:4/4 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigFight | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters the battlefield, you may have it fight target creature you don't control. (Each deals damage equal to its power to the other.) +SVar:TrigFight:DB$ Fight | Defined$ TriggeredCardLKICopy | ValidTgts$ Creature.YouDontCtrl | TgtPrompt$ Choose target creature you don't control +SVar:PlayMain1:TRUE +Oracle:When Affectionate Indrik enters the battlefield, you may have it fight target creature you don't control. (Each deals damage equal to its power to the other.) diff --git a/forge-gui/res/cardsfolder/upcoming/arboretum_elemental.txt b/forge-gui/res/cardsfolder/upcoming/arboretum_elemental.txt new file mode 100644 index 00000000000..eb2a019667d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/arboretum_elemental.txt @@ -0,0 +1,7 @@ +Name:Arboretum Elemental +ManaCost:7 G G +Types:Creature Elemental +PT:7/5 +K:Convoke +K:Hexproof +Oracle:Convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for {1} or one mana of the creature's color.)\nHexproof (This creature can't be the target of spells or abilities your opponents control.) diff --git a/forge-gui/res/cardsfolder/upcoming/arclight_phoenix.txt b/forge-gui/res/cardsfolder/upcoming/arclight_phoenix.txt new file mode 100644 index 00000000000..b0a5aba865d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/arclight_phoenix.txt @@ -0,0 +1,10 @@ +Name:Arclight Phoenix +ManaCost:3 R +Types:Creature Phoenix +PT:3/2 +K:Flying +K:Haste +T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | TriggerZones$ Battlefield | CheckSVar$ X | SVarCompare$ GE3 | Execute$ TrigReturn | OptionalDecider$ You | TriggerDescription$ At the beginning of combat on your turn, if you cast 3 or more instand and/or game this turn, you may return CARDNAME to the battlefield. +SVar:TrigReturn:DB$ ChangeZone | Defined$ Self | Origin$ Battlefield | Destination$ Battlefield +SVar:X:Count$ThisTurnCast_Card.Instant.YouCtrl+Sorcery.YouCtrl +Oracle:Flying, Haste\nAt the beginning of combat on your turn, if you cast 3 or more instants and/or sorceries this turn, you may return Arclight Phoenix to the battlefield. diff --git a/forge-gui/res/cardsfolder/upcoming/artful_takedown.txt b/forge-gui/res/cardsfolder/upcoming/artful_takedown.txt new file mode 100644 index 00000000000..c889e49229a --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/artful_takedown.txt @@ -0,0 +1,7 @@ +Name:Artful Takedown +ManaCost:2 U B +Types:Instant +A:SP$ Charm | Cost$ 2 U B | MinCharmNum$ 1 | CharmNum$ 2 | Choices$ TrigTap,TrigPumpCurse +SVar:TrigTap:DB$Tap | ValidTgts$ Creature | TgtPrompt$ Select target creature | SpellDescription$ Tap target creature. +SVar:TrigPumpCurse:DB$Pump| ValidTgts$ Creature | TgtPrompt$ Select target creature | IsCurse$ True | NumAtt$ -2 | NumDef$ -4 | SpellDescription$ Target creature gets -2/-4 until end of turn. +Oracle:Choose one or both —\n• Tap target creature.\n• Target creature gets -2/-4 until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/assassins_trophy.txt b/forge-gui/res/cardsfolder/upcoming/assassins_trophy.txt new file mode 100644 index 00000000000..ed67411a1ff --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/assassins_trophy.txt @@ -0,0 +1,7 @@ +Name:Assassin's Trophy +ManaCost:B G +Types:Instant +A:SP$ Destroy | Cost$ B G | ValidTgts$ Permanent.OppCtrl | TgtPrompt$ Select target permanent an opponent controls | SubAbility$ DBChange | SpellDescription$ Destroy target permanent an opponent controls. Its controller may search their library for a basic land card, put it onto the battlefield, then shuffle their library. +SVar:DBChange:DB$ ChangeZone | Optional$ True | Origin$ Library | Destination$ Battlefield | DefinedPlayer$ TargetedController | ChangeType$ Land.Basic | ChangeNum$ 1 | DefinedPlayer$ TargetedController | ShuffleNonMandatory$ True | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:Destroy target permanent an opponent controls. Its controller may search their library for a basic land card, put it onto the battlefield, then shuffle their library. diff --git a/forge-gui/res/cardsfolder/upcoming/assure_assemble.txt b/forge-gui/res/cardsfolder/upcoming/assure_assemble.txt new file mode 100644 index 00000000000..eb67e2204a3 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/assure_assemble.txt @@ -0,0 +1,16 @@ +Name:Assure +ManaCost:G/W G/W +Types:Instant +AlternateMode:Split +A:SP$ PutCounter | Cost$ G/W G/W | ValidTgts$ Creature | TgtPrompt$ Select target creature | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBPump | SpellDescription$ Put a +1/+1 counter on target creature. It gains indestructible until end of turn. +SVar:DBPump:DB$ Pump | Defined$ Targeted | KW$ Indestructible +Oracle:Put a +1/+1 counter on target creature. It gains indestructible until end of turn. + +ALTERNATE + +Name:Assemble +ManaCost:4 G W +Types:Instant +A:SP$ Token | Cost$ 4 G W | TokenAmount$ 3 | TokenScript$ wg_2_2_elf_knight_vigilance | SpellDescription$ Create three 2/2 green and white Elf Knight creature tokens with vigilance. +DeckHas:Ability$Token +Oracle:Create three 2/2 green and white Elf Knight creature tokens with vigilance. diff --git a/forge-gui/res/cardsfolder/upcoming/attendant_of_vraska.txt b/forge-gui/res/cardsfolder/upcoming/attendant_of_vraska.txt new file mode 100644 index 00000000000..d31ef72a28f --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/attendant_of_vraska.txt @@ -0,0 +1,8 @@ +Name:Attendant of Vraska +ManaCost:1 B G +Types:Creature Zombie Soldier +PT:3/3 +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | IsPresent$ Planeswalker.Vraska+YouCtrl | Execute$ TrigGainLife | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, if you control a Vraska planeswalker, you gain life equal to CARDNAME's power. +SVar:TrigGainLife:DB$GainLife | Defined$ You | LifeAmount$ X | References$ X +SVar:X:TriggeredCard$CardPower +Oracle:When Attendant of Vraska dies, if you control a Vraska planeswalker, you gain life equal to Attendant of Vraska's power. diff --git a/forge-gui/res/cardsfolder/upcoming/aurelia_exemplar_of_justice.txt b/forge-gui/res/cardsfolder/upcoming/aurelia_exemplar_of_justice.txt new file mode 100644 index 00000000000..5920bd231d3 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/aurelia_exemplar_of_justice.txt @@ -0,0 +1,12 @@ +Name:Aurelia, Exemplar of Justice +ManaCost:2 R W +Types:Legendary Creature Angel +PT:2/5 +K:Flying +K:Mentor +T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ DBPump | TriggerDescription$ At the beginning of combat on your turn, choose up to one target creature you control. Until end of turn, that creature gets +2/+0, gains trample if it's red, and gains vigilance if it's white. +SVar:DBPump:DB$ Pump | ValidTgts$ Creature.YouCtrl | NumAtt$ 2 | RememberTargets$ True | SubAbility$ DBPump1 +SVar:DBPump1:DB$Pump | Defined$ Remembered | KW$ Trample | ConditionDefined$ Remembered | ConditionPresent$ Card.Red | SubAbility$ DBPump2 +SVar:DBPump2:DB$Pump | Defined$ Remembered | KW$ Vigilance | ConditionDefined$ Remembered | ConditionPresent$ Card.White | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:Flying\nMentor (Whenever this creature attacks, put a +1/+1 counter on target attacking creature with lesser power.)\nAt the beginning of combat on your turn, choose up to one target creature you control. Until end of turn, that creature gets +2/+0, gains trample if it's red, and gains vigilance if it's white. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/barging_sergeant.txt b/forge-gui/res/cardsfolder/upcoming/barging_sergeant.txt new file mode 100644 index 00000000000..e0e24d93c6f --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/barging_sergeant.txt @@ -0,0 +1,7 @@ +Name:Barging Sergeant +ManaCost:4 R +Types:Creature Minotaur Soldier +PT:4/2 +K:Haste +K:Mentor +Oracle:Haste\nMentor (Whenever this creature attacks, put a +1/+1 counter on target attacking creature with lesser power.) diff --git a/forge-gui/res/cardsfolder/upcoming/barrier_of_bones.txt b/forge-gui/res/cardsfolder/upcoming/barrier_of_bones.txt new file mode 100644 index 00000000000..4c092100c9f --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/barrier_of_bones.txt @@ -0,0 +1,8 @@ +Name:Barrier of Bones +ManaCost:B +Types:Creature Skeleton Wall +PT:0/3 +K:Defender +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigSurveil | TriggerDescription$ When CARDNAME enters the battlefield, surveil 1. (Look at the top card of your library. You may put that card into your graveyard.) +SVar:TrigSurveil:DB$ Surveil | Amount$ 1 +Oracle:Defender\nWhen Barrier of Bones enters the battlefield, surveil 1. (Look at the top card of your library. You may put that card into your graveyard.) diff --git a/forge-gui/res/cardsfolder/upcoming/bartizan_bats.txt b/forge-gui/res/cardsfolder/upcoming/bartizan_bats.txt new file mode 100644 index 00000000000..f1a1ce35e7a --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/bartizan_bats.txt @@ -0,0 +1,6 @@ +Name:Bartizan Bats +ManaCost:3 B +Types:Creature Bat +PT:3/1 +K:Flying +Oracle:Flying diff --git a/forge-gui/res/cardsfolder/upcoming/beacon_bolt.txt b/forge-gui/res/cardsfolder/upcoming/beacon_bolt.txt new file mode 100644 index 00000000000..76ebddf053b --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/beacon_bolt.txt @@ -0,0 +1,8 @@ +Name:Beacon Bolt +ManaCost:1 U R +Types:Sorcery +K:Jump-start +A:SP$ DealDamage | Cost$ 1 U R | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ X | References$ X,Y | SpellDescription$ CARDNAME deals damage to target creature equal to the total number of instant and sorcery cards you own in exile and in your graveyard. +SVar:X:Count$ValidGraveyard Instant.YouOwn,Sorcery.YouOwn/Plus.Y +SVar:Y:Count$ValidExile Instant.YouOwn,Sorcery.YouOwn +Oracle:Beacon Bolt deals damage to target creature equal to the total number of instant and sorcery cards you own in exile and in your graveyard.\nJump-start (You may cast this card from your graveyard by discarding a card in addition to paying its other costs. Then exile this card.) diff --git a/forge-gui/res/cardsfolder/upcoming/beast_whisperer.txt b/forge-gui/res/cardsfolder/upcoming/beast_whisperer.txt new file mode 100644 index 00000000000..59dde217376 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/beast_whisperer.txt @@ -0,0 +1,7 @@ +Name:Beast Whisperer +ManaCost:2 G G +Types:Creature Elf Druid +PT:2/3 +T:Mode$ SpellCast | ValidCard$ Creature | ValidActivatingPlayer$ You | Execute$ TrigDraw | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast a creature spell, draw a card. +SVar:TrigDraw:DB$Draw | Defined$ You | NumCards$ 1 +Oracle:Whenever you cast a creature spell, draw a card. diff --git a/forge-gui/res/cardsfolder/upcoming/blade_instructor.txt b/forge-gui/res/cardsfolder/upcoming/blade_instructor.txt new file mode 100644 index 00000000000..a8969b6e857 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/blade_instructor.txt @@ -0,0 +1,6 @@ +Name:Blade Instructor +ManaCost:2 W +Types:Creature Human Soldier +PT:3/1 +K:Mentor +Oracle:Mentor (Whenever this creature attacks, put a +1/+1 counter on target attacking creature with lesser power.) diff --git a/forge-gui/res/cardsfolder/upcoming/blood_operative.txt b/forge-gui/res/cardsfolder/upcoming/blood_operative.txt new file mode 100644 index 00000000000..b2761115dc7 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/blood_operative.txt @@ -0,0 +1,10 @@ +Name:Blood Operative +ManaCost:1 B B +Types:Creature Vampire Assassin +PT:3/1 +K:Lifelink +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChangeZone | TriggerDescription$ When CARDNAME enters the battlefield, you may exile target card from a graveyard. +SVar:TrigChangeZone:DB$ChangeZone | Origin$ Graveyard | Destination$ Exile | ValidTgts$ Card | TgtPrompt$ Select target card in a graveyard +T:Mode$ Surveil | ValidPlayer$ You | Execute$ TrigReturn | TriggerZones$ Graveyard | IsPresent$ Card.StrictlySelf | PresentZone$ Graveyard | PresentPlayer$ You | TriggerDescription$ Whenever you surveil, if CARDNAME is in your graveyard, you may pay 3 life. If you do, return CARDNAME to your hand. +SVar:TrigReturn:AB$ChangeZone | Cost$ PayLife<3> | Defined$ Self | Origin$ Graveyard | Destination$ Hand +Oracle:Lifelink\nWhen Blood Operative enters the battlefield, you may exile target card from a graveyard.\nWhenever you surveil, if Blood Operative is in your graveyard, you may pay 3 life. If you do, return Blood Operative to your hand. diff --git a/forge-gui/res/cardsfolder/upcoming/book_devourer.txt b/forge-gui/res/cardsfolder/upcoming/book_devourer.txt new file mode 100644 index 00000000000..2119bd7e706 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/book_devourer.txt @@ -0,0 +1,13 @@ +Name:Book Devourer +ManaCost:5 R +Types:Creature Beast +PT:4/5 +K:Trample +T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | Execute$ TrigDiscard | CombatDamage$ True | OptionalDecider$ You | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, you may discard all the cards in your hand. If you do, draw that many cards. +SVar:TrigDiscard:DB$ Discard | Mode$ Hand | RememberDiscarded$ True | SubAbility$ DBDraw +SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ X | References$ X | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:Remembered$Amount +DeckHas:Ability$Discard +DeckHints:Keyword$Madness & Ability$Delirium +Oracle:Trample\nWhenever Book Devourer deals combat damage to a player, you may discard all the cards in your hand. If you do, draw that many cards. diff --git a/forge-gui/res/cardsfolder/upcoming/boros_challenger.txt b/forge-gui/res/cardsfolder/upcoming/boros_challenger.txt new file mode 100644 index 00000000000..5e2da20eaf6 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/boros_challenger.txt @@ -0,0 +1,7 @@ +Name:Boros Challenger +ManaCost:R W +Types:Creature Human Soldier +PT:2/3 +K:Mentor +A:AB$ Pump | Cost$ 2 R W | NumAtt$ +1 | NumDef$ +1 | SpellDescription$ CARDNAME gets +1/+1 until end of turn. +Oracle:Mentor (Whenever this creature attacks, put a +1/+1 counter on target attacking creature with lesser power.)\n{2}{R}{W}: Boros Challenger gets +1/+1 until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/boros_locket.txt b/forge-gui/res/cardsfolder/upcoming/boros_locket.txt new file mode 100644 index 00000000000..1ad69592f48 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/boros_locket.txt @@ -0,0 +1,9 @@ +Name:Boros Locket +ManaCost:3 +Types:Artifact +A:AB$ Mana | Cost$ T | Produced$ W | SpellDescription$ Add {W}. +A:AB$ Mana | Cost$ T | Produced$ R | SpellDescription$ Add {R}. +SVar:RemRandomDeck:True +DeckNeeds:Color$White | White +A:AB$ Draw | Cost$ RW RW RW RW T Sac<1/CARDNAME> | NumCards$ 2 | SpellDescription$ Draw two cards. +Oracle:{T}: Add {R} or {W}.\n{R/W}{R/W}{R/W}{R/W}, {T}, Sacrifice Boros Locket: Draw two cards. diff --git a/forge-gui/res/cardsfolder/upcoming/bounty_agent.txt b/forge-gui/res/cardsfolder/upcoming/bounty_agent.txt new file mode 100644 index 00000000000..6e698fe1bc8 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/bounty_agent.txt @@ -0,0 +1,7 @@ +Name:Bounty Agent +ManaCost:1 W +Types:Creature Human Soldier +PT:2/2 +K:Vigilance +A:AB$ Destroy | Cost$ T Sac<1/CARDNAME> | ValidTgts$ Creature.Legendary,Artifact.Legendary,Enchantment.Legendary | TgtPrompt$ Select target legendary permanent that's an artifact, creature or enchantment. | SpellDescription$ Destroy target legendary permanent that's an artifact, creature, or enchantment. +Oracle:Vigilance\n{T}, Sacrifice Bounty Agent: Destroy target legendary permanent that's an artifact, creature, or enchantment. diff --git a/forge-gui/res/cardsfolder/upcoming/bounty_of_might.txt b/forge-gui/res/cardsfolder/upcoming/bounty_of_might.txt new file mode 100644 index 00000000000..01be8b747cc --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/bounty_of_might.txt @@ -0,0 +1,7 @@ +Name:Bounty of Might +ManaCost:4 G G +Types:Instant +A:SP$ Pump | Cost$ 4 G G | ValidTgts$ Creature | TgtPrompt$ Select target creature (1) | NumAtt$ 3 | NumDef$ 3 | SubAbility$ DBPump | SpellDescription$ Target creature gets +3/+3 until end of turn. +SVar:DBPump:DB$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature (2) | NumAtt$ 3 | NumDef$ 3 | SubAbility$ DBPump2 | SpellDescription$ Target creature gets +3/+3 until end of turn. +SVar:DBPump2:DB$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature (3) | NumAtt$ 3 | NumDef$ 3 | SpellDescription$ Target creature gets +3/+3 until end of turn. +Oracle:Target creature gets +3/+3 until end of turn.\nTarget creature gets +3/+3 until end of turn.\nTarget creature gets +3/+3 until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/burglar_rat.txt b/forge-gui/res/cardsfolder/upcoming/burglar_rat.txt new file mode 100644 index 00000000000..9a59d585338 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/burglar_rat.txt @@ -0,0 +1,7 @@ +Name:Burglar Rat +ManaCost:1 B +Types:Creature Rat +PT:1/1 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDiscard | TriggerDescription$ When CARDNAME enters the battlefield, each opponent discards a card. +SVar:TrigDiscard:DB$ Discard | Defined$ Player.Opponent | NumCards$ 1 | Mode$ TgtChoose +Oracle:When Burglar Rat enters the battlefield, each opponent discards a card. diff --git a/forge-gui/res/cardsfolder/upcoming/camaraderie.txt b/forge-gui/res/cardsfolder/upcoming/camaraderie.txt new file mode 100644 index 00000000000..84b6367e858 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/camaraderie.txt @@ -0,0 +1,8 @@ +Name:Camaraderie +ManaCost:4 G W +Types:Sorcery +A:SP$ GainLife | Cost$ 4 G W | Defined$ You | LifeAmount$ X | References$ X | SubAbility$ DBDraw | SpellDescription$ You gain X life and draw X cards, where X is the number of creatures you control. Creatures you control get +1/+1 until end of turn. +SVar:DBDraw:DB$ Draw | NumCards$ X | References$ X | SubAbility$ DBPumpAll +SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Creature.YouCtrl | NumAtt$ +1 | NumDef$ +1 | SpellDescription$ Creatures you control get +1/+1 until end of turn. +SVar:X:Count$TypeYouCtrl.Creature +Oracle:You gain X life and draw X cards, where X is the number of creatures you control. Creatures you control get +1/+1 until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/candlelight_vigil.txt b/forge-gui/res/cardsfolder/upcoming/candlelight_vigil.txt new file mode 100644 index 00000000000..2efbfa16bd1 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/candlelight_vigil.txt @@ -0,0 +1,7 @@ +Name:Candlelight Vigil +ManaCost:3 W +Types:Enchantment Aura +K:Enchant creature +A:SP$ Attach | Cost$ 3 W | ValidTgts$ Creature | AILogic$ Pump +S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 3 | AddToughness$ 2 | AddKeyword$ Vigilance | Description$ Enchanted creature gets +3/+2 and has vigilance. +Oracle:Enchant creature\nEnchanted creature gets +3/+2 and has vigilance. diff --git a/forge-gui/res/cardsfolder/upcoming/capture_sphere.txt b/forge-gui/res/cardsfolder/upcoming/capture_sphere.txt new file mode 100644 index 00000000000..6964e65ae34 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/capture_sphere.txt @@ -0,0 +1,10 @@ +Name:Capture Sphere +ManaCost:3 U +Types:Enchantment Aura +K:Flash +K:Enchant creature +A:SP$ Attach | Cost$ 3 U | ValidTgts$ Creature | AILogic$ KeepTapped +S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddHiddenKeyword$ CARDNAME doesn't untap during your untap step. | Description$ Enchanted creature doesn't untap during its controller's untap step. +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigTap | TriggerDescription$ When CARDNAME enters the battlefield, tap enchanted creature. +SVar:TrigTap:DB$Tap | Defined$ Enchanted +Oracle:Flash\nEnchant creature\nWhen Capture Sphere enters the battlefield, tap enchanted creature.\nEnchanted creature doesn't untap during its controller's untap step. diff --git a/forge-gui/res/cardsfolder/upcoming/centaur_peacemaker.txt b/forge-gui/res/cardsfolder/upcoming/centaur_peacemaker.txt new file mode 100644 index 00000000000..672dcf2fc54 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/centaur_peacemaker.txt @@ -0,0 +1,7 @@ +Name:Centaur Peacemaker +ManaCost:1 G W +Types:Creature Centaur Cleric +PT:3/3 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigGainLife | TriggerDescription$ When CARDNAME enters the battlefield, each player gains 4 life. +SVar:TrigGainLife:DB$GainLife | Defined$ Player | LifeAmount$ 4 +Oracle:When Centaur Peacemaker enters the battlefield, each player gains 4 life. diff --git a/forge-gui/res/cardsfolder/upcoming/chamber_sentry.txt b/forge-gui/res/cardsfolder/upcoming/chamber_sentry.txt new file mode 100644 index 00000000000..69f7c2ac482 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/chamber_sentry.txt @@ -0,0 +1,11 @@ +Name:Chamber Sentry +ManaCost:X +Types:Artifact Creature Construct +PT:0/0 +K:etbCounter:P1P1:Y:no Condition:CARDNAME enters the battlefield with a +1/+1 counter on it for each color of mana spent to cast it. +SVar:X:Count$Converge +A:AB$ DealDamage | Announce$ Y | Cost$ Y T SubCounter | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ Y | References$ Y | SpellDescription$ CARDNAME deals Y damage to any target. +SVar:Y:Count$xPaid +A:AB$ ChangeZone | Cost$ W U B R G | Origin$ Graveyard | Destination$ Hand | ActivationZone$ Graveyard | SpellDescription$ Return CARDNAME from your graveyard to your hand. +SVar:DiscardMe:1 +Oracle:Chamber Sentry enters the battlefield with a +1/+1 counter on it for each color of mana spent to cast it.\n{X}, {T}, Remove X +1/+1 counters from Chamber Sentry: It deals X damage to any target.\n{W}{U}{B}{R}{G}: Return Chamber Sentry from your graveyard to your hand. diff --git a/forge-gui/res/cardsfolder/upcoming/chance_for_glory.txt b/forge-gui/res/cardsfolder/upcoming/chance_for_glory.txt new file mode 100644 index 00000000000..3ffb055f2f4 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/chance_for_glory.txt @@ -0,0 +1,8 @@ +Name:Chance for Glory +ManaCost:1 R W +Types:Instant +A:SP$ PumpAll | Cost$ 1 R W | ValidCards$ Creature.YouCtrl | KW$ Indestructible | SubAbility$ DBAddTurn | SpellDescription$ Creatures you control gain indestructible. Take an extra turn after this one. At the beginning of that turn's end step, you lose the game. +SVar:DBAddTurn:DB$ AddTurn | NumTurns$ 1 | ExtraTurnDelayedTrigger$ DBDelTrig | ExtraTurnDelayedTriggerExcute$ TrigLose | References$ DBDelTrig,TrigLose | SpellDescription$ Take an extra turn after this one. At the beginning of that turn's end step, you lose the game. +SVar:DBDelTrig:ThisTurn$ True | Mode$ Phase | Phase$ End of Turn | TriggerDescription$ At the beginning of that turn's end step, you lose the game. +SVar:TrigLose:DB$ LosesGame | Defined$ You +Oracle:Creatures you control gain indestructible. Take an extra turn after this one. At the beginning of that turn's end step, you lose the game. diff --git a/forge-gui/res/cardsfolder/upcoming/chemisters_insight.txt b/forge-gui/res/cardsfolder/upcoming/chemisters_insight.txt new file mode 100644 index 00000000000..15f8f605b3f --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/chemisters_insight.txt @@ -0,0 +1,6 @@ +Name:Chemister's Insight +ManaCost:3 U +Types:Instant +K:Jump-start +A:SP$ Draw | Cost$ 3 U | NumCards$ 2 | SpellDescription$ Draw two cards. +Oracle:Draw two cards.\nJump-start (You may cast this card from your graveyard by discarding a card in addition to paying its other costs. Then exile this card.) diff --git a/forge-gui/res/cardsfolder/upcoming/circuitous_route.txt b/forge-gui/res/cardsfolder/upcoming/circuitous_route.txt new file mode 100644 index 00000000000..99113917ed7 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/circuitous_route.txt @@ -0,0 +1,6 @@ +Name:Circuitous Route +ManaCost:3 G +Types:Sorcery +A:SP$ ChangeZone | Cost$ 3 G | Origin$ Library | Destination$ Battlefield | ChangeType$ Land.Basic,Card.Gate | ChangeNum$ 2 | Tapped$ True | SpellDescription$ Search your library for up to two basic land cards and/or Gate cards and put them onto the battlefield tapped, then shuffle your library. +SVar:RemRandomDeck:True +Oracle:Search your library for up to two basic land cards and/or Gate cards and put them onto the battlefield tapped, then shuffle your library. diff --git a/forge-gui/res/cardsfolder/upcoming/citywatch_sphinx.txt b/forge-gui/res/cardsfolder/upcoming/citywatch_sphinx.txt new file mode 100644 index 00000000000..53008ff4d60 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/citywatch_sphinx.txt @@ -0,0 +1,8 @@ +Name:Citywatch Sphinx +ManaCost:5 U +Types:Creature Sphinx +PT:5/4 +K:Flying +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigSurveil | TriggerDescription$ When CARDNAME dies, exile 2. (Look at the top two cards of your library, then put any number of them into your graveyard and the rest on the top of your library in any order.) +SVar:TrigSurveil:DB$Surveil | Defined$ You | Amount$ 2 +Oracle:Flying\nWhen Citywatch Sphinx dies, surveil 2. (Look at the top two cards of your library, then put any number of them into your graveyard and the rest on the top of your library in any order.) diff --git a/forge-gui/res/cardsfolder/upcoming/citywide_bust.txt b/forge-gui/res/cardsfolder/upcoming/citywide_bust.txt new file mode 100644 index 00000000000..0691176c885 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/citywide_bust.txt @@ -0,0 +1,5 @@ +Name:Citywide Bust +ManaCost:1 W W +Types:Sorcery +A:SP$ DestroyAll | Cost$ 1 W W | ValidCards$ Creature.toughnessGE4 | SpellDescription$ Destroy all creatures with toughness 4 or greater. +Oracle:Destroy all creatures with toughness 4 or greater. diff --git a/forge-gui/res/cardsfolder/upcoming/collar_the_culprit.txt b/forge-gui/res/cardsfolder/upcoming/collar_the_culprit.txt new file mode 100644 index 00000000000..1dc9f9b0b0f --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/collar_the_culprit.txt @@ -0,0 +1,5 @@ +Name:Collar the Culprit +ManaCost:3 W +Types:Instant +A:SP$ Destroy | Cost$ 3 W | ValidTgts$ Creature.toughnessGE4 | TgtPrompt$ Select target creature with toughness 4 or greater | SpellDescription$ Destroy target creature with toughness 4 or greater. +Oracle:Destroy target creature with toughness 4 or greater. diff --git a/forge-gui/res/cardsfolder/upcoming/command_the_storm.txt b/forge-gui/res/cardsfolder/upcoming/command_the_storm.txt new file mode 100644 index 00000000000..c1c985ea628 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/command_the_storm.txt @@ -0,0 +1,5 @@ +Name:Command the Storm +ManaCost:4 R +Types:Instant +A:SP$ DealDamage | Cost$ 4 R | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 5 | SpellDescription$ CARDNAME deals 5 damage to target creature. +Oracle:Command the Storm deals 5 damage to target creature. diff --git a/forge-gui/res/cardsfolder/upcoming/conclave_cavalier.txt b/forge-gui/res/cardsfolder/upcoming/conclave_cavalier.txt new file mode 100644 index 00000000000..813b7259d31 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/conclave_cavalier.txt @@ -0,0 +1,10 @@ +Name:Conclave Cavalier +ManaCost:G G W W +Types:Creature Centaur Knight +PT:4/4 +K:Vigilance +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigToken | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, create two green and green 2/2 Elf Knight creature tokens with vigilance. +SVar:TrigToken:DB$ Token | TokenAmount$ 2 | TokenScript$ wg_2_2_elf_knight_vigilance +DeckHas:Ability$Token +SVar:SacMe:4 +Oracle:Vigilance\nWhen Conclave Cavalier dies, create two green and white 2/2 Elf Knight creature tokens with vigilance. diff --git a/forge-gui/res/cardsfolder/upcoming/conclave_guildmage.txt b/forge-gui/res/cardsfolder/upcoming/conclave_guildmage.txt new file mode 100644 index 00000000000..453c2b920aa --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/conclave_guildmage.txt @@ -0,0 +1,8 @@ +Name:Conclave Guildmage +ManaCost:G W +Types:Creature Elf Cleric +PT:2/2 +A:AB$ PumpAll | Cost$ G T | ValidCards$ Creature.YouCtrl | KW$ Trample | SpellDescription$ Creatures you control gain trample until end of turn. +A:AB$ Token | Cost$ 5 W T | TokenAmount$ 1 | TokenScript$ wg_2_2_elf_knight_vigilance | SpellDescription$ Create a 2/2 green and white Elf Knight creature token with vigilance. +SVar:RemRandomDeck:True +Oracle:{G}, {T}: Creatures you control gain trample until end of turn.\n{5}{W}, {T}: Create a 2/2 green and white Elf Knight creature token with vigilance. diff --git a/forge-gui/res/cardsfolder/upcoming/conclave_tribunal.txt b/forge-gui/res/cardsfolder/upcoming/conclave_tribunal.txt new file mode 100644 index 00000000000..9c10d460f3c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/conclave_tribunal.txt @@ -0,0 +1,12 @@ +Name:Conclave Tribunal +ManaCost:3 W +Types:Enchantment +K:Convoke +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$ When CARDNAME enters the battlefield, exile target nonland permanent an opponent controls until CARDNAME leaves the battlefield. +SVar:TrigExile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | ValidTgts$ Permanent.nonLand+OppCtrl | TgtPrompt$ Select target nonland permanent an opponent controls | ConditionPresent$ Card.Self | SubAbility$ DBEffect +SVar:DBEffect:DB$ Effect | Triggers$ ComeBack | RememberObjects$ Targeted | ImprintCards$ Self | SVars$ TrigReturn,ExileSelf | ConditionPresent$ Card.Self | Duration$ Permanent | ForgetOnMoved$ Exile +SVar:ComeBack:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.IsImprinted | Execute$ TrigReturn | TriggerZones$ Command | TriggerController$ TriggeredCardController | Static$ True | TriggerDescription$ That permanent is exiled until EFFECTSOURCE leaves the battlefield +SVar:TrigReturn:DB$ ChangeZoneAll | Origin$ Exile | Destination$ Battlefield | ChangeType$ Card.IsRemembered | SubAbility$ ExileSelf +SVar:ExileSelf:DB$ ChangeZone | Origin$ Command | Destination$ Exile | Defined$ Self +SVar:OblivionRing:TRUE +Oracle:Convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for {1} or one mana of that creature's color.)\nWhen Conclave Tribunal enters the battlefield, exile target nonland permanent an opponent controls until Conclave Tribunal leaves the battlefield. diff --git a/forge-gui/res/cardsfolder/upcoming/connive.txt b/forge-gui/res/cardsfolder/upcoming/connive.txt new file mode 100644 index 00000000000..42cdcab3f73 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/connive.txt @@ -0,0 +1,15 @@ +Name:Connive +ManaCost:2 U/B U/B +Types:Sorcery +AlternateMode:Split +A:SP$ GainControl | Cost$ 2 U/B U/B | ValidTgts$ Creature.powerLE2 | TgtPrompt$ Select target creature with power 2 or less. | SpellDescription$ Gain control of target creature with power 2 or less. +Oracle:Gain control of target creature with power 2 or less. + +ALTERNATE + +Name:Concoct +ManaCost:3 U B +Types:Sorcery +A:SP$ Surveil | Cost$ 3 U B | Amount$ 3 | SubAbility$ DBReturn | SpellDescription$ Surveil 3, then return a creature card from your graveyard to the battlefield. +SVar:DBReturn:DB$ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ChangeType$ Creature.YouCtrl | ChangeNum$ 1 +Oracle:Surveil 3, then return a creature card from your graveyard to the battlefield. diff --git a/forge-gui/res/cardsfolder/upcoming/cosmotronic_wave.txt b/forge-gui/res/cardsfolder/upcoming/cosmotronic_wave.txt new file mode 100644 index 00000000000..41be8c8fa27 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/cosmotronic_wave.txt @@ -0,0 +1,7 @@ +Name:Cosmotronic Wave +ManaCost:3 B +Types:Sorcery +A:SP$ DamageAll | Cost$ 3 B | ValidCards$ Creature.OppCtrl | NumDmg$ 1 | SubAbility$ DBPumpAll | SpellDescription$ CARDNAME deals 1 damage to each creature your opponents control. Creatures your opponents control can't block this turn. +SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Creature.OppCtrl | KW$ HIDDEN CARDNAME can't block. | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:Cosmotronic Wave deals 1 damage to each creature your opponents control. Creatures your opponents control can't block this turn. diff --git a/forge-gui/res/cardsfolder/upcoming/creeping_chill.txt b/forge-gui/res/cardsfolder/upcoming/creeping_chill.txt new file mode 100644 index 00000000000..48aaddf378e --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/creeping_chill.txt @@ -0,0 +1,9 @@ +Name:Creeping Chill +ManaCost:3 B +Types:Sorcery +A:SP$ DamageAll | Cost$ 3 B | ValidPlayers$ Player.Opponent | NumDmg$ 3 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 3 damage to each opponent and you gain 3 life. +T:Mode$ ChangesZone | Origin$ Library | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigExile | OptionalDecider$ You | TriggerDescription$ When CARDNAME is put into your graveyard from your library, you may exile it. If you do, then a opponent and you gain 3 life. +SVar:TrigExile:DB$ ChangeZone | Defined$ TriggeredCard | Origin$ Graveyard | Destination$ Exile | SubAbility$ DBDamage +SVar:DBDamage:DB$ DealDamage | Defined$ Player.Opponent | NumDmg$ 3 | SubAbility$ DBGainLife +SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 3 +Oracle:Creeping Chill deals 3 damage to each opponent and you gain 3 life.\nWhen Creeping Chill is put into your graveyard from your library, you may exile it. If you do, Creeping Chill deals 3 damage to each opponent and you gain 3 life. diff --git a/forge-gui/res/cardsfolder/upcoming/crush_contraband.txt b/forge-gui/res/cardsfolder/upcoming/crush_contraband.txt new file mode 100644 index 00000000000..9a05edac2bb --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/crush_contraband.txt @@ -0,0 +1,7 @@ +Name:Crush Contraband +ManaCost:3 W +Types:Instant +A:SP$ Charm | Cost$ 3 W | MinCharmNum$ 1 | CharmNum$ 2 | Choices$ ExileArtifact,ExileEnchantment +SVar:ExileArtifact:DB$ ChangeZone | ValidTgts$ Artifact | TgtPrompt$ Select target artifact | Origin$ Battlefield | Destination$ Exile | SpellDescription$ Exile target artifact. +SVar:ExileEnchantment:DB$ ChangeZone | ValidTgts$ Enchantment | TgtPrompt$ Select target enchantment | Origin$ Battlefield | Destination$ Exile | SpellDescription$ Exile target enchantment. +Oracle:Choose one or both —\n• Exile target artifact.\n• Exile target enchantment. diff --git a/forge-gui/res/cardsfolder/upcoming/darkblade_agent.txt b/forge-gui/res/cardsfolder/upcoming/darkblade_agent.txt new file mode 100644 index 00000000000..0f933fee1e8 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/darkblade_agent.txt @@ -0,0 +1,9 @@ +Name:Darkblade Agent +ManaCost:1 U B +Types:Creature Human Assassin +PT:2/3 +S:Mode$ Continuous | Affected$ Card.Self | AddKeyword$ Deathtouch | AddTrigger$ Trig1 | AddSVar$ TrigDraw | CheckSVar$ X | SVarCompare$ GE1 | Description$ As long as you've surveilled this turn, CARDNAME has deathtouch and and whenever Whenever this creature deals combat damage to a player, draw a card. +SVar:Trig1:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigDraw | TriggerDescription$ Whenever this creature deals combat damage to a player, draw a card. +SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1 +SVar:X:Count$YouSurveilThisTurn +Oracle:As long as you've surveilled this turn, Darkblade Agent has deathtouch and "Whenever this creature deals combat damage to a player, draw a card." diff --git a/forge-gui/res/cardsfolder/upcoming/dawn_of_hope.txt b/forge-gui/res/cardsfolder/upcoming/dawn_of_hope.txt new file mode 100644 index 00000000000..b53adb802e6 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/dawn_of_hope.txt @@ -0,0 +1,8 @@ +Name:Dawn of Hope +ManaCost:1 W +Types:Enchantment +T:Mode$ LifeGained | ValidPlayer$ You | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigDraw | TriggerDescription$ Whenever you gain life, you may pay {2}. If you do, draw a card. +SVar:TrigDraw:AB$Draw | Cost$ 2 | Defined$ You | NumCards$ 1 +A:AB$ Token | Cost$ 3 W | TokenAmount$ 1 | TokenScript$ w_1_1_soldier_lifelink | SpellDescription$ Create a 1/1 white Soldier creature token with lifelink. +DeckHas:Ability$Token +Oracle:Whenever you gain life, you may pay {2}. If you do, draw a card.\n{3}{W}: Create a 1/1 white Soldier creature token with lifelink. diff --git a/forge-gui/res/cardsfolder/upcoming/dazzling_lights.txt b/forge-gui/res/cardsfolder/upcoming/dazzling_lights.txt new file mode 100644 index 00000000000..22111dd75c1 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/dazzling_lights.txt @@ -0,0 +1,6 @@ +Name:Dazzling Lights +ManaCost:U +Types:Instant +A:SP$ Pump | Cost$ U | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ -3 | IsCurse$ True | Subability$ DBSurveil | SpellDescription$ Target creature gets -3/-0 until end of turn. +SVar:DBSurveil:DB$ Surveil | Defined$ You | Amount$ 2 +Oracle:Target creature gets -3/-0 until end of turn.\nSurveil 2. (Look at the top two cards of your library, then put any number of them into your graveyard and the rest on the top of your library in any order.) diff --git a/forge-gui/res/cardsfolder/upcoming/deadly_visit.txt b/forge-gui/res/cardsfolder/upcoming/deadly_visit.txt new file mode 100644 index 00000000000..26792d9be3a --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/deadly_visit.txt @@ -0,0 +1,6 @@ +Name:Deadly Visit +ManaCost:3 B B +Types:Sorcery +A:SP$ Destroy | Cost$ 3 B B | ValidTgts$ Creature | TgtPrompt$ Select target creature | Subability$ DBSurveil | SpellDescription$ Destroy target creature. Surveil 2 (Look at the top two cards of your library, then put any number of them into your graveyard and the rest on top of your library in any order.) +SVar:DBSurveil:DB$ Surveil | Amount$ 2 +Oracle:Destroy target creature.\nSurveil 2. (Look at the top two cards of your library, then put any number of them into your graveyard and the rest on top of your library in any order.) diff --git a/forge-gui/res/cardsfolder/upcoming/deafening_clarion.txt b/forge-gui/res/cardsfolder/upcoming/deafening_clarion.txt new file mode 100644 index 00000000000..2b4a8e55cae --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/deafening_clarion.txt @@ -0,0 +1,7 @@ +Name:Deafening Clarion +ManaCost:1 R W +Types:Sorcery +A:SP$ Charm | Cost$ 1 R W | MinCharmNum$ 1 | CharmNum$ 2 | Choices$ DBDamage,TrigPumpAll +SVar:DBDamage:DB$ DamageAll | ValidCards$ Creature | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to each creature. +SVar:TrigPumpAll:DB$ PumpAll | ValidCards$ Creature.YouCtrl | KW$ Lifelink | SpellDescription$ Creatures you control gain lifelink until end of turn. +Oracle:Choose one or both —\n• Deafening Clarion deals 3 damage to each creature.\n• Creatures you control gain lifelink until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/demotion.txt b/forge-gui/res/cardsfolder/upcoming/demotion.txt new file mode 100644 index 00000000000..34235dda7fe --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/demotion.txt @@ -0,0 +1,7 @@ +Name:Demotion +ManaCost:W +Types:Enchantment Aura +K:Enchant creature +A:SP$ Attach | Cost$ W | ValidTgts$ Creature | AILogic$ Curse +S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddHiddenKeyword$ CARDNAME can't block. & CARDNAME's activated abilities can't be activated. | Description$ Enchanted creature can't block and its activated abilities can't be activated. +Oracle:Enchant creature\nEnchanted creature can't block and its activated abilities can't be activated. diff --git a/forge-gui/res/cardsfolder/upcoming/devious_cover_up.txt b/forge-gui/res/cardsfolder/upcoming/devious_cover_up.txt new file mode 100644 index 00000000000..59d20e7bc9b --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/devious_cover_up.txt @@ -0,0 +1,6 @@ +Name:Devious Cover-Up +ManaCost:2 U U +Types:Instant +A:SP$ Counter | Cost$ 2 U U | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Card | Destination$ Exile | SubAbility$ DBChangeZone | SpellDescription$ Counter target spell. If that spell is countered this way, exile it instead of putting it into its owner's graveyard. You may shuffle up to four target cards from your graveyard into your library. +SVar:DBChangeZone:DB$ChangeZone | Origin$ Graveyard | Destination$ Library | ValidTgts$ Card.YouCtrl | TgtPrompt$ Select target card from your graveyard | TargetMin$ 0 | TargetMax$ 4 | Shuffle$ True +Oracle:Counter target spell. If that spell is countered this way, exile it instead of putting it into its owner's graveyard.\nYou may shuffle up to four target cards from your graveyard into your library. diff --git a/forge-gui/res/cardsfolder/upcoming/devkarin_dissident.txt b/forge-gui/res/cardsfolder/upcoming/devkarin_dissident.txt new file mode 100644 index 00000000000..4d67d1fbb45 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/devkarin_dissident.txt @@ -0,0 +1,6 @@ +Name:Devkarin Dissident +ManaCost:1 G +Types:Creature Elf Warrior +PT:2/2 +A:AB$ Pump | Cost$ 4 G | NumAtt$ +2 | NumDef$ +2 | SpellDescription$ CARDNAME gets +2/+2 until end of turn. +Oracle:{4}{G}: Devkarin Dissident gets +2/+2 until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/dimir_informant.txt b/forge-gui/res/cardsfolder/upcoming/dimir_informant.txt new file mode 100644 index 00000000000..d40265680da --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/dimir_informant.txt @@ -0,0 +1,7 @@ +Name:Dimir Informant +ManaCost:2 U +Types:Creature Human Rogue +PT:1/4 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigSurveil | TriggerDescription$ When CARDNAME enters the battlefield, then scry 2. (To scry 2, look at the top two cards of your library, then put any number of them into your graveyard and the rest on the top of your library in any order.) +SVar:TrigSurveil:DB$Surveil | Defined$ You | Amount$ 2 +Oracle:When Dimir Informant enters the battlefield, surveil 2. (Look at the top two cards of your library, then put any number of them into your graveyard and the rest on the top of your library in any order.) diff --git a/forge-gui/res/cardsfolder/upcoming/dimir_locket.txt b/forge-gui/res/cardsfolder/upcoming/dimir_locket.txt new file mode 100644 index 00000000000..4b1aad4c90d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/dimir_locket.txt @@ -0,0 +1,9 @@ +Name:Dimir Locket +ManaCost:3 +Types:Artifact +A:AB$ Mana | Cost$ T | Produced$ U | SpellDescription$ Add {U}. +A:AB$ Mana | Cost$ T | Produced$ B | SpellDescription$ Add {B}. +DeckNeeds:Color$Blue | Black +A:AB$ Draw | Cost$ UB UB UB UB T Sac<1/CARDNAME> | NumCards$ 2 | SpellDescription$ Draw two cards. +SVar:RemRandomDeck:True +Oracle:{T}: Add {U} or {B}.\n{U/B}{U/B}{U/B}{U/B}, {T}, Sacrifice Dimir Locket: Draw two cards. diff --git a/forge-gui/res/cardsfolder/upcoming/dimir_spybug.txt b/forge-gui/res/cardsfolder/upcoming/dimir_spybug.txt new file mode 100644 index 00000000000..a0ab2b0ff30 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/dimir_spybug.txt @@ -0,0 +1,9 @@ +Name:Dimir Spybug +ManaCost:U B +Types:Creature Insect +PT:1/1 +K:Flying +K:Menace +T:Mode$ Surveil | ValidPlayer$ You | Execute$ TrigPutCounter | TriggerZones$ Battlefield | TriggerDescription$ Whenever you surveil, put a +1/+1 counter on CARDNAME. +SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 +Oracle:Flying\nMenace (This creature can't be blocked except by two or more creatures.)\nWhenever you surveil, put a +1/+1 counter on Dimir Spybug. diff --git a/forge-gui/res/cardsfolder/upcoming/direct_current.txt b/forge-gui/res/cardsfolder/upcoming/direct_current.txt new file mode 100644 index 00000000000..a99a9d71565 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/direct_current.txt @@ -0,0 +1,7 @@ +Name:Direct Current +ManaCost:1 R R +Types:Sorcery +K:Flash +K:Jump-start +A:SP$ DealDamage | Cost$ 1 R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to any target. +Oracle:Direct Current deals 2 damage to any target.\nJump-start (You may cast this card from your graveyard by discarding a card in addition to paying its other costs. Then exile this card.) diff --git a/forge-gui/res/cardsfolder/upcoming/disinformation_campaign.txt b/forge-gui/res/cardsfolder/upcoming/disinformation_campaign.txt new file mode 100644 index 00000000000..3af7a783fff --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/disinformation_campaign.txt @@ -0,0 +1,9 @@ +Name:Disinformation Campaign +ManaCost:1 U B +Types:Enchantment +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerDescription$ When CARDNAME enters the battlefield, you draw a card and each opponent discards a card. +SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1 | SubAbility$ DBDiscard +SVar:DBDiscard:DB$ Discard | Defined$ Player.Opponent | NumCards$ 1 | Mode$ TgtChoose +T:Mode$ Surveil | ValidPlayer$ You | Execute$ TrigBounce | TriggerZones$ Battlefield | TriggerDescription$ Whenever you surveil, return Disinformation Campaign to its owner's hand. +SVar:TrigBounce:DB$ChangeZone | Origin$ Battlefield | Destination$ Hand | Defined$ Self +Oracle:When Disinformation Campaign enters the battlefield, you draw a card and each opponent discards a card.\nWhenever you surveil, return Disinformation Campaign to its owner's hand. diff --git a/forge-gui/res/cardsfolder/upcoming/district_guide.txt b/forge-gui/res/cardsfolder/upcoming/district_guide.txt new file mode 100644 index 00000000000..af8b4244030 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/district_guide.txt @@ -0,0 +1,7 @@ +Name:District Guide +ManaCost:2 G +Types:Creature Elf Scout +PT:2/2 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.Self | Execute$ TrigChange | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters the battlefield, you may search your library for a basic land card or Gate card, reveal it, put it into your hand, then shuffle your library. +SVar:TrigChange:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Land.Basic,Card.Gate | ChangeNum$ 1 | ShuffleNonMandatory$ True +Oracle:When District Guide enters the battlefield, you may search your library for a basic land card or Gate card, reveal it, put it into your hand, then shuffle your library. diff --git a/forge-gui/res/cardsfolder/upcoming/doom_whisperer.txt b/forge-gui/res/cardsfolder/upcoming/doom_whisperer.txt new file mode 100644 index 00000000000..ea6bdf4f39a --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/doom_whisperer.txt @@ -0,0 +1,8 @@ +Name:Doom Whisperer +ManaCost:3 B B +Types:Creature Nightmare Demon +PT:6/6 +K:Flying +K:Trample +A:AB$ Surveil | Cost$ PayLife<2> | Amount$ 2 | SpellDescription$ Surveil 2. (Look at the top two cards of your library, then put any number of them into your graveyard and the rest on the top of your library in any order.) +Oracle:Flying, trample\nPay 2 life: Surveil 2. (Look at the top two cards of your library, then put any number of them into your graveyard and the rest on the top of your library in any order.) diff --git a/forge-gui/res/cardsfolder/upcoming/douser_of_lights.txt b/forge-gui/res/cardsfolder/upcoming/douser_of_lights.txt new file mode 100644 index 00000000000..b8e87562860 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/douser_of_lights.txt @@ -0,0 +1,5 @@ +Name:Douser of Lights +ManaCost:4 B +Types:Creature Horror +PT:4/5 +Oracle: diff --git a/forge-gui/res/cardsfolder/upcoming/dream_eater.txt b/forge-gui/res/cardsfolder/upcoming/dream_eater.txt new file mode 100644 index 00000000000..fddbdb90ac9 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/dream_eater.txt @@ -0,0 +1,11 @@ +Name:Dream Eater +ManaCost:4 U U +Types:Creature Nightmare Sphinx +PT:4/3 +K:Flash +K:Flying +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigSurveil | TriggerDescription$ When CARDNAME enters the battlefield, surveil 4. When you do, you may return target nonland permanent an opponent controls to its owner's hand. +SVar:TrigSurveil:DB$ Surveil | Defined$ You | Amount$ 4 | SubAbility$ TrigImmediate +SVar:TrigImmediate:DB$ ImmediateTrigger | Execute$ TrigBounce | OptionalDecider$ You | TriggerDescription$ When you do, you may return target nonland permanent an opponent controls to its owner's hand. +SVar:TrigBounce:DB$ ChangeZone | ValidTgts$ Permanent.nonLand+OppCtrl | TgtPrompt$ Select target nonland permanent an opponent controls | Origin$ Battlefield | Destination$ Hand +Oracle:Flash\nFlying\nWhen Dream Eater enters the battlefield, surveil 4. When you do, you may return target nonland permanent an opponent controls to its owner's hand. (To surveil 4, look at the top four cards of your library, then put any number of them into your graveyard and the rest on top of your library in any order.) diff --git a/forge-gui/res/cardsfolder/upcoming/drowned_secrets.txt b/forge-gui/res/cardsfolder/upcoming/drowned_secrets.txt new file mode 100644 index 00000000000..2bf1b893bc0 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/drowned_secrets.txt @@ -0,0 +1,7 @@ +Name:Drowned Secrets +ManaCost:1 U +Types:Enchantment +T:Mode$ SpellCast | ValidCard$ Card.Blue | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigMill | TriggerDescription$ Whenever you cast a blue spell, target player puts the top two cards if their library into their graveyard. +SVar:TrigMill:DB$Mill | NumCards$ 2 | ValidTgts$ Player | TgtPrompt$ Select target player +SVar:BuffedBy:Card.Blue +Oracle:Whenever you cast a blue spell, target player puts the top two cards if their library into their graveyard. diff --git a/forge-gui/res/cardsfolder/upcoming/electrostatic_field.txt b/forge-gui/res/cardsfolder/upcoming/electrostatic_field.txt new file mode 100644 index 00000000000..fbb8fdd3b2d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/electrostatic_field.txt @@ -0,0 +1,8 @@ +Name:Electrostatic Field +ManaCost:1 R +Types:Creature Wall +PT:0/4 +K:Defender +T:Mode$ SpellCast | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ When you cast an instant or sorcery spell, CARDNAME deals 1 damage to each opponent. +SVar:TrigDealDamage:DB$ DealDamage | Defined$ Player.Opponent | NumDmg$ 1 +Oracle:Defender\nWhen you cast an instant or sorcery spell, Electrostatic Field deals 1 damage to each opponent. diff --git a/forge-gui/res/cardsfolder/upcoming/emmara_soul_of_the_accord.txt b/forge-gui/res/cardsfolder/upcoming/emmara_soul_of_the_accord.txt new file mode 100644 index 00000000000..44da9af66e5 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/emmara_soul_of_the_accord.txt @@ -0,0 +1,7 @@ +Name:Emmara, Soul of the Accord +ManaCost:G W +Types:Legendary Creature Elf Cleric +PT:2/2 +T:Mode$ Taps | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ Whenever CARDNAME becomes tapped, create a 1/1 white Soldier creature token with lifelink. +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ w_1_1_soldier_lifelink +Oracle:Whenever Emmara, Soul of the Accord becomes tapped, create a 1/1 white Soldier creature token with lifelink. diff --git a/forge-gui/res/cardsfolder/upcoming/enhanced_surveillance.txt b/forge-gui/res/cardsfolder/upcoming/enhanced_surveillance.txt new file mode 100644 index 00000000000..d8bb73b521c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/enhanced_surveillance.txt @@ -0,0 +1,8 @@ +Name:Enhanced Surveillance +ManaCost:1 U +Types:Enchantment +R:Event$ Surveil | ActiveZones$ Battlefield | ValidPlayer$ You | ReplaceWith$ AddTwoMore | Description$ You may look at an additional two cards each you surveil. +SVar:AddTwoMore:DB$ ReplaceEffect | VarName$ SurveilNum | VarValue$ X | References$ X +SVar:X:ReplaceCount$SurveilNum/Plus.2 +A:AB$ ChangeZoneAll | Cost$ Exile<1/CARDNAME> | ChangeType$ Card.YouOwn | Origin$ Graveyard | Destination$ Library | Shuffle$ True | SpellDescription$ Shuffle your graveyard into your library. +Oracle:You may look at an additional two cards each you surveil.\nExile Enhanced Surveillance: Shuffle your graveyard into your library. diff --git a/forge-gui/res/cardsfolder/upcoming/erratic_cyclops.txt b/forge-gui/res/cardsfolder/upcoming/erratic_cyclops.txt new file mode 100644 index 00000000000..269664a5423 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/erratic_cyclops.txt @@ -0,0 +1,10 @@ +Name:Erratic Cyclops +ManaCost:3 R +Types:Creature Cyclops Shaman +PT:0/8 +K:Trample +T:Mode$ SpellCast | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever you cast an instant or sorcery spell, CARDNAME gets +X/+0 until end of turn, where X is that spell's converted mana cost. +SVar:TrigPump:DB$ Pump | NumAtt$ +X | References$ X +SVar:X:TriggerCount$CastSACMC +SVar:BuffedBy:Instant,Sorcery +Oracle:Trample\nWhenever you cast an instant or sorcery spell, Erratic Cyclops gets +X/+0 until end of turn, where X is that spell's converted mana cost. diff --git a/forge-gui/res/cardsfolder/upcoming/erstwhile_trooper.txt b/forge-gui/res/cardsfolder/upcoming/erstwhile_trooper.txt new file mode 100644 index 00000000000..e02c42633a7 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/erstwhile_trooper.txt @@ -0,0 +1,6 @@ +Name:Erstwhile Trooper +ManaCost:1 B G +Types:Creature Zombie Soldier +PT:2/2 +A:AB$ Pump | Cost$ Discard<1/Creature> | Defined$ Self | NumAtt$ +2 | NumDef$ +2 | KW$ Trample | ActivationLimit$ 1 | SpellDescription$ CARDNAME gets +2/+2 and gains trample until end of turn. Activate this ability only once each turn. +Oracle:Discard a creature card: Erstwhile Trooper gets +2/+2 and gains trample until end of turn. Activate this ability only once each turn. diff --git a/forge-gui/res/cardsfolder/upcoming/expansion.txt b/forge-gui/res/cardsfolder/upcoming/expansion.txt new file mode 100644 index 00000000000..4715f8381dc --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/expansion.txt @@ -0,0 +1,16 @@ +Name:Expansion +ManaCost:U/R +Types:Instant +AlternateMode: Split +A:SP$ CopySpellAbility | Cost$ U/R | ValidTgts$ Instant+cmcLE4,Sorcery+cmcLE4 | TargetType$ Spell | SpellDescription$ Copy target instant or sorcery spell with converted mana cost 4 or less. You may choose new targets for the copy. +Oracle:Copy target instant or sorcery spell with converted mana cost 4 or less. You may choose new targets for the copy. + +ALTERNATE + +Name:Explosion +ManaCost:X U U R R +Types:Instant +A:SP$ DealDamage | Cost$ X U U R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SubAbility$ DBDraw | SpellDescription$ CARDNAME deals X damage to any target. Target player draws X cards. +SVar:DBDraw:DB$Draw | NumCards$ X | ValidTgts$ Player | TgtPrompt$ Select target player | References$ X +SVar:X:Count$xPaid +Oracle:Explosion deals X damage to any target. Target player draws X cards. diff --git a/forge-gui/res/cardsfolder/upcoming/fearless_halberdier.txt b/forge-gui/res/cardsfolder/upcoming/fearless_halberdier.txt new file mode 100644 index 00000000000..ca239b1d45c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/fearless_halberdier.txt @@ -0,0 +1,5 @@ +Name:Fearless Halberdier +ManaCost:2 R +Types:Creature Human Warrior +PT:3/2 +Oracle: diff --git a/forge-gui/res/cardsfolder/upcoming/find.txt b/forge-gui/res/cardsfolder/upcoming/find.txt new file mode 100644 index 00000000000..ae7d8cdb240 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/find.txt @@ -0,0 +1,15 @@ +Name:Find +ManaCost:B/G +Types:Sorcery +AlternateMode:Split +A:SP$ ChangeZone | Cost$ B/G | Origin$ Graveyard | Destination$ Hand | TargetMin$ 0 | TargetMax$ 2 | TgtPrompt$ Choose target creature card in your graveyard | ValidTgts$ Creature.YouOwn | SpellDescription$ Return up to two target creature cards from your graveyard to your hand. +Oracle:Return up to two target creature cards from your graveyard to your hand. + +ALTERNATE + +Name:Finality +ManaCost:4 B G +Types:Sorcery +A:SP$ PutCounter | Cost$ 4 B G | ValidTgts$ Creature.YouCtrl | CounterNum$ 2 | CounterType$ P1P1 | SubAbility$ DBPumpAll | SpellDescription$ You may put two +1/+1 counters on a creature you control. Then all creatures get -4/-4 until end of turn. +SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Creature | NumAtt$ -4 | NumDef$ -4 | IsCurse$ True +Oracle:You may put two +1/+1 counters on a creature you control. Then all creatures get -4/-4 until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/fire_urchin.txt b/forge-gui/res/cardsfolder/upcoming/fire_urchin.txt new file mode 100644 index 00000000000..4e4e22a9def --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/fire_urchin.txt @@ -0,0 +1,9 @@ +Name:Fire Urchin +ManaCost:1 R +Types:Creature Elemental +PT:1/3 +K:Trample +T:Mode$ SpellCast | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever you cast an instant or sorcery spell, CARDNAME gets +1/+0 until end of turn. +SVar:TrigPump:DB$ Pump | Defined$ Self | NumAtt$ 1 +SVar:BuffedBy:Instant,Sorcery +Oracle:Trample\nWhenever you cast an instant or sorcery spell, Fire Urchin gets +1/+0 until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/fireminds_research.txt b/forge-gui/res/cardsfolder/upcoming/fireminds_research.txt new file mode 100644 index 00000000000..b2a23c01b04 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/fireminds_research.txt @@ -0,0 +1,11 @@ +Name:Firemind's Research +ManaCost:U R +Types:Enchantment +T:Mode$ SpellCast | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ DBPutCounter | TriggerDescription$ Whenever you cast an instant or sorcery spell, put a charge counter on CARDNAME. +SVar:DBPutCounter:DB$PutCounter | Defined$ Self | CounterType$ CHARGE | CounterNum$ 1 +SVar:BuffedBy:Instant,Sorcery +DeckHints:Type$Instant | Sorcery +A:AB$ Draw | Cost$ 1 U SubCounter<2/CHARGE> | NumCards$ 1 | SpellDescription$ Draw a card. +A:AB$ DealDamage | Cost$ 1 R SubCounter<5/CHARGE> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 5 | SpellDescription$ CARDNAME deals 5 damage to any target. +SVar:RemRandomDeck:True +Oracle:Whenever you cast an instant or sorcery spell, put a charge counter on Firemind's Research.\n{1}{U}, Remove two charge counters from Firemind's Research: Draw a card.\n{1}{R}, Remove five charge counters from Firemind's Research: It deals 5 damage to any target. diff --git a/forge-gui/res/cardsfolder/upcoming/flight_of_equenauts.txt b/forge-gui/res/cardsfolder/upcoming/flight_of_equenauts.txt new file mode 100644 index 00000000000..753f12abfda --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/flight_of_equenauts.txt @@ -0,0 +1,7 @@ +Name:Flight of Equenauts +ManaCost:7 W +Types:Creature Human Knight +PT:4/5 +K:Flying +K:Convoke +Oracle:Convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for {1} or one mana of that creature's color.)\nFlying diff --git a/forge-gui/res/cardsfolder/upcoming/flower.txt b/forge-gui/res/cardsfolder/upcoming/flower.txt new file mode 100644 index 00000000000..54a446e486e --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/flower.txt @@ -0,0 +1,14 @@ +Name:Flower +ManaCost:G/W +Types:Sorcery +AlternateMode: Split +A:SP$ ChangeZone | Cost$ G/W | Origin$ Library | Destination$ Hand | ChangeType$ Land.Basic,Plains.Plains | ChangeNum$ 1 | SpellDescription$ Search your library for a basic Forest or Plains card, reveal it, put it into your hand, then shuffle your library. +Oracle:Search your library for a basic Forest or Plains card, reveal it, put it into your hand, then shuffle your library. + +ALTERNATE + +Name:Flourish +ManaCost:4 G W +Types:Sorcery +A:SP$ PumpAll | Cost$ 4 G W | ValidCards$ Creature.YouCtrl | NumAtt$ +2 | NumDef$ +2 | SpellDescription$ Creatures you control get +2/+2 until end of turn. +Oracle:Creatures you control get +2/+2 until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/fresh_faced_recruit.txt b/forge-gui/res/cardsfolder/upcoming/fresh_faced_recruit.txt new file mode 100644 index 00000000000..7703946ddcc --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/fresh_faced_recruit.txt @@ -0,0 +1,6 @@ +Name:Fresh-Faced Recruit +ManaCost:1 R/W +Types:Creature Human Solider +PT:2/1 +S:Mode$ Continuous | Affected$ Card.Self | AddKeyword$ First Strike | Condition$ PlayerTurn | Description$ As long as it's your turn, CARDNAME has first strike. +Oracle:As long as it's your turn, Fresh-Faced Recruit has first strike. diff --git a/forge-gui/res/cardsfolder/upcoming/garrison_sergeant.txt b/forge-gui/res/cardsfolder/upcoming/garrison_sergeant.txt new file mode 100644 index 00000000000..1c941bf70b8 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/garrison_sergeant.txt @@ -0,0 +1,8 @@ +Name:Garrison Sergeant +ManaCost:3 R W +Types:Creature Viashino Soldier +PT:3/3 +S:Mode$ Continuous | Affected$ Card.Self | AddKeyword$ Double Strike | CheckSVar$ X | SVarCompare$ GE1 | Description$ CARDNAME has double strike as long as you control a Gate. +SVar:X:Count$Valid Gate.YouCtrl +DeckHints:Type$Gate +Oracle:Garrison Sergeant has double strike as long as you control a Gate. diff --git a/forge-gui/res/cardsfolder/upcoming/gatekeeper_gargoyle.txt b/forge-gui/res/cardsfolder/upcoming/gatekeeper_gargoyle.txt new file mode 100644 index 00000000000..1dac11407ca --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/gatekeeper_gargoyle.txt @@ -0,0 +1,10 @@ +Name:Gatekeeper Gargoyle +ManaCost:6 +Types:Artifact Creature Gargoyle +PT:3/3 +K:Flying +K:etbCounter:P1P1:X:no Condition:CARDNAME enters the battlefield with a +1/+1 counter on it for each Gate you control. +SVar:X:Count$Valid Gate.YouCtrl +DeckHints:Type$Gate +SVar:NeedsToPlayVar:X GE1 +Oracle:Flying\nGargoyle Guardian enters the battlefield with a +1/+1 counter on it for each Gate you control. diff --git a/forge-gui/res/cardsfolder/upcoming/gateway_plaza.txt b/forge-gui/res/cardsfolder/upcoming/gateway_plaza.txt new file mode 100644 index 00000000000..096518f2c6d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/gateway_plaza.txt @@ -0,0 +1,8 @@ +Name:Gateway Plaza +Types:Land Gate +K:CARDNAME enters the battlefield tapped. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigSac | TriggerDescription$ When CARDNAME enters the battlefield, sacrifice it unless you pay {1}. +SVar:TrigSac:DB$Sacrifice | Defined$ Self | UnlessCost$ 1 | UnlessPayer$ You +SVar:NeedsToPlay:Land.untapped+YouCtrl +A:AB$ Mana | Cost$ T | Produced$ Any | SpellDescription$ Add one mana of any color. +Oracle:Gateway Plaza enters the battlefield tapped.\nWhen Gateway Plaza enters the battlefield, sacrifice it unless you pay {1}.\n{T}: Add one mana of any color. diff --git a/forge-gui/res/cardsfolder/upcoming/generous_stray.txt b/forge-gui/res/cardsfolder/upcoming/generous_stray.txt new file mode 100644 index 00000000000..93fbe342fac --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/generous_stray.txt @@ -0,0 +1,7 @@ +Name:Generous Stray +ManaCost:2 G +Types:Creature Cat +PT:1/2 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerDescription$ When CARDNAME enters the battlefield, draw a card. +SVar:TrigDraw:DB$Draw | Defined$ You | NumCards$ 1 +Oracle:When Generous Stray enters the battlefield, draw a card. diff --git a/forge-gui/res/cardsfolder/upcoming/gird_for_battle.txt b/forge-gui/res/cardsfolder/upcoming/gird_for_battle.txt new file mode 100644 index 00000000000..305c43656e3 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/gird_for_battle.txt @@ -0,0 +1,5 @@ +Name:Gird for Battle +ManaCost:W +Types:Sorcery +A:SP$ PutCounter | Cost$ W | ValidTgts$ Creature | TargetMin$ 0 | TargetMax$ 2 | CounterType$ P1P1 | CounterNum$ 1 | SpellDescription$ Put a +1/+1 counter on each of up to two target creatures. +Oracle:Put a +1/+1 counter on each of up to two target creatures. diff --git a/forge-gui/res/cardsfolder/upcoming/glaive_of_the_guildpact.txt b/forge-gui/res/cardsfolder/upcoming/glaive_of_the_guildpact.txt new file mode 100644 index 00000000000..e42184fb9e8 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/glaive_of_the_guildpact.txt @@ -0,0 +1,10 @@ +Name:Glaive of the Guildpact +ManaCost:2 +Types:Artifact Equipment +S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ X | AddKeyword$ Vigilance & Menace | Description$ Equipped creature gets +1/+0 for each Gate you control and has vigilance and menace. +SVar:X:Count$Valid Gate.YouCtrl +S:Mode$ Continuous | Affected$ Gate.YouCtrl | AddPower$ X | AddKeyword$ Vigilance & Menace | Description$ Equipped creature gets +1/+0 for each Gate you control and has vigilance and menace. +SVar:X:Count$Valid Gate.YouCtrl +SVar:BuffedBy:Gate +DeckHints:Type$Gate +Oracle:Equipped creature gets +1/+0 for each Gate you control and has vigilance and menace. (A creature with menace can't be blocked except by two or more creatures.)\nEquip {3} ({3}: Attach to target creature you control. Equip only as a sorcery.) diff --git a/forge-gui/res/cardsfolder/upcoming/glowspore_shaman.txt b/forge-gui/res/cardsfolder/upcoming/glowspore_shaman.txt new file mode 100644 index 00000000000..518b808f7c1 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/glowspore_shaman.txt @@ -0,0 +1,8 @@ +Name:Glowspore Shaman +ManaCost:B G +Types:Creature Elf Shaman +PT:3/1 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigMill | TriggerDescription$ When CARDNAME enters the battlefield, put the top three cards of your library into your graveyard. You may put a land card from your graveyard on top of your library. +SVar:TrigMill:DB$ Mill | NumCards$ 3 | Defined$ You | SubAbility$ DBChangeZone +SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Library | OptionalDecider$ You | ChangeType$ Land.YouOwn | ChangeNum$ 1 | Hidden$ True | Optional$ True +Oracle:When Glowspore Shaman enters the battlefield, put the top three cards of your library into your graveyard. You may put a land card from your graveyard on top of your library. diff --git a/forge-gui/res/cardsfolder/upcoming/goblin_banneret.txt b/forge-gui/res/cardsfolder/upcoming/goblin_banneret.txt new file mode 100644 index 00000000000..5419f82bfbc --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/goblin_banneret.txt @@ -0,0 +1,7 @@ +Name:Goblin Banneret +ManaCost:R +Types:Creature Goblin Soldier +PT:1/1 +K:Mentor +A:AB$ Pump | Cost$ 1 R | NumAtt$ +2 | SpellDescription$ CARDNAME gets +2/+0 until end of turn. +Oracle:Mentor (Whenever this creature attacks, put a +1/+1 counter on target attacking creature with lesser power.)\n{1}{R}: Goblin Banneret gets +2/+0 until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/goblin_cratermaker.txt b/forge-gui/res/cardsfolder/upcoming/goblin_cratermaker.txt new file mode 100644 index 00000000000..687705ba8b7 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/goblin_cratermaker.txt @@ -0,0 +1,8 @@ +Name:Goblin Cratermaker +ManaCost:1 R +Types:Creature Goblin Warrior +PT:2/2 +A:AB$ Charm | Cost$ 1 Sac<1/CARDNAME> | Choices$ DBDamage,DBDestroy +SVar:DBDamage:DB$ DealDamage | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target creature. +SVar:DBDestroy:DB$ Destroy | ValidTgts$ Permanent.nonLand+Colorless | SpellDescription$ Destroy target colorless nonland permanent. +Oracle:{1}, Sacrifice Goblin Cratermaker: Choose one —\n• Goblin Cratermaker deals 2 damage to target creature.\n• Destroy target colorless nonland permanent. diff --git a/forge-gui/res/cardsfolder/upcoming/goblin_locksmith.txt b/forge-gui/res/cardsfolder/upcoming/goblin_locksmith.txt new file mode 100644 index 00000000000..82b251f8dbc --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/goblin_locksmith.txt @@ -0,0 +1,8 @@ +Name:Goblin Locksmith +ManaCost:1 R +Types:Creature Goblin Rogue +PT:2/1 +T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigEffect | TriggerDescription$ Whenever CARDNAME attacks, creatures with defender can't block this turn. +SVar:TrigEffect:DB$Effect | Name$ CARDNAME Effect | StaticAbilities$ KWPump +SVar:KWPump:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.withDefender | AddHiddenKeyword$ CARDNAME can't block. | Description$ Creatures with defender can't block this turn. +Oracle:Whenever Goblin Locksmith attacks, creatures with defender can't block this turn. diff --git a/forge-gui/res/cardsfolder/upcoming/golgari_findbroker.txt b/forge-gui/res/cardsfolder/upcoming/golgari_findbroker.txt new file mode 100644 index 00000000000..2541c28284b --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/golgari_findbroker.txt @@ -0,0 +1,7 @@ +Name:Golgari Findbroker +ManaCost:B B G G +Types:Creature Elf Shaman +PT:3/4 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChange | TriggerDescription$ When CARDNAME enters the battlefield, return target permanent card from your graveyard to your hand. +SVar:TrigChange:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Permanent.YouCtrl +Oracle:When Golgari Findbroker enters the battlefield, return target permanent card from your graveyard to your hand. diff --git a/forge-gui/res/cardsfolder/upcoming/golgari_locket.txt b/forge-gui/res/cardsfolder/upcoming/golgari_locket.txt new file mode 100644 index 00000000000..3f7e389434b --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/golgari_locket.txt @@ -0,0 +1,10 @@ +Name:Golgari Locket +ManaCost:3 +Types:Artifact +A:AB$ Mana | Cost$ T | Produced$ B | SpellDescription$ Add {B}. +A:AB$ Mana | Cost$ T | Produced$ G | SpellDescription$ Add {G}. +SVar:RemRandomDeck:True +DeckNeeds:Color$Black | Green +A:AB$ Draw | Cost$ BG BG BG BG T Sac<1/CARDNAME> | NumCards$ 2 | SpellDescription$ Draw two cards. +SVar:RemRandomDeck:True +Oracle:{T}: Add {B} or {G}.\n{B/G}{B/G}{B/G}{B/G}, {T}, Sacrifice Golgari Locket: Draw two cards. diff --git a/forge-gui/res/cardsfolder/upcoming/golgari_raiders.txt b/forge-gui/res/cardsfolder/upcoming/golgari_raiders.txt new file mode 100644 index 00000000000..2edb4dec836 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/golgari_raiders.txt @@ -0,0 +1,9 @@ +Name:Golgari Raiders +ManaCost:3 G +Types:Creature Elf Warrior +PT:0/0 +K:Haste +K:etbCounter:P1P1:X:no Condition:Undergrowth - CARDNAME enters the battlefield with a +1/+1 counter on it for each creature card in your graveyard. +SVar:X:Count$LastStateGraveyard Creature.YouCtrl +SVar:NeedsToPlayVar:X GE3 +Oracle:Haste\nUndergrowth — Golgari Raiders enters the battlefield with a +1/+1 counter on it for each creature card in your graveyard. diff --git a/forge-gui/res/cardsfolder/upcoming/grappling_sundew.txt b/forge-gui/res/cardsfolder/upcoming/grappling_sundew.txt new file mode 100644 index 00000000000..66bf15170b9 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/grappling_sundew.txt @@ -0,0 +1,8 @@ +Name:Grappling Sundew +ManaCost:1 G +Types:Creature Plant +PT:0/4 +K:Defender +K:Reach +A:AB$ Pump | Cost$ 4 G | Defined$ Self | KW$ Indestructible | SpellDescription$ CARDNAME gains indestructible until end of turn. +Oracle:Defender, reach\n{4}{G}: Grappling Sundew gains indestructible until end of turn. (Damage and effects that say "destroy" don't destroy this creature.) diff --git a/forge-gui/res/cardsfolder/upcoming/gravitic_punch.txt b/forge-gui/res/cardsfolder/upcoming/gravitic_punch.txt new file mode 100644 index 00000000000..e0a982d228d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/gravitic_punch.txt @@ -0,0 +1,8 @@ +Name:Gravitic Punch +ManaCost:3 R +Types:Sorcery +K:Jump-start +A:SP$ Pump | Cost$ 3 R | ValidTgts$ Creature.YouCtrl | AILogic$ PowerDmg | TgtPrompt$ Select target creature you control | SubAbility$ SoulsDamage | StackDescription$ None | SpellDescription$ Target creature you control deals damage equal to its power to target player. +SVar:SoulsDamage:DB$ DealDamage | ValidTgts$ Player | TargetUnique$ True | AILogic$ PowerDmg | NumDmg$ X | References$ X | TgtPrompt$ Select target player +SVar:X:ParentTargeted$CardPower +Oracle:Target creature you control deals damage equal to its power to target player.\nJump-start (You may cast this card from your graveyard by discarding a card in addition to paying its other costs. Then exile this card.) diff --git a/forge-gui/res/cardsfolder/upcoming/gruesome_menagerie.txt b/forge-gui/res/cardsfolder/upcoming/gruesome_menagerie.txt new file mode 100644 index 00000000000..46c3ea0f004 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/gruesome_menagerie.txt @@ -0,0 +1,9 @@ +Name:Gruesome Menagerie +ManaCost:3 B B +Types:Sorcery +A:SP$ ChooseCard | Cost$ 3 B B | Defined$ You | Choices$ Creature.YouOwn+cmcEQ1 | ChoiceZone$ Graveyard | Amount$ 1 | SubAbility$ DBChoose2 | RememberChosen$ True | SpellDescription$ Choose a creature card with converted mana cost 1 in your graveyard, then do the same for creature cards with converted mana costs 2 and 3. Return those cards to the battlefield. +SVar:DBChoose2:DB$ ChooseCard | Defined$ You | Choices$ Creature.YouOwn+cmcEQ2 | ChoiceZone$ Graveyard | Amount$ 1 | SubAbility$ DBChoose3 | RememberChosen$ True | SpellDescription$ Choose a creature card with converted mana cost 2 in your graveyard. +SVar:DBChoose3:DB$ ChooseCard | Defined$ You | Choices$ Creature.YouOwn+cmcEQ3 | ChoiceZone$ Graveyard | Amount$ 1 | SubAbility$ DBReturn | RememberChosen$ True | SpellDescription$ Choose a creature card with converted mana cost 3 in your graveyard. +SVar:DBReturn:DB$ ChangeZoneAll | Origin$ Graveyard | Destination$ Battlefield | ChangeType$ Card.IsRemembered | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:Choose a creature card with converted mana cost 1 in your graveyard, then do the same for creature cards with converted mana costs 2 and 3. Return those cards to the battlefield. diff --git a/forge-gui/res/cardsfolder/upcoming/guild_summit.txt b/forge-gui/res/cardsfolder/upcoming/guild_summit.txt new file mode 100644 index 00000000000..8d3e5aefb68 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/guild_summit.txt @@ -0,0 +1,13 @@ +Name:Guild Summit +ManaCost:2 U +Types:Enchantment +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ GuestList | TriggerDescription$ When CARDNAME enters the battlefield, you may tap any number of untapped Gates you control. Draw a card for each Gate tapped this way. +SVar:GuestList:DB$ ChooseCard | Defined$ You | MinAmount$ 0 | Amount$ X | References$ X | Choices$ Gate.untapped+YouCtrl | ChoiceTitle$ Choose any number of untapped Gates you control | ChoiceZone$ Battlefield | RememberChosen$ True | SubAbility$ TrigTap +SVar:TrigTap:DB$ Tap | Defined$ Remembered | SubAbility$ DBDraw +SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ Y | SubAbility$ DBCleanup | References$ Y +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:Count$Valid Creature.YouCtrl +SVar:Y:Remembered$Amount +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Gate.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever a Gate enters the battlefield under your control, draw a card. +SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1 +Oracle:When Guild Summit enters the battlefield, you may tap any number of untapped Gates you control. Draw a card for each Gate tapped this way.\nWhenever a Gate enters the battlefield under your control, draw a card. diff --git a/forge-gui/res/cardsfolder/upcoming/guildmages_forum.txt b/forge-gui/res/cardsfolder/upcoming/guildmages_forum.txt new file mode 100644 index 00000000000..4b9d86f5a07 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/guildmages_forum.txt @@ -0,0 +1,5 @@ +Name:Guildmages' Forum +Types:Land +A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}. +A:AB$ Mana | Cost$ 1 T | Produced$ Any | AddsCounters$ Card.IsCreature+MultiColor_P1P1_1 | SpellDescription$ Add one mana of any color. If that mana is spent on a multicolored creature spell, that creature enters the battlefield with an additional +1/+1 counter on it. +Oracle:{T}: Add {C}.\n{1}, {T}: Add one mana of any color. If that mana is spent on a multicolored creature spell, that creature enters the battlefield with an additional +1/+1 counter on it. diff --git a/forge-gui/res/cardsfolder/upcoming/haazda_marshal.txt b/forge-gui/res/cardsfolder/upcoming/haazda_marshal.txt new file mode 100644 index 00000000000..5eb0f677523 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/haazda_marshal.txt @@ -0,0 +1,8 @@ +Name:Haazda Marshal +ManaCost:W +Types:Creature Human Soldier +PT:1/1 +T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | CheckSVar$ AttackerTest | SVarCompare$ GE2 | NoResolvingCheck$ True | Execute$ TrigToken | TriggerDescription$ Whenever CARDNAME and at least two other creatures attack, create a 1/1 white Soldier creature token with lifelink. +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ w_1_1_soldier_lifelink +SVar:AttackerTest:Count$Valid Creature.attacking+Other +Oracle:Whenever Haazda Marshal and at least two other creatures attack, create a 1/1 white Soldier creature token with lifelink. diff --git a/forge-gui/res/cardsfolder/upcoming/hammer_dropper.txt b/forge-gui/res/cardsfolder/upcoming/hammer_dropper.txt new file mode 100644 index 00000000000..d0d0d0a3193 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/hammer_dropper.txt @@ -0,0 +1,6 @@ +Name:Hammer Dropper +ManaCost:2 R W +Types:Creature Giant Soldier +PT:5/2 +K:Mentor +Oracle:Mentor (Whenever this creature attacks, put a +1/+1 counter on target attacking creature with lesser power.) diff --git a/forge-gui/res/cardsfolder/upcoming/hatchery_spider.txt b/forge-gui/res/cardsfolder/upcoming/hatchery_spider.txt new file mode 100644 index 00000000000..5776e901e48 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/hatchery_spider.txt @@ -0,0 +1,9 @@ +Name:Hatchery Spider +ManaCost:5 G G +Types:Creature Spider +PT:5/7 +K:Reach +T:Mode$ SpellCast | ValidCard$ Card.Self | Execute$ TrigDig | TriggerDescription$ Undergrowth - When you cast this spell, reveal the top X cards of your library, where X is the number of creature cards in your graveyard. You may put a green permanent card with converted mana cost X or less from among them onto the battlefield. Put the rest on the bottom of your library in a random order. +SVar:TrigDig:DB$ Dig | DigNum$ X | Reveal$ True | References$ X | ChangeNum$ 1 | ChangeValid$ Permanent.Green+cmcLEX | DestinationZone$ Battlefield | AILogic$ AtOppEndOfTurn | Optional$ True | RestRandomOrder$ True +SVar:X:Count$TypeInYourYard.Creature +Oracle:Reach\nUndergrowth — When you cast this spell, reveal the top X cards of your library, where X is the number of creature cards in your graveyard. You may put a green permanent card with converted mana cost X or less from among them onto the battlefield. Put the rest on the bottom of your library in a random order. diff --git a/forge-gui/res/cardsfolder/upcoming/healers_hawk.txt b/forge-gui/res/cardsfolder/upcoming/healers_hawk.txt new file mode 100644 index 00000000000..9e34fcde92d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/healers_hawk.txt @@ -0,0 +1,7 @@ +Name:Healer's Hawk +ManaCost:W +Types:Creature Bird +PT:1/1 +K:Flying +K:Lifelink +Oracle:Flying, lifelink \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/hellkite_whelp.txt b/forge-gui/res/cardsfolder/upcoming/hellkite_whelp.txt new file mode 100644 index 00000000000..0aa13fd3a9b --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/hellkite_whelp.txt @@ -0,0 +1,8 @@ +Name:Hellkite Whelp +ManaCost:4 R +Types:Creature Dragon +PT:3/34 +K:Flying +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ Whenever CARDNAME attacks, it deals 1 damage to target creature defending player controls. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature.DefenderCtrl | TgtPrompt$ Select target creature defending player controls | NumDmg$ 1 +Oracle:Flying\nWhenever Hellkite Whelp attacks, it deals 1 damage to target creature defending player controls. diff --git a/forge-gui/res/cardsfolder/upcoming/hired_poisoner.txt b/forge-gui/res/cardsfolder/upcoming/hired_poisoner.txt new file mode 100644 index 00000000000..a8c8f810acd --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/hired_poisoner.txt @@ -0,0 +1,6 @@ +Name:Hired Poisoner +ManaCost:B +Types:Creature Human Assassin +PT:1/1 +K:Deathtouch +Oracle:Deathtouch diff --git a/forge-gui/res/cardsfolder/upcoming/hitchclaw_recluse.txt b/forge-gui/res/cardsfolder/upcoming/hitchclaw_recluse.txt new file mode 100644 index 00000000000..96575340242 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/hitchclaw_recluse.txt @@ -0,0 +1,6 @@ +Name:Hitchclaw Recluse +ManaCost:2 G +Types:Creature Spider +PT:1/4 +K:Reach +Oracle:Reach (This creature can block creatures with flying.) diff --git a/forge-gui/res/cardsfolder/upcoming/house_guildmage.txt b/forge-gui/res/cardsfolder/upcoming/house_guildmage.txt new file mode 100644 index 00000000000..ebfdeada89c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/house_guildmage.txt @@ -0,0 +1,7 @@ +Name:House Guildmage +ManaCost:U B +Types:Creature Human Wizard +PT:2/2 +A:AB$ Pump | Cost$ 1 U T | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ HIDDEN This card doesn't untap during your next untap step. | Permanent$ True | IsCurse$ True | SpellDescription$ Target creature doesn't untap during its controller's next untap step. +A:AB$ Surveil | Cost$ 2 B T | SurveilNum$ 2 | SpellDescription$ Surveil 2. (Look at the top two cards of your library, then put any number of them into your graveyard and the rest on top of your library in any order.) +Oracle:{1}{U}, {T}: Target creature doesn't untap during its controller's next untap step.\n{2}{B}, {T}: Surveil 2. (Look at the top two cards of your library, then put any number of them into your graveyard and the rest on top of your library in any order.) diff --git a/forge-gui/res/cardsfolder/upcoming/hunted_witness.txt b/forge-gui/res/cardsfolder/upcoming/hunted_witness.txt new file mode 100644 index 00000000000..3f6aa70e840 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/hunted_witness.txt @@ -0,0 +1,9 @@ +Name:Hunted Witness +ManaCost:W +Types:Creature Human +PT:1/1 +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigToken | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, create a 1/1 white Soldier creature token with lifelink. +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ w_1_1_soldier_lifelink +DeckHas:Ability$Token +SVar:SacMe:1 +Oracle:When Hunted Witness dies, create a 1/1 white Soldier creature token with lifelink. diff --git a/forge-gui/res/cardsfolder/upcoming/hypothesizzle.txt b/forge-gui/res/cardsfolder/upcoming/hypothesizzle.txt new file mode 100644 index 00000000000..efbdaa67b82 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/hypothesizzle.txt @@ -0,0 +1,7 @@ +Name:Hypothesizzle +ManaCost:3 U R +Types:Instant +A:SP$ Draw | Cost$ 3 U R | NumCards$ 2 | SubAbility$ DBImmediateTrigger | SpellDescription$ Draw two cards. Then you may discard a nonland card. When you do, CARDNAME deals 4 damage to target creature. +SVar:DBImmediateTrigger:DB$ ImmediateTrigger | Execute$ TrigDealDmg | TriggerDescription$ You may discard a nonland card. When you do, CARDNAME deals 4 damage to target creature. | UnlessCost$ Discard<1/Card.nonLand/nonland card> | UnlessPayer$ You | UnlessSwitched$ True +SVar:TrigDealDmg:DB$ DealDamage | Cost$ Discard<1/Card.nonLand/nonland card> | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 4 | SpellDescription$ CARDNAME deals 4 damage to target creature. +Oracle:Draw two cards. Then you may discard a nonland card. When you do, Hypothesizzle deals 4 damage to target creature. diff --git a/forge-gui/res/cardsfolder/upcoming/impervious_greatwurm.txt b/forge-gui/res/cardsfolder/upcoming/impervious_greatwurm.txt new file mode 100644 index 00000000000..ca520c9b1ef --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/impervious_greatwurm.txt @@ -0,0 +1,7 @@ +Name:Impervious Greatwurm +ManaCost:7 G G G +Types:Creature Wurm +PT:16/16 +K:Convoke +K:Indestructible +Oracle:Convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for {1} or one mana of that creature's color.)\nIndestructible diff --git a/forge-gui/res/cardsfolder/upcoming/inescapable_blaze.txt b/forge-gui/res/cardsfolder/upcoming/inescapable_blaze.txt new file mode 100644 index 00000000000..4ff270eac4b --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/inescapable_blaze.txt @@ -0,0 +1,6 @@ +Name:Inescapable Blaze +ManaCost:4 R R +Types:Instant +K:CARDNAME can't be countered. +A:SP$ DealDamage | Cost$ 4 R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 6 | SpellDescription$ CARDNAME deals 6 damage to any target. +Oracle:This spell can't be countered.\nInescapable Flame deals 6 damage to any target. diff --git a/forge-gui/res/cardsfolder/upcoming/inspiring_unicorn.txt b/forge-gui/res/cardsfolder/upcoming/inspiring_unicorn.txt new file mode 100644 index 00000000000..1e285d0acca --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/inspiring_unicorn.txt @@ -0,0 +1,7 @@ +Name:Inspiring Unicorn +ManaCost:2 W W +Types:Creature Unicorn +PT:2/2 +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigPumpAll | TriggerDescription$ Whenever CARDNAME attacks, creatures you control get +1/+1 until end of turn. +SVar:TrigPumpAll:DB$PumpAll | ValidCards$ Creature.YouCtrl | NumAtt$ +1 | NumDef$ +1 +Oracle:Whenever Inspiring Unicorn attacks, creatures you control get +1/+1 until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/integrity.txt b/forge-gui/res/cardsfolder/upcoming/integrity.txt new file mode 100644 index 00000000000..3af1e8d425c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/integrity.txt @@ -0,0 +1,15 @@ +Name:Integrity +ManaCost:R/W +Types:Instant +AlternateMode: Split +A:SP$ Pump | Cost$ R/W | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +2 | NumDef$ +2 | SpellDescription$ Target creature gets +2/+2 until end of turn. +Oracle:Target creature gets +2/+2 until end of turn. + +ALTERNATE + +Name:Intervention +ManaCost:2 R W +Types:Instant +A:SP$ DealDamage | Cost$ 2 R W | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SubAbility$ DBGainLife | SpellDescription$ Target player deals 3 damage to any target and you gain 3 life. +SVar:DBGainLife:DB$GainLife | Defined$ You | LifeAmount$ 3 +Oracle:Intervention deals 3 damage to any target and you gain 3 life. diff --git a/forge-gui/res/cardsfolder/upcoming/intrusive_packbeast.txt b/forge-gui/res/cardsfolder/upcoming/intrusive_packbeast.txt new file mode 100644 index 00000000000..04cf335a14f --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/intrusive_packbeast.txt @@ -0,0 +1,9 @@ +Name:Intrusive Packbeast +ManaCost:4 W +Types:Creature Beast +PT:3/3 +K:Vigilance +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigTap | TriggerDescription$ When CARDNAME enters the battlefield, tap up to two target creatures your opponents control. +SVar:TrigTap:DB$Tap | TargetMin$ 0 | TargetMax$ 2 | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature your opponent controls +SVar:PlayMain1:TRUE +Oracle:Vigilance\nWhen Intrusive Packbeast enters the battlefield, tap up to two target creatures your opponents control. diff --git a/forge-gui/res/cardsfolder/upcoming/invert.txt b/forge-gui/res/cardsfolder/upcoming/invert.txt new file mode 100644 index 00000000000..e317e2bbce3 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/invert.txt @@ -0,0 +1,16 @@ +Name:Invert +ManaCost:U/R +Types:Instant +AlternateMode: Split +A:SP$ Pump | Cost$ U/R | ValidTgts$ Creature | TargetMin$ 0 | TargetMax$ 2 | TgtPrompt$ Select target creature | KW$ HIDDEN CARDNAME's power and toughness of each of CARDNAME. | SpellDescription$ Switch the power and toughness of each of up to two target creatures. +Oracle:Switch the power and toughness of each of up to two target creatures. + +ALTERNATE + +Name:Invent +ManaCost:4 U R +Types:Instant +A:SP$ ChangeZone | Cost$ 4 U R | Origin$ Library | Destination$ Hand | ChangeType$ Instant | ChangeNum$ 1 | SubAbility$ DBChange | SpellDescription$ Search your library for and instant permanent and/or a sorcery card, reveal them, put them into your hand, then shuffle your library. +SVar:DBChange:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Sorcery | ChangeNum$ 1 | Shuffle$ True +SVar:RemRandomDeck:True +Oracle:Search your library for an instant card and/or a sorcery card, reveal them, put them into your hand, then shuffle your library. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/ionize.txt b/forge-gui/res/cardsfolder/upcoming/ionize.txt new file mode 100644 index 00000000000..02fd1ec9db3 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/ionize.txt @@ -0,0 +1,6 @@ +Name:Ionize +ManaCost:1 U R +Types:Instant +A:SP$ Counter | Cost$ 1 U R | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Card | SubAbility$ DBDealDamage | SpellDescription$ Counter target spell. CARDNAME deals 2 damage to that spell's controller. +SVar:DBDealDamage:DB$DealDamage | NumDmg$ 2 | Defined$ TargetedController +Oracle:Counter target spell. Ionize deals 2 damage to that spell's controller. diff --git a/forge-gui/res/cardsfolder/upcoming/ironshell_beetle.txt b/forge-gui/res/cardsfolder/upcoming/ironshell_beetle.txt new file mode 100644 index 00000000000..61ddcf70609 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/ironshell_beetle.txt @@ -0,0 +1,7 @@ +Name:Ironshell Beetle +ManaCost:1 G +Types:Creature Insect +PT:1/1 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPut | TriggerDescription$ When CARDNAME enters the battlefield, put a +1/+1 counter on target creature. +SVar:TrigPut:DB$PutCounter | ValidTgts$ Creature | TgtPrompt$ Select target creature | CounterType$ P1P1 | CounterNum$ 1 +Oracle:When Ironshell Beetle enters the battlefield, put a +1/+1 counter on target creature. diff --git a/forge-gui/res/cardsfolder/upcoming/izoni_thousand_eyed.txt b/forge-gui/res/cardsfolder/upcoming/izoni_thousand_eyed.txt new file mode 100644 index 00000000000..c5fd38febe0 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/izoni_thousand_eyed.txt @@ -0,0 +1,10 @@ +Name:Izoni, Thousand-Eyed +ManaCost:2 B B G G +Types:Legendary Creature Elf Shaman +PT:2/3 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ Undergrowth - When CARDNAME enters the battlefield, create a 1/1 black and green Insect creature token for each creature card in your graveyard. +SVar:TrigToken:DB$Token | TokenAmount$ X | TokenName$ Insect | TokenTypes$ Creature,Insect | TokenOwner$ You | TokenColors$ Black,Green | TokenPower$ 1 | TokenToughness$ 1 | TokenImage$ bg 1 1 insect grn | References$ X | TokenScript$ bg_1_1_insect +SVar:X:Count$TypeInYourYard.Creature +A:AB$ GainLife | Cost$ B G Sac<1/Creature.Other/another creature> | Defined$ You | LifeAmount$ 1 | SubAbility$ DBDraw | SpellDescription$ You gain 1 life and draw a card. +SVar:DBDraw:DB$ Draw | NumCards$ 1 +Oracle:Undergrowth — When Izoni, Thousand-Eyed enters the battlefield, create a 1/1 black and green Insect creature token for each creature card in your graveyard.\n{B}{G}, Sacrifice another creature: You gain 1 life and draw a card. diff --git a/forge-gui/res/cardsfolder/upcoming/izzet_locket.txt b/forge-gui/res/cardsfolder/upcoming/izzet_locket.txt new file mode 100644 index 00000000000..f057ab3d226 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/izzet_locket.txt @@ -0,0 +1,9 @@ +Name:Izzet Locket +ManaCost:3 +Types:Artifact +A:AB$ Mana | Cost$ T | Produced$ U | SpellDescription$ Add {U}. +A:AB$ Mana | Cost$ T | Produced$ R | SpellDescription$ Add {R}. +DeckNeeds:Color$Blue | Red +A:AB$ Draw | Cost$ UR UR UR UR T Sac<1/CARDNAME> | NumCards$ 2 | SpellDescription$ Draw two cards. +SVar:RemRandomDeck:True +Oracle:{T}: Add {U} or {R}.\n{U/R}{U/R}{U/R}{U/R}, {T}, Sacrifice Izzet Locket: Draw two cards. diff --git a/forge-gui/res/cardsfolder/upcoming/join_shields.txt b/forge-gui/res/cardsfolder/upcoming/join_shields.txt new file mode 100644 index 00000000000..ea170378453 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/join_shields.txt @@ -0,0 +1,6 @@ +Name:Join Shields +ManaCost:3 G W +Types:Instant +A:SP$ UntapAll | Cost$ 3 G W | ValidCards$ Creature.YouCtrl | SubAbility$ DBPumpAll | SpellDescription$ Untap all creatures you control. They gain hexproof and indestructible until end of turn. (They can't be the targets of spells or abilities your opponents control. Damage and effects that say, destroy destroy permanents don't destroy them.) +SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Creature.YouCtrl | KW$ Hexproof & Indestructible +Oracle:Untap all creatures you control. They gain hexproof and indestructible until end of turn. (They can't be the targets of spells or abilities your opponents control. Damage and effects that say "destroy" don't destroy them.) diff --git a/forge-gui/res/cardsfolder/upcoming/justice_strike.txt b/forge-gui/res/cardsfolder/upcoming/justice_strike.txt new file mode 100644 index 00000000000..0f5ab66eb97 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/justice_strike.txt @@ -0,0 +1,6 @@ +Name:Justice Strike +ManaCost:R W +Types:Instant +A:SP$ DealDamage | Cost$ R W | ValidTgts$ Creature | TgtPrompt$ Select target creature | DamageSource$ Targeted | NumDmg$ X | References$ X | SpellDescription$ Target creature deals damage to itself equal to its power. +SVar:X:Targeted$CardPower +Oracle:Target creature deals damage to itself equal to its power. diff --git a/forge-gui/res/cardsfolder/upcoming/knight_of_autumn.txt b/forge-gui/res/cardsfolder/upcoming/knight_of_autumn.txt new file mode 100644 index 00000000000..907e199df3c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/knight_of_autumn.txt @@ -0,0 +1,10 @@ +Name:Knight of Autumn +ManaCost:1 G W +Types:Creature Dryad Knight +PT:2/1 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigCharm | TriggerDescription$ When CARDNAME enters the battlefield, ABILITY +SVar:TrigCharm:DB$ Charm | Choices$ DBPump,DBDestroy,DBGainLife +SVar:DBPump:DB$ PutCounter | CounterType$ P1P1 | CounterNum$ 2 | SpellDescription$ Put two +1/+1 counters on CARDNAME. +SVar:DBDestroy:DB$ Destroy | ValidTgts$ Artifact,Enchantment | TgtPrompt$ Select target artifact or enchantment | SpellDescription$ Destroy target artifact or enchantment. +SVar:DBGainLife:DB$ GainLife | LifeAmount$ 4 | SpellDescription$ You gain 4 life. +Oracle:When Knight of Autumn enters the battlefield, choose one —\n• Put two +1/+1 counters on Knight of Autumn.\n• Destroy target artifact or enchantment.\n• You gain 4 life. diff --git a/forge-gui/res/cardsfolder/upcoming/kraul_foragers.txt b/forge-gui/res/cardsfolder/upcoming/kraul_foragers.txt new file mode 100644 index 00000000000..9a58f4264a8 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/kraul_foragers.txt @@ -0,0 +1,8 @@ +Name:Kraul Foragers +ManaCost:4 G +Types:Creature Insect Scout +PT:4/4 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigGainLife | TriggerDescription$ Undergrowth - When CARDNAME enters the battlefield, you gain 1 life for each creature card in your graveyard. +SVar:TrigGainLife:DB$GainLife | Defined$ You | References$ X | LifeAmount$ X +SVar:X:Count$TypeInYourYard.Creature +Oracle:Undergrowth — When Kraul Foragers enters the battlefield, you gain 1 life for each creature card in your graveyard. diff --git a/forge-gui/res/cardsfolder/upcoming/kraul_harpooner.txt b/forge-gui/res/cardsfolder/upcoming/kraul_harpooner.txt new file mode 100644 index 00000000000..adc7ab12c20 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/kraul_harpooner.txt @@ -0,0 +1,9 @@ +Name:Kraul Harpooner +ManaCost:1 G +Types:Creature Insect Warrior +PT:3/2 +K:Reach +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPump | TriggerDescription$ When CARDNAME enters the battlefield, choose up to one target creature with flying you don't control. CARDNAME gets +X/+0 until end of turn, where X is the number of creature cards in your graveyard, then you may have CARDNAME fight that creature. +SVar:TrigPump:DB$ Pump | ValidTgts$ Creature.withFlying+YouDontCtrl | TgtPrompt$ Select target creature with flying you don't control | NumAtt$ X | SubAbility$ DBFight +SVar:DBFight:DB$ Fight | Defined$ Self | ValidTgts$ Targeted | TgtPrompt$ Select another target creature +Oracle:Reach\nUndergrowth — When Kraul Harpooner enters the battlefield, choose up to one target creature with flying you don't control. Kraul Harpooner gets +X/+0 until end of turn, where X is the number of creature cards in your graveyard, then you may have Kraul Harpooner fight that creature. diff --git a/forge-gui/res/cardsfolder/upcoming/kraul_raider.txt b/forge-gui/res/cardsfolder/upcoming/kraul_raider.txt new file mode 100644 index 00000000000..2ccad50a5b7 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/kraul_raider.txt @@ -0,0 +1,6 @@ +Name:Kraul Raider +ManaCost:2 B +Types:Creature Insect Warrior +PT:2/3 +K:Menace +Oracle:Menace (This creature can't be blocked except by two or more creatures.) diff --git a/forge-gui/res/cardsfolder/upcoming/kraul_swarm.txt b/forge-gui/res/cardsfolder/upcoming/kraul_swarm.txt new file mode 100644 index 00000000000..8eee72f857a --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/kraul_swarm.txt @@ -0,0 +1,9 @@ +Name:Kraul Swarm +ManaCost:4 B +Types:Creature Insect Warrior +PT:4/1 +K:Flying +A:AB$ ChangeZone | Cost$ 2 B Discard<1/Creature> | Origin$ Graveyard | Destination$ Hand | ActivationZone$ Graveyard | SpellDescription$ Return CARDNAME from your graveyard to your hand. +SVar:DiscardMe:2 +SVar:AIPreference:DiscardCost$Card +Oracle:Flying\n{2}{B}, Discard a creature card: Return Kraul Swarm from your graveyard to your hand. diff --git a/forge-gui/res/cardsfolder/upcoming/lava_coil.txt b/forge-gui/res/cardsfolder/upcoming/lava_coil.txt new file mode 100644 index 00000000000..90417fd18bd --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/lava_coil.txt @@ -0,0 +1,5 @@ +Name:Lava Coil +ManaCost:1 R +Types:Sorcery +A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 4 | ReplaceDyingDefined$ Targeted | SpellDescription$ CARDNAME deals 4 damage to target creature. If that creature would die this turn, exile it instead. +Oracle:Lava Coil deals 4 damage to target creature. If that creature would die this turn, exile it instead. diff --git a/forge-gui/res/cardsfolder/upcoming/league_guildmage.txt b/forge-gui/res/cardsfolder/upcoming/league_guildmage.txt new file mode 100644 index 00000000000..01b6450215d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/league_guildmage.txt @@ -0,0 +1,7 @@ +Name:League Guildmage +ManaCost:U R +Types:Creature Human Wizard +PT:2/2 +A:AB$ Draw | Cost$ 3 U T | NumCards$ 1 | SpellDescription$ Draw a card. +A:AB$ CopySpellAbility | Cost$ X R T | ValidTgts$ Instant.YouCtrl,Sorcery.YouCtrl | TargetType$ Spell | SpellDescription$ Copy target instant or sorcery spell you control with converted mana cost X. You may choose new targets for the copy. +Oracle:{3}{U}, {T}: Draw a card.\n{X}{R}, {T}: Copy target instant or sorcery spell you control with converted mana cost X. You may choose new targets for the copy. diff --git a/forge-gui/res/cardsfolder/upcoming/leapfrog.txt b/forge-gui/res/cardsfolder/upcoming/leapfrog.txt new file mode 100644 index 00000000000..7a7ada2f5a2 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/leapfrog.txt @@ -0,0 +1,7 @@ +Name:Leapfrog +ManaCost:2 U +Types:Creature Frog +PT:3/1 +S:Mode$ Continuous | Affected$ Card.Self | AddKeyword$ Flying | CheckSVar$ X | SVarCompare$ GE1 | Description$ CARDNAME has flying as long as you've cast and instant or sorcery spell this turn. +SVar:X:Count$ThisTurnCast_Instant.YouCtrl,Sorcery.YouCtrl +Oracle:Leapfrog has flying as long as you've cast and instant or sorcery spell this turn. diff --git a/forge-gui/res/cardsfolder/upcoming/ledev_champion.txt b/forge-gui/res/cardsfolder/upcoming/ledev_champion.txt new file mode 100644 index 00000000000..4f8e53d5f15 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/ledev_champion.txt @@ -0,0 +1,15 @@ +Name:Ledev Champion +ManaCost:1 G W +Types:Creature Human Knight +PT:2/2 +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigChoose | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME attacks, you may tap any number of untapped creatures you control. CARDNAME gets +1/+1 until end of turn for each creature tapped this way. +SVar:TrigChoose:DB$ ChooseCard | Defined$ You | MinAmount$ 0 | Amount$ X | References$ X | Choices$ Creature.untapped+YouCtrl | ChoiceTitle$ Choose any number of untapped creatures you control | ChoiceZone$ Battlefield | RememberChosen$ True | SubAbility$ TrigTap +SVar:TrigTap:DB$ Tap | Defined$ Remembered | SubAbility$ DBPump +SVar:DBPump:DB$ Pump | NumAtt$ Y | NumDef$ Y | References$ Y | SubAbility$ DBCleanup +SVar:TrigPump:DB$ Pump | NumAtt$ X | References$ X +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:Count$Valid Creature.YouCtrl +SVar:Y:Remembered$Amount +A:AB$ Token | Cost$ 3 G W | TokenAmount$ 1 | TokenScript$ w_1_1_soldier_lifelink | SpellDescription$ Create a 1/1 white Soldier creature token with lifelink. +DeckHas:Ability$Token +Oracle:Whenever Ledev Champion attacks, you may tap any number of untapped creatures you control. Ledev Champion gets +1/+1 until end of turn for each creature tapped this way.\n{3}{G}{W}: Create a 1/1 white Soldier creature token with lifelink. diff --git a/forge-gui/res/cardsfolder/upcoming/ledev_guardian.txt b/forge-gui/res/cardsfolder/upcoming/ledev_guardian.txt new file mode 100644 index 00000000000..1391bd8bd67 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/ledev_guardian.txt @@ -0,0 +1,6 @@ +Name:Ledev Guardian +ManaCost:3 W +Types:Creature Human Knight +PT:2/4 +K:Convoke +Oracle:Convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for {1} or one mana of the creature's color.) diff --git a/forge-gui/res/cardsfolder/upcoming/legion_guildmage.txt b/forge-gui/res/cardsfolder/upcoming/legion_guildmage.txt new file mode 100644 index 00000000000..3385d7a08dd --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/legion_guildmage.txt @@ -0,0 +1,7 @@ +Name:Legion Guildmage +ManaCost:R W +Types:Creature Human Wizard +PT:2/2 +A:AB$ DealDamage | Cost$ 5 R T | Defined$ Player.Opponent | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to each opponent. +A:AB$ Tap | Cost$ 2 W T | ValidTgts$ Creature.Other | TgtPrompt$ Select another target creature | SpellDescription$ Tap another target creature. +Oracle:{5}{R}, {T}: Legion Guildmage deals 3 damage to each opponent.\n{2}{W}, {T}: Tap another target creature. diff --git a/forge-gui/res/cardsfolder/upcoming/legion_warboss.txt b/forge-gui/res/cardsfolder/upcoming/legion_warboss.txt new file mode 100644 index 00000000000..34bc3e59666 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/legion_warboss.txt @@ -0,0 +1,12 @@ +Name:Legion Warboss +ManaCost:2 R +Types:Creature Goblin Soldier +PT:2/2 +K:Mentor +T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ At the beginning of combat on your turn, create a 1/1 red Goblin creature token. That token gains haste until end of turn and attacks this combat if able. +SVar:TrigToken:DB$ Token | TokenOwner$ You | TokenAmount$ 1 | TokenScript$ r 1 1 goblin | LegacyImage$ r 1 1 goblin grn | RememberTokens$ True | SubAbility$ DBPump +SVar:DBPump:DB$ Pump | Defined$ Remembered | KW$ Haste & HIDDEN CARDNAME attacks each combat if able. | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +DeckHas:Ability$Counters & Ability$Token +SVar:Picture:http://www.wizards.com/global/images/magic/general/legion_warboss.jpg +Oracle:Mentor (Whenever this creature attacks, put a +1/+1 counter on target attacking creature with lesser power.)\nAt the beginning of combat on your turn, create a 1/1 red Goblin creature token. That token gains haste until end of turn and attacks this combat if able. diff --git a/forge-gui/res/cardsfolder/upcoming/light_of_the_legion.txt b/forge-gui/res/cardsfolder/upcoming/light_of_the_legion.txt new file mode 100644 index 00000000000..efd8b6a6d24 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/light_of_the_legion.txt @@ -0,0 +1,11 @@ +Name:Light of the Legion +ManaCost:4 W W +Types:Creature Angel +PT:5/5 +K:Flying +K:Mentor +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigPutCounters | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, put a +1/+1 counter on each white creature you control. +SVar:TrigPutCounters:DB$PutCounterAll | ValidCards$ Creature.White+YouCtrl | CounterType$ P1P1 | CounterNum$ 1 +SVar:RemRandomDeck:True +DeckHas:Ability$Counters & Ability$Token +Oracle:Flying\nMentor (Whenever this creature attacks, put a +1/+1 counter on target attacking creature with lesser power.)\nWhen Light of the Legion dies, put a +1/+1 counter on each white creature you control. diff --git a/forge-gui/res/cardsfolder/upcoming/lotleth_giant.txt b/forge-gui/res/cardsfolder/upcoming/lotleth_giant.txt new file mode 100644 index 00000000000..a470ac2ab3d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/lotleth_giant.txt @@ -0,0 +1,8 @@ +Name:Lotleth Giant +ManaCost:6 B +Types:Creature Zombie Giant +PT:6/5 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ Undergrowth - When CARDNAME enters the battlefield, it deals 1 damage to target opponent for each creature card in your graveyard. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | NumDmg$ X | References$ X +SVar:X:Count$TypeInYourYard.Creature +Oracle:Undergrowth — When Lotleth Giant enters the battlefield, it deals 1 damage to target opponent for each creature card in your graveyard. diff --git a/forge-gui/res/cardsfolder/upcoming/loxodon_restorer.txt b/forge-gui/res/cardsfolder/upcoming/loxodon_restorer.txt new file mode 100644 index 00000000000..7df31b28c97 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/loxodon_restorer.txt @@ -0,0 +1,8 @@ +Name:Loxodon Restorer +ManaCost:4 W W +Types:Creature Elephant Cleric +PT:3/4 +K:Convoke +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigGainLife | TriggerDescription$ When CARDNAME enters the battlefield, you gain 4 life. +SVar:TrigGainLife:DB$GainLife | LifeAmount$ 4 +Oracle:Convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for {1} or one mana of that creature's color.)\nWhen Loxodon Restorer enters the battlefield, you gain 4 life. diff --git a/forge-gui/res/cardsfolder/upcoming/march_of_the_multitudes.txt b/forge-gui/res/cardsfolder/upcoming/march_of_the_multitudes.txt new file mode 100644 index 00000000000..693f71a3d99 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/march_of_the_multitudes.txt @@ -0,0 +1,7 @@ +Name:March of the Multitudes +ManaCost:X G W W +Types:Instant +K:Convoke +A:SP$ Token | Cost$ X G W W | TokenAmount$ X | References$ X | TokenScript$ w_1_1_soldier_lifelink | SpellDescription$ Create X 1/1 white Soldier creature tokens with lifelink. +SVar:X:Count$xPaid +Oracle:Convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for {1} or one mana of the creature's color.)\nCreate X 1/1 white Soldier creature tokens with lifelink. diff --git a/forge-gui/res/cardsfolder/upcoming/mausoleum_secrets.txt b/forge-gui/res/cardsfolder/upcoming/mausoleum_secrets.txt new file mode 100644 index 00000000000..b72535a1309 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/mausoleum_secrets.txt @@ -0,0 +1,7 @@ +Name:Mausoleum Secrets +ManaCost:1 B +Types:Instant +A:SP$ ChangeZone | Cost$ 1 B | Origin$ Library | Destination$ Hand | ChangeType$ Card.Black+cmcLEX | ChangeNum$ 1 | References$ X | SpellDescription$ Undergrowth - Search your library for a black card with converted mana cost less than or equal to the number of creature cards in your graveyard, reveal it, put it into your hand, then search your library. +SVar:X:Count$TypeInYourYard.Creature +SVar:RemRandomDeck:True +Oracle:Undergrowth — Search your library for a black card with converted mana cost less than or equal to the number of creature cards in your graveyard, reveal it, put it into your hand, then search your library. diff --git a/forge-gui/res/cardsfolder/upcoming/maximize_altitude.txt b/forge-gui/res/cardsfolder/upcoming/maximize_altitude.txt new file mode 100644 index 00000000000..8ded58bded4 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/maximize_altitude.txt @@ -0,0 +1,6 @@ +Name:Maximize Altitude +ManaCost:U +Types:Sorcery +K:Jump-start +A:SP$ Pump | Cost$ U | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +1 | NumDef$ +1 | KW$ Flying | SpellDescription$ Target creature gets +1/+1 and flying until end of turn. +Oracle:Target creature gets +1/+1 and flying until end of turn.\nJump-start (You may cast this card from your graveyard by discarding a card in addition to paying its other costs. Then exile this card.) diff --git a/forge-gui/res/cardsfolder/upcoming/maximize_velocity.txt b/forge-gui/res/cardsfolder/upcoming/maximize_velocity.txt new file mode 100644 index 00000000000..0b49e9acede --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/maximize_velocity.txt @@ -0,0 +1,6 @@ +Name:Maximize Velocity +ManaCost:R +Types:Sorcery +K:Jump-start +A:SP$ Pump | Cost$ R | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +1 | NumDef$ +1 | KW$ Haste | SpellDescription$ Target creature gets +1/+1 and gains haste until end of turn. +Oracle:Target creature gets +1/+1 and gains haste until end of turn.\nJump-start (You may cast this card from your graveyard by discarding a card in addition to paying its other costs. Then exile this card.) diff --git a/forge-gui/res/cardsfolder/upcoming/mephitic_vapors.txt b/forge-gui/res/cardsfolder/upcoming/mephitic_vapors.txt new file mode 100644 index 00000000000..20328c8009e --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/mephitic_vapors.txt @@ -0,0 +1,6 @@ +Name:Mephitic Vapors +ManaCost:2 B +Types:Sorcery +A:SP$ PumpAll | Cost$ 2 B | ValidCards$ Creature | NumAtt$ -1 | NumDef$ -1 | IsCurse$ True | Subability$ DBSurveil | SpellDescription$ All creatures get -1/-1 until end of turn. +SVar:DBSurveil:DB$ Surveil | Amount$ 2 +Oracle:All creatures get -1/-1 until end of turn.\nSurveil 2. (Look at the top two cards of your library, then put any number of them into your graveyard and the rest on the top of your library in any order.) diff --git a/forge-gui/res/cardsfolder/upcoming/midnight_reaper.txt b/forge-gui/res/cardsfolder/upcoming/midnight_reaper.txt new file mode 100644 index 00000000000..7b8e8b8f307 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/midnight_reaper.txt @@ -0,0 +1,8 @@ +Name:Midnight Reaper +ManaCost:2 B +Types:Creature Zombie Knight +PT:3/2 +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.YouCtrl+nonToken | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever a nontoken creature you control dies, CARDNAME deals 1 damage to you and you draw a card. +SVar:TrigDealDamage:DB$ DealDamage | Defined$ You | NumDmg$ 1 | SubAbility$ DBDraw +SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ 1 +Oracle:Whenever a nontoken creature you control dies, Midnight Reaper deals 1 damage to you and you draw a card. diff --git a/forge-gui/res/cardsfolder/upcoming/might_of_the_masses.txt b/forge-gui/res/cardsfolder/upcoming/might_of_the_masses.txt new file mode 100644 index 00000000000..055663bcfc4 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/might_of_the_masses.txt @@ -0,0 +1,6 @@ +Name:Might of the Masses +ManaCost:G +Types:Instant +A:SP$ Pump | Cost$ G | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +X | NumDef$ +X | References$ X | SpellDescription$ Target creature gets +1/+1 until end of turn for each creature you control. +SVar:X:Count$TypeYouCtrl.Creature +Oracle:Target creature gets +1/+1 until end of turn for each creature you control. diff --git a/forge-gui/res/cardsfolder/upcoming/molderhulk.txt b/forge-gui/res/cardsfolder/upcoming/molderhulk.txt new file mode 100644 index 00000000000..01b7076a108 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/molderhulk.txt @@ -0,0 +1,9 @@ +Name:Molderhulk +ManaCost:7 B G +Types:Creature Fungus Zombie +PT:6/6 +S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ X | References$ X | EffectZone$ All | Description$ Undergrowth - This spell costs {1} less to cast for each creature card in your graveyard. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChangeZone | TriggerDescription$ When CARDNAME enters the battlefield, return target land card from your graveyard to the battlefield. +SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Land.YouCtrl | TgtPrompt$ Select target land card from your graveyard +SVar:X:Count$TypeInYourYard.Creature +Oracle:Undergrowth—This spell costs {1} less to cast for each creature card in your graveyard.\nWhen Molderhulk enters the battlefield, return target land card from your graveyard to the battlefield. diff --git a/forge-gui/res/cardsfolder/upcoming/moodmark_painter.txt b/forge-gui/res/cardsfolder/upcoming/moodmark_painter.txt new file mode 100644 index 00000000000..11dd131d1b5 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/moodmark_painter.txt @@ -0,0 +1,8 @@ +Name:Moodmark Painter +ManaCost:2 B B +Types:Creature Human Shaman +PT:2/3 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPump | TriggerDescription$ When CARDNAME enters the battlefield, target creature gains menace and gets +X/+0 until end of turn, where X is the number of creature cards in your graveyard. (It can't blocked except by two or more creatures.) +SVar:TrigPump:DB$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ X | NumDef$ 0 | KW$ Menace | References$ X +SVar:X:Count$TypeInYourYard.Creature +Oracle:Undergrowth — When Moodmark Painter enters the battlefield, target creature gains menace and gets +X/+0 until end of turn, where X is the number of creature cards in your graveyard. (It can't blocked except by two or more creatures.) diff --git a/forge-gui/res/cardsfolder/upcoming/murmuring_mystic.txt b/forge-gui/res/cardsfolder/upcoming/murmuring_mystic.txt new file mode 100644 index 00000000000..e564cee9162 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/murmuring_mystic.txt @@ -0,0 +1,8 @@ +Name:Murmuring Mystic +ManaCost:3 U +Types:Creature Human Wizard +PT:1/5 +T:Mode$ SpellCast | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ Whenever you cast an instant or sorcery spell, create a 1/1 blue Bird Illusion creature token with flying. +SVar:TrigToken:DB$Token | TokenAmount$ 1 | TokenScript$ u_1_1_bird_illusion_flying +SVar:BuffedBy:Instant,Sorcery +Oracle:Whenever you cast an instant or sorcery spell, create a 1/1 blue Bird Illusion creature token with flying. diff --git a/forge-gui/res/cardsfolder/upcoming/muse_drake.txt b/forge-gui/res/cardsfolder/upcoming/muse_drake.txt new file mode 100644 index 00000000000..a35750e3288 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/muse_drake.txt @@ -0,0 +1,8 @@ +Name:Muse Drake +ManaCost:3 U +Types:Creature Drake +PT:1/3 +K:Flying +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerDescription$ When CARDNAME enters the battlefield, draw a card. +SVar:TrigDraw:DB$Draw | Defined$ You | NumCards$ 1 +Oracle:Flying\nWhen Muse Drake enters the battlefield, draw a card. diff --git a/forge-gui/res/cardsfolder/upcoming/necrotic_wound.txt b/forge-gui/res/cardsfolder/upcoming/necrotic_wound.txt new file mode 100644 index 00000000000..391feacc720 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/necrotic_wound.txt @@ -0,0 +1,6 @@ +Name:Necrotic Wound +ManaCost:B +Types:Instant +A:SP$ Pump | Cost$ B | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ -X | NumDef$ -X | References$ X | ReplaceDyingDefined$ Targeted | IsCurse$ True | SpellDescription$ Target creature gets -X/-X until end of turn, where X is the number of creature cards in your graveyard. If that creature would die this turn, exile it instead. +SVar:X:Count$TypeInYourYard.Creature +Oracle:Undergrowth — Target creature gets -X/-X until end of turn, where X is the number of creature cards in your graveyard. If that creature would die this turn, exile it instead. diff --git a/forge-gui/res/cardsfolder/upcoming/never_happened.txt b/forge-gui/res/cardsfolder/upcoming/never_happened.txt new file mode 100644 index 00000000000..1507124d012 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/never_happened.txt @@ -0,0 +1,5 @@ +Name:Never Happened +ManaCost:2 B +Types:Sorcery +A:SP$ ChangeZone | Cost$ 2 B | Origin$ Hand,Graveyard | Destination$ Exile | ValidTgts$ Opponent | DefinedPlayer$ Targeted | Chooser$ You | ChangeType$ Card.nonLand | ChangeNum$ 1 | IsCurse$ True | Mandatory$ True | StackDescription$ SpellDescription | SpellDescription$ Target opponent reveals their hand. You choose a nonland card from that player's graveyard or hand and exile it. +Oracle:Target opponent reveals their hand. You choose a nonland card from that player's graveyard or hand and exile it. diff --git a/forge-gui/res/cardsfolder/upcoming/nightveil_predator.txt b/forge-gui/res/cardsfolder/upcoming/nightveil_predator.txt new file mode 100644 index 00000000000..c9cab4b9b3e --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/nightveil_predator.txt @@ -0,0 +1,8 @@ +Name:Nightveil Predator +ManaCost:U U B B +Types:Creature Vampire +PT:3/3 +K:Flying +K:Deathtouch +K:Hexproof +Oracle:Flying, deathtouch\nHexproof (This creature can't be the target of spells or abilities your opponents control.) diff --git a/forge-gui/res/cardsfolder/upcoming/nightveil_sprite.txt b/forge-gui/res/cardsfolder/upcoming/nightveil_sprite.txt new file mode 100644 index 00000000000..82043a4765a --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/nightveil_sprite.txt @@ -0,0 +1,9 @@ +Name:Nightveil Sprite +ManaCost:1 U +Types:Creature Faerie Rogue +PT:1/2 +K:Flying +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigSurveil | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME attacks, surveil 1. (Look at the top card of your library. You may put that card into your graveyard.) +SVar:TrigSurveil:DB$ Surveil | Amount$ 1 +SVar:HasAttackEffect:TRUE +Oracle:Flying\nWhenever Nightveil Sprite attacks, surveil 1. (Look at the top card of your library. You may put that card into your graveyard.) diff --git a/forge-gui/res/cardsfolder/upcoming/niv_mizzet_parun.txt b/forge-gui/res/cardsfolder/upcoming/niv_mizzet_parun.txt new file mode 100644 index 00000000000..19a5eadb282 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/niv_mizzet_parun.txt @@ -0,0 +1,11 @@ +Name:Niv-Mizzet, Parun +ManaCost:U U U R R R +Types:Legendary Creature Dragon Wizard +PT:5/5 +K:Flying +K:CARDNAME can't be countered. +T:Mode$ Drawn | ValidCard$ Instant,Sorcery | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever you draw a card, CARDNAME deals 1 damage to any target. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 +T:Mode$ SpellCast | ValidCard$ Instant,Sorcery | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever a player casts an instant or sorcery spell, you draw a card. +SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1 +Oracle:Niv-Mizzet, Parun can't be countered.\nFlying\nWhenever you draw a card, Niv-Mizzet, Parun deals 1 damage to any target.\nWhenever a player casts an instant or sorcery spell, you draw a card. diff --git a/forge-gui/res/cardsfolder/upcoming/notion_rain.txt b/forge-gui/res/cardsfolder/upcoming/notion_rain.txt new file mode 100644 index 00000000000..2e49bc7cf74 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/notion_rain.txt @@ -0,0 +1,7 @@ +Name:Notion Rain +ManaCost:1 U B +Types:Sorcery +A:SP$ Surveil | Cost$ 1 U B | Amount$ 2 | SubAbility$ DBDraw | SpellDescription$ Surveil 2, then draw two cards. CARDNAME deals 2 damage to you. +SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ 2 | SubAbility$ DBDamage +SVar:DBDamage:DB$ DealDamage | Defined$ You | NumDmg$ 2 +Oracle:Surveil 2, then draw two cards. Rain of Notions deals 2 damage to you. (To surveil 2, look at the top two cards of your library, then put any number of them into your graveyard and the rest on top of your library in any order.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/nullhide_ferox.txt b/forge-gui/res/cardsfolder/upcoming/nullhide_ferox.txt new file mode 100644 index 00000000000..feb90b4637a --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/nullhide_ferox.txt @@ -0,0 +1,11 @@ +Name:Nullhide Ferox +ManaCost:2 G G +Types:Creature Beast +PT:6/6 +K:Hexproof +S:Mode$ CantBeCast | ValidCard$ Card.nonCreature | Caster$ You | Description$ You can't cast noncreature spells. +A:AB$ Animate | Cost$ 2 | Defined$ Self | RemoveAllAbilities$ True | AnyPlayer$ True | AILogic$ Curse | SpellDescription$ CARDNAME loses all abilities until end of turn. Any player may activate this ability. +R:Event$ Discard | ActiveZones$ Hand | ValidCard$ Card.Self | ValidSource$ Card.OppCtrl | ReplaceWith$ SurpriseETB | DiscardFromEffect$ True | Description$ If a spell or ability an opponent controls causes you to discard CARDNAME, put it onto the battlefield instead of putting it into your graveyard. +SVar:SurpriseETB:DB$ ChangeZone | DefinedPlayer$ ReplacedPlayer | Defined$ ReplacedCard | Origin$ Hand | Destination$ Battlefield +SVar:DiscardMeByOpp:2 +Oracle:Hexproof\nYou can't cast noncreature spells.\n{2}: Nullhide Ferox loses all abilities until end of turn. Any player may activate this ability.\nIf a spell or ability an opponent controls causes you to discard Nullhide Ferox, put it onto the battlefield instead of putting it into your graveyard. diff --git a/forge-gui/res/cardsfolder/upcoming/ochran_assassin.txt b/forge-gui/res/cardsfolder/upcoming/ochran_assassin.txt new file mode 100644 index 00000000000..fba238bb448 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/ochran_assassin.txt @@ -0,0 +1,7 @@ +Name:Ochran Assassin +ManaCost:1 B G +Types:Creature Elf Assassin +PT:1/1 +K:Deathtouch +K:All creatures able to block CARDNAME do so. +Oracle:Deathtouch\nAll creatures able to block Ochran Assassin do so. diff --git a/forge-gui/res/cardsfolder/upcoming/omnispell_adept.txt b/forge-gui/res/cardsfolder/upcoming/omnispell_adept.txt new file mode 100644 index 00000000000..dcb319305cd --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/omnispell_adept.txt @@ -0,0 +1,6 @@ +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 | SpellDescription$ You may cast an instant or sorcery card from your hand without paying its mana cost. +Oracle:{2}{U}, {T}: You may cast an instant or sorcery card from your hand without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/upcoming/ornery_goblin.txt b/forge-gui/res/cardsfolder/upcoming/ornery_goblin.txt new file mode 100644 index 00000000000..8148ed2ce75 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/ornery_goblin.txt @@ -0,0 +1,9 @@ +Name:Ornery Goblin +ManaCost:1 R +Types:Creature Goblin Warrior +PT:2/1 +T:Mode$ AttackerBlockedByCreature | ValidCard$ Creature | ValidBlocker$ Card.Self | Execute$ TrigDamageAttacker | TriggerDescription$ Whenever CARDNAME blocks or becomes blocked by a creature, CARDNAME deals 1 damage to that creature. +T:Mode$ AttackerBlockedByCreature | ValidCard$ Card.Self | ValidBlocker$ Creature | Execute$ TrigDamageBlocker | Secondary$ True | TriggerDescription$ Whenever CARDNAME blocks or becomes blocked by a creature, CARDNAME deals 1 damage to that creature. +SVar:TrigDamageAttacker:DB$ DealDamage | Defined$ TriggeredAttackerLKICopy | NumDmg$ 1 +SVar:TrigDamageBlocker:DB$ DealDamage | Defined$ TriggeredBlockerLKICopy | NumDmg$ 1 +Oracle:Whenever Ornery Goblin blocks or becomes blocked by a creature, Ornery Goblin deals 1 damage to that creature. diff --git a/forge-gui/res/cardsfolder/upcoming/packs_favor.txt b/forge-gui/res/cardsfolder/upcoming/packs_favor.txt new file mode 100644 index 00000000000..58cf3859a4d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/packs_favor.txt @@ -0,0 +1,6 @@ +Name:Pack's Favor +ManaCost:2 G +Types:Instant +K:Convoke +A:SP$Pump | Cost$ 2 G | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ 3 | NumDef$ 3 | SpellDescription$ Target creature gets +3/+3 until end of turn. +Oracle:Convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for {1} or one mana of that creature's color.)\nTarget creature gets +3/+3 until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/parhelion_patrol.txt b/forge-gui/res/cardsfolder/upcoming/parhelion_patrol.txt new file mode 100644 index 00000000000..35265bd259b --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/parhelion_patrol.txt @@ -0,0 +1,8 @@ +Name:Parhelion Patrol +ManaCost:3 W +Types:Creature Human Knight +PT:2/3 +K:Flying +K:Vigilance +K:Mentor +Oracle:Flying, vigilance\nMentor (Whenever this creature attacks, put a +1/+1 counter on target attacking creature with lesser power.) diff --git a/forge-gui/res/cardsfolder/upcoming/passwall_adept.txt b/forge-gui/res/cardsfolder/upcoming/passwall_adept.txt new file mode 100644 index 00000000000..536d0f54741 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/passwall_adept.txt @@ -0,0 +1,6 @@ +Name:Passwall Adept +ManaCost:1 U +Types:Creature Human Wizard +PT:1/3 +A:AB$ Pump | Cost$ 2 U | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ HIDDEN Unblockable | SpellDescription$ Target creature can't be blocked this turn. +Oracle:{2}{U}: Target creature can't be blocked this turn. diff --git a/forge-gui/res/cardsfolder/upcoming/pause_for_reflection.txt b/forge-gui/res/cardsfolder/upcoming/pause_for_reflection.txt new file mode 100644 index 00000000000..6e75ae1cc1f --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/pause_for_reflection.txt @@ -0,0 +1,6 @@ +Name:Pause for Reflection +ManaCost:2 G +Types:Instant +K:Convoke +A:SP$ Fog | Cost$ 2 G | SpellDescription$ CARDNAME deals all combat damage that would be dealt this turn. +Oracle:Convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for {1} or one mana of that creature's color.)\nPrecent all combat damage that would be dealt this turn. diff --git a/forge-gui/res/cardsfolder/upcoming/pelt_collector.txt b/forge-gui/res/cardsfolder/upcoming/pelt_collector.txt new file mode 100644 index 00000000000..f45347632ea --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/pelt_collector.txt @@ -0,0 +1,10 @@ +Name:Pelt Collector +ManaCost:G +Types:Creature Elf Warrior +PT:1/1 +S:Mode$ Continuous | Affected$ Card.Self+counters_GE3_P1P1 | AddKeyword$ Trample | Description$ As long as CARDNAME has three or more +1/+1 counters on it, it has trample. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.powerGEX+Other | References$ X | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever another creature you control enters the battlefield or dies, if that creature's power is greater than CARDNAME's, put a +1/+1 counter on CARDNAME. +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature.powerGEX+Other | References$ X | TriggerZones$ Battlefield | Secondary$ True | Execute$ TrigPutCounter | TriggerDescription$ Whenever another creature you control enters the battlefield or dies, if that creature's power is greater than CARDNAME's, put a +1/+1 counter on CARDNAME. +SVar:X:Count$CardPower +SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 +Oracle:Whenever another creature you control enters the battlefield or dies, if that creature's power is greater than Pelt Collector's, put a +1/+1 counter on Pelt Collector.\nAs long as Pelt Collector has three or more +1/+1 counters on it, it has trample. diff --git a/forge-gui/res/cardsfolder/upcoming/pilfering_imp.txt b/forge-gui/res/cardsfolder/upcoming/pilfering_imp.txt new file mode 100644 index 00000000000..fb9e8aafba0 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/pilfering_imp.txt @@ -0,0 +1,7 @@ +Name:Pilfering Imp +ManaCost:B +Types:Creature Imp +PT:1/1 +K:Flying +A:AB$ Discard | Cost$ 1 B T Sac<1/CARDNAME> | ValidTgts$ Player | Mode$ RevealYouChoose | DiscardValid$ Card.nonLand | NumCards$ 1 | SorcerySpeed$ True | SpellDescription$ Target player reveals their hand. You choose a nonland card from it. That player discards that card. Activate this ability only any time you could cast a sorcery. +Oracle:Flying\n{1}{B}, {T}, Sacrifice Pilfering Imp: Target opponent reveals their hand. You choose a nonland card from it. That player discards that card. Activate this ability only any time you could cast a sorcery. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/piston_fist_cyclops.txt b/forge-gui/res/cardsfolder/upcoming/piston_fist_cyclops.txt new file mode 100644 index 00000000000..e38563c5209 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/piston_fist_cyclops.txt @@ -0,0 +1,9 @@ +Name:Piston-Fist Cyclops +ManaCost:1 U/R U/R +Types:Creature Cyclops +PT:4/3 +K:Defender +S:Mode$ Continuous | Affected$ Card.Self | AddHiddenKeyword$ CARDNAME can attack as though it didn't have defender. | CheckSVar$ X | SVarCompare$ GE1 | Description$ As long as you've cast an instant or sorcery spell this turn, CARDNAME can attack as though it didn't have defender. +SVar:X:Count$ThisTurnCast_Instant.YouOwn +SVar:BuffedBy:Instant,Sorcery +Oracle:Defender\nAs long as you've cast an instant or sorcery spell this turn, Piston-Fist Cyclops can attack as though it didn't have defender. diff --git a/forge-gui/res/cardsfolder/upcoming/pitiless_gorgon.txt b/forge-gui/res/cardsfolder/upcoming/pitiless_gorgon.txt new file mode 100644 index 00000000000..a27de35792c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/pitiless_gorgon.txt @@ -0,0 +1,6 @@ +Name:Pitiless Gorgon +ManaCost:1 B/G B/G +Types:Creature Gorgon +PT:2/2 +K:Deathtouch +Oracle:Deathtouch diff --git a/forge-gui/res/cardsfolder/upcoming/portcullis_vine.txt b/forge-gui/res/cardsfolder/upcoming/portcullis_vine.txt new file mode 100644 index 00000000000..f150d1544be --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/portcullis_vine.txt @@ -0,0 +1,8 @@ +Name:Portcullis Vine +ManaCost:G +Types:Creature Plant Wall +PT:0/3 +K:Defender +A:AB$ Draw | Cost$ 2 T Sac<1/Creature.withDefender/creature with defender> | NumCards$ 1 | SpellDescription$ Draw a card. +SVar:AIPreference:SacCost$Creature.token+powerLE3+toughnessLE3,Creature.withDefender+cmcLE2+powerLE1 +Oracle:Defender\n{2}, {T}, Sacrifice a creature with defender: Draw a card. diff --git a/forge-gui/res/cardsfolder/upcoming/precision_bolt.txt b/forge-gui/res/cardsfolder/upcoming/precision_bolt.txt new file mode 100644 index 00000000000..a605493098d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/precision_bolt.txt @@ -0,0 +1,5 @@ +Name:Precision Bolt +ManaCost:2 R +Types:Sorcery +A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. +Oracle:Precision Bolt deals 3 damage to any target. diff --git a/forge-gui/res/cardsfolder/upcoming/price_of_fame.txt b/forge-gui/res/cardsfolder/upcoming/price_of_fame.txt new file mode 100644 index 00000000000..4383c468503 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/price_of_fame.txt @@ -0,0 +1,9 @@ +Name:Price of Fame +ManaCost:3 B +Types:Instant +S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ CostReduction | EffectZone$ All | Description$ CARDNAME costs {2} less to cast if it targets a legendary creature. +A:SP$ Destroy | Cost$ 3 B | ValidTgts$ Creature | SubAbility$ DBSurveil | TgtPrompt$ Select target creature | SpellDescription$ Destroy target creature. +SVar:CostReduction:Count$Compare CheckTgt GE1.2.0 +SVar:CheckTgt:Targeted$Valid Creature.Legendary +SVar:DBSurveil:DB$ Surveil | Amount$ 2 +Oracle:This spell costs {2} less to cast if it targets a legendary creature.\nDestroy target creature.\nSurveil 2. (Look at the top two cards of your library, then put any number of them into your graveyard and the rest on top of your library in any order.) diff --git a/forge-gui/res/cardsfolder/upcoming/quasiduplicate.txt b/forge-gui/res/cardsfolder/upcoming/quasiduplicate.txt new file mode 100644 index 00000000000..ddc7552bb2e --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/quasiduplicate.txt @@ -0,0 +1,6 @@ +Name:Quasiduplicate +ManaCost:1 U U +Types:Sorcery +K:Jump-start +A:SP$ CopyPermanent | Cost$ 1 U U | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | SpellDescription$ Create a creature token that's a copy of target creature you control. +Oracle:Create a creature token that's a copy of target creature you control.\nJump-start (You may cast this card from your graveyard by discarding a card in addition to paying its other costs. Then exile this card.) diff --git a/forge-gui/res/cardsfolder/upcoming/radical_idea.txt b/forge-gui/res/cardsfolder/upcoming/radical_idea.txt new file mode 100644 index 00000000000..7dd43e40256 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/radical_idea.txt @@ -0,0 +1,6 @@ +Name:Radical Idea +ManaCost:1 U +Types:Instant +K:Jump-start +A:SP$ Draw | Cost$ 1 U | NumCards$ 1 | SpellDescription$ Draw a card. +Oracle:Draw a card.\nJump-start (You may cast this card from your graveyard by discarding a card in addition to paying its other costs. Then exile this card.) diff --git a/forge-gui/res/cardsfolder/upcoming/ral_caller_of_storms.txt b/forge-gui/res/cardsfolder/upcoming/ral_caller_of_storms.txt new file mode 100644 index 00000000000..472de247fe4 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/ral_caller_of_storms.txt @@ -0,0 +1,9 @@ +Name:Ral, Caller of Storms +ManaCost:4 U R +Types:Legendary Planeswalker Ral +Loyalty:4 +A:AB$ Draw | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | NumCards$ 1 | SpellDescription$ Draw a card. +A:AB$ DealDamage | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to distribute damage to | NumDmg$ 3 | TargetMin$ 1 | TargetMax$ 3 | DividedAsYouChoose$ 3 | SpellDescription$ CARDNAME deals 3 damage divided as you choose among one, two, or three targets. +A:AB$ Draw | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True | NumCards$ 7 | SubAbility$ DBDamage | SpellDescription$ Draw seven cards. CARDNAME deals 7 damage to each creature your opponents control. +SVar:DBDamage:DB$ DamageAll | ValidCards$ Creature.OppCtrl | NumDmg$ 7 +Oracle:[+1]: Draw a card.\n[-2]: Ral, Caller of Storms deals 3 damage divided as you choose among one, two, or three targets.\n[-7]: Draw seven cards. Ral, Caller of Storms deals 7 damage to each creature your opponents control. diff --git a/forge-gui/res/cardsfolder/upcoming/ral_izzet_viceroy.txt b/forge-gui/res/cardsfolder/upcoming/ral_izzet_viceroy.txt new file mode 100644 index 00000000000..82e83d9f78b --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/ral_izzet_viceroy.txt @@ -0,0 +1,15 @@ +Name:Ral, Izzet Viceroy +ManaCost:3 U R +Types:Legendary Planeswalker Ral +Loyalty:5 +A:AB$ Dig | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | DigNum$ 2 | ChangeNum$ 1 | DestinationZone2$ Graveyard | SpellDescription$ Look at the top two cards of your library. Put one of them into your hand and the other into your graveyard. +DeckHas:Ability$Graveyard +A:AB$ DealDamage | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ X | References$ X,Y | SpellDescription$ CARDNAME deals damage to target creature equal to the total number of instant and sorcery cards you own in exile and in your graveyard. +SVar:X:Count$ValidGraveyard Instant.YouOwn,Sorcery.YouOwn/Plus.Y +SVar:Y:Count$ValidExile Instant.YouOwn,Sorcery.YouOwn +A:AB$ Effect | Cost$ SubCounter<8/LOYALTY> | Planeswalker$ True | Ultimate$ True | Name$ Emblem - Ral | Image$ emblem_ral | Triggers$ TrigSpellCast | SVars$ EffSpellCast,EffDraw | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "Whenever you cast an instant or sorcery spell, this emblem deals 4 damage to any target and you draw two cards." +SVar:TrigSpellCast:Mode$ SpellCast | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ You | Execute$ EffSpellCast | TriggerDescription$ Whenever you cast an instant or sorcery spell, this emblem deals 4 damage to any target and you draw two cards. +SVar:EffSpellCast:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 4 | SubAbility$ EffDraw +SVar:EffDraw:DB$ Draw | Defined$ You | NumCards$ 2 +SVar:BuffedBy:Instant,Sorcery +Oracle:[+1]: Look at the top two cards of your library. Put one of them into your hand and the other into your graveyard.\n[-3]: Ral, Izzet Viceroy deals damage to target creature equal to the total number of instant and sorcery cards you own in exile and in your graveyard.\n[-8]: You get an emblem with "Whenever you cast an instant or sorcery spell, this emblem deals 4 damage to any target and you draw two cards." diff --git a/forge-gui/res/cardsfolder/upcoming/rals_dispersal.txt b/forge-gui/res/cardsfolder/upcoming/rals_dispersal.txt new file mode 100644 index 00000000000..bf091ea1034 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/rals_dispersal.txt @@ -0,0 +1,7 @@ +Name:Ral's Dispersal +ManaCost:3 U U +Types:Instant +A:SP$ ChangeZone | Cost$ 3 U U | ValidTgts$ Creature | TgtPrompt$ Select target creature | Origin$ Battlefield | Destination$ Hand | SubAbility$ DBSearch | SpellDescription$ Return target creature to its owner's hand. You may search you library and/or graveyard for a card named, Ral, Caller of Storms and put it in your hand. If you search your library this way, shuffle it. +SVar:DBSearch:DB$ ChangeZone | Origin$ Library,Graveyard | Destination$ Hand | ChangeType$ Card.namedRal; Caller of Storms | ChangeNum$ 1 | Optional$ True +DeckNeeds:Name$Ral, Caller of Storms +Oracle:Return target creature to its owner's hand. You may search you library and/or graveyard for a card named Ral, Caller of Storms, reveal it, and put it in to your hand. If you search your library this way, shuffle it. diff --git a/forge-gui/res/cardsfolder/upcoming/rals_staticaster.txt b/forge-gui/res/cardsfolder/upcoming/rals_staticaster.txt new file mode 100644 index 00000000000..10dee68d58c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/rals_staticaster.txt @@ -0,0 +1,10 @@ +Name:Ral's Staticaster +ManaCost:2 U R +Types:Creature Viashino Wizard +PT:3/3 +K:Trample +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigPump | IsPresent$ Planeswalker.Ral+YouCtrl | TriggerDescription$ Whenever CARDNAME attacks, if you control a Ral planeswalker, CARDNAME gets +1/+0 for each card in your hand until end of turn. +SVar:TrigPump:DB$ Pump | NumAtt$ X | References$ X +SVar:X:Count$InYourHand +SVar:BuffedBy:Ral +Oracle:Trample (This creature can deal excess combat damage to the player or planeswalker it's attacking.)\nWhenever Ral's Staticaster attacks, if you control a Ral planeswalker, Ral's Staticaster gets +1/+0 for each card in your hand until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/rampaging_monument.txt b/forge-gui/res/cardsfolder/upcoming/rampaging_monument.txt new file mode 100644 index 00000000000..82bd021bbef --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/rampaging_monument.txt @@ -0,0 +1,10 @@ +Name:Rampaging Monument +ManaCost:4 +Types:Artifact Creature Cleric +PT:0/0 +K:Trample +K:etbCounter:P1P1:3 +T:Mode$ SpellCast | ValidCard$ Card.MultiColor | ValidActivatingPlayer$ You | Execute$ TrigPutCounter | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast a multicolored spell, put a +1/+1 counter on CARDNAME. +SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 +SVar:BuffedBy:Card.MultiColor +Oracle:Trample\nRampaging Monument enters the battlefield with three +1/+1 counters on it.\nWhenever you cast a multicolored spell, put a +1/+1 counter on Rampaging Monument. diff --git a/forge-gui/res/cardsfolder/upcoming/response.txt b/forge-gui/res/cardsfolder/upcoming/response.txt new file mode 100644 index 00000000000..75a615002b8 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/response.txt @@ -0,0 +1,15 @@ +Name:Response +ManaCost:R/W +Types:Instant +AlternateMode: Split +A:SP$ DealDamage | Cost$ R/W | ValidTgts$ Creature.attacking,Creature.blocking | TgtPrompt$ Select target attacking or blocking creature | NumDmg$ 5 | SpellDescription$ CARDNAME deals 5 damage to target attacking or blocking creature. +Oracle:Response deals 5 damage to target attacking or blocking creature. + +ALTERNATE + +Name:Resurgence +ManaCost:3 R W +Types:Sorcery +A:SP$ PumpAll | Cost$ 3 R W | ValidCards$ Creature.YouCtrl | KW$ First Strike & Vigilance | SubAbility$ DBAddCombat | SpellDescription$ Creatures you control gain first strike and vigilance until end of turn. After this main phase, there is an additional combat phase followed by an additional main phase. +SVar:DBAddCombat:DB$ AddPhase | ExtraPhase$ BeginCombat | FollowedBy$ ThisPhase | ConditionPhases$ Main1,Main2 +Oracle:Creatures you control gain first strike and vigilance until end of turn. After this main phase, there is an additional combat phase followed by an additional main phase. diff --git a/forge-gui/res/cardsfolder/upcoming/rhizome_lurcher.txt b/forge-gui/res/cardsfolder/upcoming/rhizome_lurcher.txt new file mode 100644 index 00000000000..cee27cca260 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/rhizome_lurcher.txt @@ -0,0 +1,8 @@ +Name:Rhizome Lurcher +ManaCost:2 B G +Types:Creature Fungus Zombie +PT:2/2 +K:etbCounter:P1P1:X:no Condition:Undergrowth - CARDNAME enters the battlefield with a number of +1/+1 counters on it equal to the number of creature cards in your graveyard. +SVar:X:Count$TypeInYourYard.Creature +SVar:NeedsToPlayVar:X GE1 +Oracle:Undergrowth — Rhizome Lurcher enters the battlefield with a number of +1/+1 counters on it equal to the number of creature cards in your graveyard. diff --git a/forge-gui/res/cardsfolder/upcoming/risk_factor.txt b/forge-gui/res/cardsfolder/upcoming/risk_factor.txt new file mode 100644 index 00000000000..d1519489f6b --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/risk_factor.txt @@ -0,0 +1,7 @@ +Name:Risk Factor +ManaCost:2 R +Types:Instant +K:Jump-start +A:SP$ Pump | Cost$ 2 R | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | OptionalDecider$ Opponent | UnlessCost$ DamageYou<4> | SubAbility$ DBDraw | SpellDescription$ Target opponent may have CARDNAME deal 4 damage to them. If that player doesn't, you draw three cards. +SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ 3 +Oracle:Target opponent may have Risk Factor deal 4 damage to them. If that player doesn't, you draw three cards.\nJump-start (You may cast this card from your graveyard by discarding a card in addition to paying its other costs. Then exile this card.) diff --git a/forge-gui/res/cardsfolder/upcoming/ritual_of_soot.txt b/forge-gui/res/cardsfolder/upcoming/ritual_of_soot.txt new file mode 100644 index 00000000000..2986530ba29 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/ritual_of_soot.txt @@ -0,0 +1,5 @@ +Name:Ritual of Soot +ManaCost:2 B B +Types:Sorcery +A:SP$ DestroyAll | Cost$ 2 B B | ValidCards$ Creature.cmcLE3 | SpellDescription$ Destroy all creatures with converted mana cost 3 or less. +Oracle:Destroy all creatures with converted mana cost 3 or less. diff --git a/forge-gui/res/cardsfolder/upcoming/roc_charger.txt b/forge-gui/res/cardsfolder/upcoming/roc_charger.txt new file mode 100644 index 00000000000..3cdf630c5f5 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/roc_charger.txt @@ -0,0 +1,8 @@ +Name:Roc Charger +ManaCost:2 W +Types:Creature Bird +PT:1/3 +K:Flying +T:Mode$ Attacks | ValidCard$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever CARDNAME attacks, target attacking creature without flying gains flying until end of turn. +SVar:TrigPump:DB$ Pump | ValidTgts$ Creature.attacking+withoutFlying | TgtPrompt$ Select target attacking creature without flying | KW$ Flying +Oracle:Flying\nWhenever Roc Charger attacks, target attacking creature without flying gains flying until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/rosemane_centaur.txt b/forge-gui/res/cardsfolder/upcoming/rosemane_centaur.txt new file mode 100644 index 00000000000..38b32dd3821 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/rosemane_centaur.txt @@ -0,0 +1,7 @@ +Name:Rosemane Centaur +ManaCost:3 G W +Types:Creature Centaur Soldier +PT:4/4 +K:Convoke +K:Vigilance +Oracle:Convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for {1} or one mana of that creature's color.)\nVigilance diff --git a/forge-gui/res/cardsfolder/upcoming/rubblebelt_boar.txt b/forge-gui/res/cardsfolder/upcoming/rubblebelt_boar.txt new file mode 100644 index 00000000000..ae2dd95f562 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/rubblebelt_boar.txt @@ -0,0 +1,8 @@ +Name:Rubblebelt Boar +ManaCost:3 R +Types:Creature Boar +PT:3/3 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPump | TriggerDescription$ When CARDNAME enters the battlefield, target creature gets +2/+0 until end of turn. +SVar:TrigPump:DB$Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +2 +SVar:PlayMain1:TRUE +Oracle:When Rubblebelt Boar enters the battlefield, target creature gets +2/+0 until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/runaway_steam_kin.txt b/forge-gui/res/cardsfolder/upcoming/runaway_steam_kin.txt new file mode 100644 index 00000000000..f43e7afe1e2 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/runaway_steam_kin.txt @@ -0,0 +1,8 @@ +Name:Runaway Steam-Kin +ManaCost:1 R +Types:Creature Elemental +PT:1/1 +T:Mode$ SpellCast | ValidCard$ Card.Red | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | IsPresent$ Card.Self+counters_LE2_P1P1 | Execute$ TrigPutCounter | TriggerDescription$ Whenever you cast a red spell, if CARDNAME has fewer than three +1/+1 counters on it, put a +1/+1 counter on CARDNAME. +SVar:TrigPutCounter:DB$PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 +A:AB$ Mana | Cost$ SubCounter<3/P1P1> | Produced$ R | Amount$ 3 | SpellDescription$ Add {R}{R}{R}. +Oracle:Whenever you cast a red spell, if Runaway Steam-Kin has fewer than three +1/+1 counters on it, put a +1/+1 counter on Runaway Steam-Kin.\nRemove three +1/+1 counters from Runaway Steam-Kin: Add {R}{R}{R}. diff --git a/forge-gui/res/cardsfolder/upcoming/selesnya_locket.txt b/forge-gui/res/cardsfolder/upcoming/selesnya_locket.txt new file mode 100644 index 00000000000..215e199ac23 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/selesnya_locket.txt @@ -0,0 +1,9 @@ +Name:Selesnya Locket +ManaCost:3 +Types:Artifact +A:AB$ Mana | Cost$ T | Produced$ W | SpellDescription$ Add {W}. +A:AB$ Mana | Cost$ T | Produced$ G | SpellDescription$ Add {G}. +SVar:RemRandomDeck:True +DeckNeeds:Color$Green | White +A:AB$Draw | Cost$ GW GW GW GW T Sac<1/CARDNAME> | NumCards$ 2 | SpellDescription$ Draw two cards. +Oracle:{T}: Add {G} or {W}.\n{G/W}{G/W}{G/W}{G/W}, {T}, Sacrifice Selesnya Locket: Draw two cards. diff --git a/forge-gui/res/cardsfolder/upcoming/severed_strands.txt b/forge-gui/res/cardsfolder/upcoming/severed_strands.txt new file mode 100644 index 00000000000..1ee8c01646f --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/severed_strands.txt @@ -0,0 +1,7 @@ +Name:Severed Strands +ManaCost:1 B +Types:Sorcery +A:SP$ GainLife | Cost$ 1 B Sac<1/Creature> | Defined$ You | LifeAmount$ X | SubAbility$ DBDestroy | References$ X | SpellDescription$ You gain life equal to that sacrificed creature's toughness. Destroy target creature an opponent controls. +SVar:DBDestroy:DB$ Destroy | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature an opponent controls. +SVar:X:RememberedLKI$CardToughness +Oracle:As an additional cost to cast this spell, sacrifice a creature.\nYou gain life equal to that sacrificed creature's toughness. Destroy target creature an opponent controls. diff --git a/forge-gui/res/cardsfolder/upcoming/silent_dart.txt b/forge-gui/res/cardsfolder/upcoming/silent_dart.txt new file mode 100644 index 00000000000..bc8f142bc7f --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/silent_dart.txt @@ -0,0 +1,5 @@ +Name:Silent Dart +ManaCost:1 +Types:Artifact +A:AB$ DealDamage | Cost$ 4 T Sac<1/CARDNAME> | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature. +Oracle:{4}, {T}, Sacrifice Silent Dart: It deals 3 damage to target creature. diff --git a/forge-gui/res/cardsfolder/upcoming/sinister_sabotage.txt b/forge-gui/res/cardsfolder/upcoming/sinister_sabotage.txt new file mode 100644 index 00000000000..5dcbd3c772a --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/sinister_sabotage.txt @@ -0,0 +1,6 @@ +Name:Sinister Sabotage +ManaCost:1 U U +Types:Instant +A:SP$ Counter | Cost$ 1 U U | TargetType$ Spell | TgtPrompt$ Select target spell | ValidTgts$ Card | Subability$ DBSurveil | SpellDescription$ Counter target spell. Surveil 1 (Look at the top card of your library. You may put that card into your graveyard.) +SVar:DBSurveil:DB$ Surveil | Amount$ 1 +Oracle:Counter target spell.\nSurveil 1. (Look at the top card of your library. You may put that card into your graveyard.) diff --git a/forge-gui/res/cardsfolder/upcoming/skyline_scout.txt b/forge-gui/res/cardsfolder/upcoming/skyline_scout.txt new file mode 100644 index 00000000000..2df165fafc2 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/skyline_scout.txt @@ -0,0 +1,7 @@ +Name:Skyline Scout +ManaCost:1 W +Types:Creature Human Scout +PT:2/1 +T:Mode$ Attacks | ValidCard$ Card.Self | OptionalDecider$ You | Execute$ TrigPump | TriggerDescription$ Whenever CARDNAME attacks, you may pay {1}{W}. If you do, it gains flying until end of turn. +SVar:TrigPump:AB$Pump | Cost$ 1 W | Defined$ Self | KW$ Flying +Oracle:Whenever Skyline Scout attacks, you may pay {1}{W}. If you do, it gains flying until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/smelt_ward_minotaur.txt b/forge-gui/res/cardsfolder/upcoming/smelt_ward_minotaur.txt new file mode 100644 index 00000000000..8c51a87d9a2 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/smelt_ward_minotaur.txt @@ -0,0 +1,9 @@ +Name:Smelt-Ward Minotaur +ManaCost:2 R +Types:Creature Minotaur Warrior +PT:2/3 +T:Mode$ SpellCast | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever you cast an instant or sorcery spell, target creature an opponent controls can't block this turn. +SVar:TrigPump:DB$ Pump | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature an opponent controls | KW$ HIDDEN CARDNAME can't block. | IsCurse$ True +SVar:BuffedBy:Instant,Sorcery +DeckHints:Type$Instant | Sorcery +Oracle:Whenever you cast an instant or sorcery spell, target creature an opponent controls can't block this turn. diff --git a/forge-gui/res/cardsfolder/upcoming/sonic_assault.txt b/forge-gui/res/cardsfolder/upcoming/sonic_assault.txt new file mode 100644 index 00000000000..61db907bb68 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/sonic_assault.txt @@ -0,0 +1,7 @@ +Name:Sonic Assault +ManaCost:1 U R +Types:Instant +K:Jump-start +A:SP$ Tap | Cost$ 1 U R | ValidTgts$ Creature | TgtPrompt$ Select target creature | SubAbility$ DBDealDamage | SpellDescription$ Tap target creature. CARDNAME deals 2 damage to that creature's controller. +SVar:DBDealDamage:DB$ DealDamage | Defined$ TargetedController | NumDmg$ 2 +Oracle:Tap target creature. Sonic Assault deals 2 damage to that creature's controller.\nJump-start (You may cast this card from your graveyard by discarding a card in addition to paying its other costs. Then exile this card.) diff --git a/forge-gui/res/cardsfolder/upcoming/spinal_centipede.txt b/forge-gui/res/cardsfolder/upcoming/spinal_centipede.txt new file mode 100644 index 00000000000..283e7f450f9 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/spinal_centipede.txt @@ -0,0 +1,7 @@ +Name:Spinal Centipede +ManaCost:2 B +Types:Creature Insect +PT:3/2 +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigPutCounter | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, put a +1/+1 counter on target creature you control. +SVar:TrigPutCounter:DB$PutCounter | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | CounterType$ P1P1 | CounterNum$ 1 +Oracle:When Spinal Centipede dies, put a +1/+1 counter on target creature you control. diff --git a/forge-gui/res/cardsfolder/upcoming/sprouting_renewal.txt b/forge-gui/res/cardsfolder/upcoming/sprouting_renewal.txt new file mode 100644 index 00000000000..ce5abda9c84 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/sprouting_renewal.txt @@ -0,0 +1,8 @@ +Name:Sprouting Renewal +ManaCost:2 G +Types:Sorcery +K:Convoke +A:SP$ Charm | Cost$ 2 G | Choices$ DBToken,DBDestroy +SVar:DBDestroy:DB$ Destroy | ValidTgts$ Artifact,Creature,Enchantment | TgtPrompt$ Select target artifact, creature or enchantment | SpellDescription$ Destroy target artifact, creature or enchantment. +SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenScript$ wg_2_2_elf_knight_vigilance | SpellDescription$ Create a 2/2 green and white Elf Knight creature token with vigilance. +Oracle:Convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for {1} or one mana of that creature's color.)\nChoose one —\n• Create a 2/2 green and white Elf Knight creature token with vigilance.\n• Destroy target artifact or enchantment. diff --git a/forge-gui/res/cardsfolder/upcoming/status.txt b/forge-gui/res/cardsfolder/upcoming/status.txt new file mode 100644 index 00000000000..cda776b23f8 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/status.txt @@ -0,0 +1,14 @@ +Name:Status +ManaCost:B/G +AlternateMode: Split +Types:Instant +A:SP$ Pump | Cost$ B/G | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +1 | NumDef$ +1 | KW$ Deathtouch | SpellDescription$ Target creature gets +1/+1 and gains deathtouch until end of turn. +Oracle:Target creature gets +1/+1 and gains deathtouch until end of turn. + +ALTERNATE + +Name:Statue +ManaCost:2 B G +Types:Instant +A:SP$ Destroy | Cost$ 2 B G | ValidTgts$ Artifact,Creature,Enchantment | TgtPrompt$ Select target artifact, creature or enchantment | SpellDescription$ Destroy target artifact, creature or enchantment. +Oracle:Destroy target artifact, creature, or enchantment. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/street_riot.txt b/forge-gui/res/cardsfolder/upcoming/street_riot.txt new file mode 100644 index 00000000000..7a4f295373f --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/street_riot.txt @@ -0,0 +1,5 @@ +Name:Street Riot +ManaCost:4 R +Types:Enchantment +S:Mode$ Continuous | Affected$ Creature.YouCtrl | AddPower$ 1 | AddKeyword$ Trample | Condition$ PlayerTurn | Description$ As long as it's your turn, creatures you control get +1/+0 and have trample. +Oracle:As long as it's your turn, creatures you control get +1/+0 and have trample. diff --git a/forge-gui/res/cardsfolder/upcoming/sumala_woodshaper.txt b/forge-gui/res/cardsfolder/upcoming/sumala_woodshaper.txt new file mode 100644 index 00000000000..595ae0dc09e --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/sumala_woodshaper.txt @@ -0,0 +1,7 @@ +Name:Sumala Woodshaper +ManaCost:2 G W +Types:Creature Elf Druid +PT:2/1 +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigDig | TriggerDescription$ When CARDNAME enters the battlefield, look at the top four cards of your library. You may reveal a creature or enchantment card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. +SVar:TrigDig:DB$ Dig | DigNum$ 4 | ChangeNum$ 1 | Optional$ True | ChangeValid$ Creature,Enchantment +Oracle:When Sumala Woodshaper enters the battlefield, look at the top four cards of your library. You may reveal a creature or enchantment card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. diff --git a/forge-gui/res/cardsfolder/upcoming/sunhome_stalwart.txt b/forge-gui/res/cardsfolder/upcoming/sunhome_stalwart.txt new file mode 100644 index 00000000000..108c54611cd --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/sunhome_stalwart.txt @@ -0,0 +1,7 @@ +Name:Sunhome Stalwart +ManaCost:1 W +Types:Creature Human Soldier +PT:2/2 +K:First Strike +K:Mentor +Oracle:First strike\nMentor (Whenever this creature attacks, put a +1/+1 counter on target attacking creature with lesser power.) diff --git a/forge-gui/res/cardsfolder/upcoming/swarm_guildmage.txt b/forge-gui/res/cardsfolder/upcoming/swarm_guildmage.txt new file mode 100644 index 00000000000..4d3dcef3588 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/swarm_guildmage.txt @@ -0,0 +1,7 @@ +Name:Swarm Guildmage +ManaCost:B G +Types:Creature Elf Shaman +PT:2/2 +A:AB$ PumpAll | Cost$ 4 B T | ValidCards$ Creature.YouCtrl | NumAtt$ +1 | KW$ Menace | SpellDescription$ Creatures you control get +1/+0 and gain menace until end of turn. (They can't be blocked except by two or more creatures.) +A:AB$ GainLife | Cost$ 1 G T | LifeAmount$ 2 | SpellDescription$ You gain 2 life. +Oracle:{4}{B}, {T}: Creatures you control get +1/+0 and gain menace until end of turn. (They can't be blocked except by two or more creatures.)\n{1}{G}, {T}: You gain 2 life. diff --git a/forge-gui/res/cardsfolder/upcoming/swathcutter_giant.txt b/forge-gui/res/cardsfolder/upcoming/swathcutter_giant.txt new file mode 100644 index 00000000000..977d030b6fb --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/swathcutter_giant.txt @@ -0,0 +1,9 @@ +Name:Swathcutter Giant +ManaCost:4 R W +Types:Creature Giant Soldier +PT:5/5 +K:Vigilance +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDamage | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME attacks, it deals 1 damage to each creature defending player controls. +SVar:TrigDamage:DB$DamageAll | ValidCards$ Creature.DefenderCtrl | NumDmg$ 1 | ValidDescription$ each creature defending player controls. +SVar:HasAttackEffect:TRUE +Oracle:Vigilance\nWhenever Swathcutter Giant attacks, it deals 1 damage to each creature defending player controls. diff --git a/forge-gui/res/cardsfolder/upcoming/swiftblade_vindicator.txt b/forge-gui/res/cardsfolder/upcoming/swiftblade_vindicator.txt new file mode 100644 index 00000000000..2b1d5b58b29 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/swiftblade_vindicator.txt @@ -0,0 +1,8 @@ +Name:Swiftblade Vindicator +ManaCost:R W +Types:Creature Human Soldier +PT:1/1 +K:Double Strike +K:Vigilance +K:Trample +Oracle:Double strike, vigilance, trample diff --git a/forge-gui/res/cardsfolder/upcoming/sworn_companions.txt b/forge-gui/res/cardsfolder/upcoming/sworn_companions.txt new file mode 100644 index 00000000000..e2ed080c0a3 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/sworn_companions.txt @@ -0,0 +1,6 @@ +Name:Sworn Companions +ManaCost:2 W +Types:Sorcery +A:SP$ Token | Cost$ 2 W | TokenAmount$ 2 | TokenScript$ w_1_1_soldier_lifelink +DeckHas:Ability$Token +Oracle:Creature two 1/1 white Soldier creature tokens with lifelink. diff --git a/forge-gui/res/cardsfolder/upcoming/tajic_legions_edge.txt b/forge-gui/res/cardsfolder/upcoming/tajic_legions_edge.txt new file mode 100644 index 00000000000..4fd9fb0b3a4 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/tajic_legions_edge.txt @@ -0,0 +1,9 @@ +Name:Tajic, Legion's Edge +ManaCost:1 R W +Types:Legendary Creature Human Soldier +PT:3/2 +K:Haste +K:Mentor +R:Event$ DamageDone | ActiveZones$ Battlefield | Prevent$ True | ValidTarget$ Creature.Other+YouCtrl | IsCombat$ False | Description$ Prevent all noncombat damage that would be dealt to other creatures you control. +A:AB$ Pump | Cost$ R W | Defined$ Self | KW$ First Strike | SpellDescription$ CARDNAME gains first strike until end of turn. +Oracle:Haste\nMentor (Whenever this creature attacks, put a +1/+1 counter on target attacking creature with lesser power.)\nPrevent all noncombat damage that would be dealt to other creatures you control.\n{R}{W}: Tajic, Legion's Edge gains first strike until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/take_heart.txt b/forge-gui/res/cardsfolder/upcoming/take_heart.txt new file mode 100644 index 00000000000..66ba6f0263f --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/take_heart.txt @@ -0,0 +1,7 @@ +Name:Take Heart +ManaCost:W +Types:Instant +A:SP$ Pump | Cost$ W | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +2 | NumDef$ +2 | SubAbility$ DBGainLife | SpellDescription$ Target creature gets +2/+2 until end of turn. You gain 1 life for each attacking creature you control. +SVar:DBGainLife:DB$GainLife | Defined$ You | LifeAmount$ X | References$ X +SVar:X:Count$Valid Creature.YouCtrl+attacking +Oracle:Target creature gets +2/+2 until end of turn. You gain 1 life for each attacking creature you control. diff --git a/forge-gui/res/cardsfolder/upcoming/tenth_district_guard.txt b/forge-gui/res/cardsfolder/upcoming/tenth_district_guard.txt new file mode 100644 index 00000000000..4fce4bf2e8e --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/tenth_district_guard.txt @@ -0,0 +1,8 @@ +Name:Tenth District Guard +ManaCost:1 W +Types:Creature Human Soldier +PT:2/2 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPump | TriggerDescription$ When CARDNAME enters the battlefield, target creature gets +0/+1 until end of turn. +SVar:TrigPump:DB$Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDef$ +1 +SVar:PlayMain1:TRUE +Oracle:When Tenth District Guard enters the battlefield, target creature gets +0/+1 until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/thought_erasure.txt b/forge-gui/res/cardsfolder/upcoming/thought_erasure.txt new file mode 100644 index 00000000000..02aab8b1c92 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/thought_erasure.txt @@ -0,0 +1,6 @@ +Name:Thought Erasure +ManaCost:U B +Types:Sorcery +A:SP$ Discard | Cost$ U B | ValidTgts$ Opponent | DiscardValid$ Card.nonLand | NumCards$ 1 | Mode$ RevealYouChoose | Subability$ DBSurveil | SpellDescription$ Target opponent reveals their hand. You choose a nonland card from it. That player discards that card. Surveil 1 (Look at the top card of your library. You may put that card into your graveyard.) +SVar:DBSurveil:DB$ Surveil | Amount$ 1 +Oracle:Target opponent reveals their hand. You choose a nonland card from it. That player discards that card.\nSurveil 1. (Look at the top card of your library. You may put it into your graveyard.) diff --git a/forge-gui/res/cardsfolder/upcoming/thoughtbound_phantasm.txt b/forge-gui/res/cardsfolder/upcoming/thoughtbound_phantasm.txt new file mode 100644 index 00000000000..718268ba991 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/thoughtbound_phantasm.txt @@ -0,0 +1,9 @@ +Name:Thoughtbound Phantasm +ManaCost:U +Types:Creature Spirit +PT:2/2 +K:Defender +T:Mode$ Surveil | ValidPlayer$ You | Execute$ TrigPutCounter | TriggerZones$ Battlefield | TriggerDescription$ Whenever you surveil, put a +1/+1 counter on CARDNAME +SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 +S:Mode$ Continuous | Affected$ Card.Self+counters_GE3_P1P1 | AddHiddenKeyword$ CARDNAME can attack as though it didn't have defender. | Description$ As long as CARDNAME has three or more +1/+1 counters on it, it can attack +Oracle:Defender\nWhenever you surveil, put a +1/+1 counter on Thoughtbound Phantasm.\nAs long as Thoughtbound Phantasm has three or more +1/+1 counters on it, it can attack as though it didn't have defender. diff --git a/forge-gui/res/cardsfolder/upcoming/torch_courier.txt b/forge-gui/res/cardsfolder/upcoming/torch_courier.txt new file mode 100644 index 00000000000..16c0dd5e27a --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/torch_courier.txt @@ -0,0 +1,7 @@ +Name:Torch Courier +ManaCost:R +Types:Creature Goblin +PT:1/1 +K:Haste +A:AB$ Pump | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ Haste | SpellDescription$ Another target creature gains haste until end of turn. +Oracle:Haste\nSacrifice Torch Courier: Another target creature gains haste until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/trostani_discordant.txt b/forge-gui/res/cardsfolder/upcoming/trostani_discordant.txt new file mode 100644 index 00000000000..53c3ed895e4 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/trostani_discordant.txt @@ -0,0 +1,11 @@ +Name:Trostani Discordant +ManaCost:3 G W +Types:Legendary Creature Dryad +PT:1/4 +S:Mode$ Continuous | Affected$ Creature.Other+YouCtrl | AddPower$ 1 | AddToughness$ 1 | Description$ Other creatures you control get +1/+1. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, create two 1/1 white Soldier creature tokens with lifelink. +SVar:TrigToken:DB$ Token | TokenAmount$ 2 | TokenScript$ w_1_1_soldier_lifelink +T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigGainControl | TriggerDescription$ At the beginning of your end step, each player gains control of all creatures they own. +SVar:TrigGainControl:DB$ RepeatEach | RepeatPlayers$ Player | AILogic$ GainControlOwns | RepeatSubAbility$ DBGainControl | SpellDescription$ Each player gains control of all creatures they own. +SVar:DBGainControl:DB$ GainControl | AllValid$ Creature.RememberedPlayerOwn | NewController$ Player.IsRemembered +Oracle:Other creatures you control get +1/+1.\nWhen Trostani Discordant enters the battlefield, create two 1/1 white Soldier creature tokens with lifelink.\nAt the beginning of your end step, each player gains control of all creatures they own. diff --git a/forge-gui/res/cardsfolder/upcoming/truefire_captain.txt b/forge-gui/res/cardsfolder/upcoming/truefire_captain.txt new file mode 100644 index 00000000000..9686427b472 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/truefire_captain.txt @@ -0,0 +1,10 @@ +Name:Truefire Captain +ManaCost:R R W W +Types:Creature Human Knight +PT:4/3 +K:Mentor +T:Mode$ DamageDoneOnce | Execute$ TrigDamage | ValidTarget$ Card.Self | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME is dealt damage, it deals that much damage to target player. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ X | References$ X +SVar:X:TriggerCount$DamageAmount +SVar:HasCombatEffect:TRUE +Oracle:Mentor (Whenever this creature attacks, put a +1/+1 counter on target attacking creature with lesser power.)\nWhenever Truefire Captain is dealt damage, it deals that much damage to target player. diff --git a/forge-gui/res/cardsfolder/upcoming/undercity_necrolisk.txt b/forge-gui/res/cardsfolder/upcoming/undercity_necrolisk.txt new file mode 100644 index 00000000000..dedd5a6ee84 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/undercity_necrolisk.txt @@ -0,0 +1,7 @@ +Name:Undercity Necrolisk +ManaCost:3 B +Types:Creature Zombie Lizard +PT:3/3 +A:AB$ PutCounter | Cost$ 1 Sac<1/Creature.Other/another creature> | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBPump | SorcerySpeed$ True | SpellDescription$ Put a +1/+1 counter on CARDNAME. It gains menace until end of turn. Activate this ability only any time you could cast a sorcery. +SVar:DBPump:DB$ Pump | KW$ Menace | Defined$ Self +Oracle:{1}, Sacrifice another creature: Put a +1/+1 counter on Undercity Necrolisk. It gains menace until end of turn. Activate this ability only any time you could cast a sorcery. (It can't be blocked except by two or more creatures.) diff --git a/forge-gui/res/cardsfolder/upcoming/undercity_uprising.txt b/forge-gui/res/cardsfolder/upcoming/undercity_uprising.txt new file mode 100644 index 00000000000..f89d5161ed9 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/undercity_uprising.txt @@ -0,0 +1,7 @@ +Name:Undercity Uprising +ManaCost:2 B G +Types:Sorcery +A:SP$ PumpAll | Cost$ 2 B G | ValidCards$ Creature.YouCtrl | KW$ Deathtouch | SubAbility$ DBPump | SpellDescription$ Creatures you control gain deathtouch until end of turn. Target creature you control fights target creature you don't control. +SVar:DBPump:DB$ Pump | ValidTgts$ Creature.YouCtrl | AILogic$ Fight | TgtPrompt$ Choose target creature you control to fight | StackDescription$ None | SubAbility$ DBFight | SpellDescription$ Target creature you control fights target creature you don't control. +SVar:DBFight:DB$ Fight | Defined$ ParentTarget | ValidTgts$ Creature.YouDontCtrl | TgtPrompt$ Choose target creature you don't control to fight +Oracle:Creatures you control gain deathtouch until end of turn. Target creature you control fights target creature you don't control. (Each deals damage equal to its power to the other.) diff --git a/forge-gui/res/cardsfolder/upcoming/underrealm_lich.txt b/forge-gui/res/cardsfolder/upcoming/underrealm_lich.txt new file mode 100644 index 00000000000..5a4e13c31c1 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/underrealm_lich.txt @@ -0,0 +1,9 @@ +Name:Underrealm Lich +ManaCost:3 B G +Types:Creature Zombie Elf Shaman +PT:4/3 +R:Event$ Draw | ActiveZones$ Battlefield | ValidPlayer$ You | ReplaceWith$ Dig | Description$ If you would draw a card, instead look at the top three cards of your library, then put one into your hand and the rest into your graveyard. +SVar:Dig:DB$Dig | DigNum$ 3 | ChangeNum$ 1 | ChangeValid$ Card | DestinationZone2$ Graveyard +A:AB$ Pump | Cost$ PayLife<4> | Defined$ Self | KW$ Indestructible | SubAbility$ DBTap | SpellDescription$ CARDNAME gains indestructible until end of turn. Tap it. +SVar:DBTap:DB$Tap | Defined$ Self +Oracle:If you would draw a card, instead look at the top three cards of your library, then put one into your hand and the rest into your graveyard.\nPay 4 life: Underrealm Lich gains indestructible until end of turn. Tap it. diff --git a/forge-gui/res/cardsfolder/upcoming/unexplained_disappearance.txt b/forge-gui/res/cardsfolder/upcoming/unexplained_disappearance.txt new file mode 100644 index 00000000000..5f90caabb59 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/unexplained_disappearance.txt @@ -0,0 +1,6 @@ +Name:Unexplained Disappearance +ManaCost:1 U +Types:Instant +A:SP$ ChangeZone | Cost$ 1 U | ValidTgts$ Creature | TgtPrompt$ Select target creature | Origin$ Battlefield | Destination$ Hand | Subability$ DBSurveil | SpellDescription$ Return target creature to its owner's hand. Surveil 1 (Look at the top card of your library. You may put that card into your graveyard.) +SVar:DBSurveil:DB$ Surveil | Amount$ 1 +Oracle:Return target creature to its owner's hand.\nSurveil 1. (Look at the top card of your library. You may put that card into your graveyard.) diff --git a/forge-gui/res/cardsfolder/upcoming/urban_utopia.txt b/forge-gui/res/cardsfolder/upcoming/urban_utopia.txt new file mode 100644 index 00000000000..a162ca7f0da --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/urban_utopia.txt @@ -0,0 +1,10 @@ +Name:Urban Utopia +ManaCost:1 G +Types:Enchantment Aura +K:Enchant land +A:SP$ Attach | Cost$ G | ValidTgts$ Land | AILogic$ Pump +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ FreeCard | TriggerDescription$ When CARDNAME enters the battlefield, draw a card. +SVar:FreeCard:DB$ Draw | Defined$ You | NumCards$ 1 +S:Mode$ Continuous | Affected$ Card.EnchantedBy | AddAbility$ AbundantGrowthTap | Description$ Enchanted land has "{T}: Add one mana of any color." +SVar:AbundantGrowthTap:AB$ Mana | Cost$ T | Produced$ Any | SpellDescription$ Add one mana of any color. +Oracle:Enchant Land\nWhen Urban Utopia enters the battlefield, draw a card.\nEnchanted land has "{T}: Add one mana of any color." diff --git a/forge-gui/res/cardsfolder/upcoming/vedalken_mesmerist.txt b/forge-gui/res/cardsfolder/upcoming/vedalken_mesmerist.txt new file mode 100644 index 00000000000..2bc70445b36 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/vedalken_mesmerist.txt @@ -0,0 +1,7 @@ +Name:Vedalken Mesmerist +ManaCost:1 U +Types:Creature Vedalken Wizard +PT:2/1 +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigPump | TriggerDescription$ Whenever CARDNAME attacks, target creature an opponent controls gets -2/-0 until end of turn. +SVar:TrigPump:DB$ Pump | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature an opponent controls | NumAtt$ -2 | IsCurse$ True +Oracle:Whenever Vedalken Mesmerist attacks, target creature an opponent controls gets -2/-0 until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/veiled_shade.txt b/forge-gui/res/cardsfolder/upcoming/veiled_shade.txt new file mode 100644 index 00000000000..9048c9909f7 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/veiled_shade.txt @@ -0,0 +1,6 @@ +Name:Veiled Shade +ManaCost:2 B +Types:Creature Shade +PT:2/2 +A:AB$ Pump | Cost$ 1 B | NumAtt$ +1 | NumDef$ +1 | SpellDescription$ CARDNAME gets +1/+1 until end of turn. +Oracle:{1}{B}: Veiled Shade gets +1/+1 until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/vernadi_shieldmate.txt b/forge-gui/res/cardsfolder/upcoming/vernadi_shieldmate.txt new file mode 100644 index 00000000000..6eebba7f0b0 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/vernadi_shieldmate.txt @@ -0,0 +1,6 @@ +Name:Vernadi Shieldmate +ManaCost:1 G/W +Types:Creature Human Soldier +PT:2/2 +K:Vigilance +Oracle:Vigilance diff --git a/forge-gui/res/cardsfolder/upcoming/vicious_rumors.txt b/forge-gui/res/cardsfolder/upcoming/vicious_rumors.txt new file mode 100644 index 00000000000..c74b7df9ffa --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/vicious_rumors.txt @@ -0,0 +1,7 @@ +Name:Vicious Rumors +ManaCost:B +Types:Sorcery +A:SP$ DealDamage | Cost$ B | Defined$ Player.Opponent | NumDmg$ 1 | SubAbility$ DBMill | SpellDescription$ CARDNAME deals 1 damage to each opponent. Each opponent discards a card, then puts the top card of their library into their graveyard. You gain 1 life. +SVar:DBMill:DB$ Mill | Defined$ Player.Opponent | NumCards$ 1 | Mode$ TgtChoose | SubAbility$ DBGainLife +SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 1 +Oracle:Vicious Rumors deals 1 damage to each opponent. Each opponent discards a card, then puts the top card of their library into their graveyard. You gain 1 life. diff --git a/forge-gui/res/cardsfolder/upcoming/vigorspore_wurm.txt b/forge-gui/res/cardsfolder/upcoming/vigorspore_wurm.txt new file mode 100644 index 00000000000..35007ee63e5 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/vigorspore_wurm.txt @@ -0,0 +1,10 @@ +Name:Vigorspore Wurm +ManaCost:5 G +Types:Creature Wurm +PT:6/4 +K:CantBeBlockedByAmount GT1 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPump | TriggerDescription$ Undergrowth - When CARDNAME enters the battlefield, target creature gains vigilance and gets +X/+X until end of turn, where X is the number of creature cards in your graveyard. +SVar:TrigPump:DB$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ X | NumDef$ X | References$ X +SVar:X:Count$TypeInYourYard.Creature +SVar:PlayMain1:TRUE +Oracle:Undergrowth — When Vigorspore Wurm enters the battlefield, target creature gains vigilance and gets +X/+X until end of turn, where X is the number of creature cards in your graveyard.\nVigorspore Wurm can't be blocked by more than one creature. diff --git a/forge-gui/res/cardsfolder/upcoming/vivid_revival.txt b/forge-gui/res/cardsfolder/upcoming/vivid_revival.txt new file mode 100644 index 00000000000..47186cde92c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/vivid_revival.txt @@ -0,0 +1,6 @@ +Name:Vivid Revival +ManaCost:4 G +Types:Sorcery +A:SP$ ChangeZone | Cost$ 4 G | Origin$ Graveyard | Destination$ Hand | TargetMin$ 0 | TargetMax$ 3 | TgtPrompt$ Choose target multicolor cards in your graveyard | ValidTgts$ Card.MultiColor | SubAbility$ DBChange | SpellDescription$ Return up to three target multicolor cards from your graveyard to your hand. Exile CARDNAME. +SVar:DBChange:DB$ ChangeZone | Origin$ Stack | Destination$ Exile +Oracle:Return up to three target multicolor cards from your graveyard to your hand. Exile Vivid Revival. diff --git a/forge-gui/res/cardsfolder/upcoming/vraska_regal_gorgon.txt b/forge-gui/res/cardsfolder/upcoming/vraska_regal_gorgon.txt new file mode 100644 index 00000000000..af5df6d1ba6 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/vraska_regal_gorgon.txt @@ -0,0 +1,10 @@ +Name:Vraska, Regal Gorgon +ManaCost:5 B G +Types:Legendary Planeswalker Vraska +Loyalty:5 +A:AB$ PutCounter | Cost$ AddCounter<2/LOYALTY> | Planeswalker$ True | CounterNum$ 1 | CounterType$ P1P1 | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Creature | TgtPrompt$ Select target creature | SubAbility$ DBPump | SpellDescription$ Put a +1/+1 counter on up to one target creature. That creature gains menace until end of turn. +SVar:DBPump:DB$ Pump | Defined$ Targeted | KW$ Menace +A:AB$ Destroy | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature | TgtPrompt$ Select target creature | SpellDescription$ Destroy target creature. +A:AB$ PutCounterAll | Cost$ SubCounter<10/LOYALTY> | Planeswalker$ True | Ultimate$ True | ValidCards$ Creature.YouCtrl | CounterType$ P1P1 | CounterNum$ X | Reference$ X | SpellDescription$ For each creature card in your graveyard, put a +1/+1 counter on each creature you control. +SVar:X:Count$ValidGraveyard Creature.YouCtrl +Oracle:[+2]: Put a +1/+1 counter on up to one target creature. That creature gains menace until end of turn.\n[-3]: Destroy target creature.\n[-10]: For each creature card in your graveyard, put a +1/+1 counter on each creature you control. diff --git a/forge-gui/res/cardsfolder/upcoming/vraskas_stoneglare.txt b/forge-gui/res/cardsfolder/upcoming/vraskas_stoneglare.txt new file mode 100644 index 00000000000..f4801d7b67f --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/vraskas_stoneglare.txt @@ -0,0 +1,8 @@ +Name:Vraska's Stoneglare +ManaCost:4 B G +Types:Sorcery +A:SP$ Destroy | Cost$ 4 B G | ValidTgts$ Creature | TgtPrompt$ Select target creature | SubAbility$ DBGainLife | SpellDescription$ Destroy target creature. You gain life equal to its toughness. You may search your library and/or graveyard from a card named Vraska, Regal Gorgon, reveal it, and put it into your hand. If you search your library this way, shuffle it. +SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ X | SubAbility$ DBCleanup | References$ X | SubAbility$ DBSearch +SVar:DBSearch:DB$ ChangeZone | Origin$ Library,Graveyard | Destination$ Hand | ChangeType$ Card.namedVraska; Regal Gorgon | ChangeNum$ 1 | Optional$ True +DeckNeeds:Name$Vraska, Regal Gorgon +Oracle:Destroy target creature. You gain life equal to its toughness. You may search your library and/or graveyard from a card named Vraska, Regal Gorgon, reveal it, and put it in to your hand. If you search your library this way, shuffle it. diff --git a/forge-gui/res/cardsfolder/upcoming/wand_of_vertebrae.txt b/forge-gui/res/cardsfolder/upcoming/wand_of_vertebrae.txt new file mode 100644 index 00000000000..f110a982d8d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/wand_of_vertebrae.txt @@ -0,0 +1,6 @@ +Name:Wand of Vertebrae +ManaCost:1 +Types:Artifact +A:AB$ Mill | Cost$ T | Defined$ You | NumCards$ 1 | SpellDescription$ Put the top card of your library into your graveyard. +A:AB$ ChangeZone | Cost$ 2 T Exile<1/CARDNAME> | Origin$ Graveyard | Destination$ Library | TargetMin$ 0 | TargetMax$ 5 | Shuffle$ True | TgtPrompt$ Select target card in your graveyard | ValidTgts$ Card.YouCtrl | SpellDescription$ Shuffle up to five target cards from your graveyard into your library. +Oracle:{T}: Put the top card of your library into your graveyard.\n{2}, {T}, Exile Wand of Vertebrae: Shuffle up to five target cards from your graveyard into your library. diff --git a/forge-gui/res/cardsfolder/upcoming/wary_okapi.txt b/forge-gui/res/cardsfolder/upcoming/wary_okapi.txt new file mode 100644 index 00000000000..878d59a3762 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/wary_okapi.txt @@ -0,0 +1,6 @@ +Name:Wary Okapi +ManaCost:2 G +Types:Creature Antelope +PT:3/2 +K:Vigilance +Oracle:Vigilance diff --git a/forge-gui/res/cardsfolder/upcoming/watcher_in_the_mist.txt b/forge-gui/res/cardsfolder/upcoming/watcher_in_the_mist.txt new file mode 100644 index 00000000000..ba3f6aa313e --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/watcher_in_the_mist.txt @@ -0,0 +1,8 @@ +Name:Watcher in the Mist +ManaCost:3 U U +Types:Creature Spirit +PT:3/4 +K:Flying +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigSurveil | TriggerDescription$ When CARDNAME enters the battlefield, surveil 2. (Look at the top two cards of your library, then put any number of them into your graveyard and the rest on the top of your library in any order.) +SVar:TrigSurveil:DB$ Surveil | Defined$ You | Amount$ 2 +Oracle:Flying\nWhen Watcher in the Mist enters the battlefield, surveil 2. (Look at the top two cards of your library, then put any number of them into your graveyard and the rest on the top of your library in any order.) diff --git a/forge-gui/res/cardsfolder/upcoming/whisper_agent.txt b/forge-gui/res/cardsfolder/upcoming/whisper_agent.txt new file mode 100644 index 00000000000..b681e45523c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/whisper_agent.txt @@ -0,0 +1,8 @@ +Name:Whisper Agent +ManaCost:1 U/B U/B +Types:Creature Human Rogue +PT:3/2 +K:Flash +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigSurveil | TriggerDescription$ When CARDNAME enters the battlefield, surveil 1. (Look at the top card of your library. You may put it into your graveyard.) +SVar:TrigSurveil:DB$ Surveil | Amount$ 1 +Oracle:Flash\nWhen Whisper Agent enters the battlefield, surveil 1. (Look at the top card of your library. You may put it into your graveyard.) diff --git a/forge-gui/res/cardsfolder/upcoming/whispering_snitch.txt b/forge-gui/res/cardsfolder/upcoming/whispering_snitch.txt new file mode 100644 index 00000000000..c827917609c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/whispering_snitch.txt @@ -0,0 +1,9 @@ +Name:Whispering Snitch +ManaCost:1 B +Types:Creature Vampire Rogue +PT:1/3 +T:Mode$ SpellCast | ValidCard$ You | TriggerZones$ Battlefield | Execute$ TrigDamageAll | TriggerDescription$ Whenever you, for the first time each turn, CARDNAME deals 1 damage to each opponent and you gain 1 life. +SVar:TrigDamageAll:DB$ DamageAll | ValidPlayers$ Player.Opponent | NumDmg$ 1 | SubAbility$ DBGainLife +SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 1 +DeckHas:Ability$LifeGain +Oracle:Whenever you surveil for the first time each turn, Whispering Snitch deals 1 damage to each opponent and you gain 1 life. diff --git a/forge-gui/res/cardsfolder/upcoming/wild_ceratok.txt b/forge-gui/res/cardsfolder/upcoming/wild_ceratok.txt new file mode 100644 index 00000000000..ae2f4292c5e --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/wild_ceratok.txt @@ -0,0 +1,5 @@ +Name:Wild Ceratok +ManaCost:3 G +Types:Creature Rhino +PT:4/3 +Oracle: diff --git a/forge-gui/res/cardsfolder/upcoming/wishcoin_crab.txt b/forge-gui/res/cardsfolder/upcoming/wishcoin_crab.txt new file mode 100644 index 00000000000..cb52e29b786 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/wishcoin_crab.txt @@ -0,0 +1,5 @@ +Name:Wishcoin Crab +ManaCost:3 U +Types:Creature Crab +PT:2/5 +Oracle: diff --git a/forge-gui/res/cardsfolder/upcoming/wojek_bodyguard.txt b/forge-gui/res/cardsfolder/upcoming/wojek_bodyguard.txt new file mode 100644 index 00000000000..99a850f5738 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/wojek_bodyguard.txt @@ -0,0 +1,7 @@ +Name:Wojek Bodyguard +ManaCost:2 R +Types:Creature Human Soldier +PT:3/3 +K:Mentor +K:CARDNAME can't attack or block alone. +Oracle:Mentor (Whenever this creature attacks, put a +1/+1 counter on target attacking creature with lesser power.)\nWojek Bodyguard can't attack or block alone. diff --git a/forge-gui/res/cardsfolder/upcoming/worldsoul_colossus.txt b/forge-gui/res/cardsfolder/upcoming/worldsoul_colossus.txt new file mode 100644 index 00000000000..65cc976eb40 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/worldsoul_colossus.txt @@ -0,0 +1,8 @@ +Name:Worldsoul Colossus +ManaCost:X G W +Types:Creature Elemental +PT:0/0 +K:Convoke +K:etbCounter:P1P1:X +SVar:X:Count$xPaid +Oracle:Convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for {1} or one mana of that creature's color.)\nWorldsoul Colossus enters the battlefield with X +1/+1 counters on it. diff --git a/forge-gui/res/cardsfolder/v/vacuumelt.txt b/forge-gui/res/cardsfolder/v/vacuumelt.txt index 24ba8c26898..15e7ce3b5fa 100644 --- a/forge-gui/res/cardsfolder/v/vacuumelt.txt +++ b/forge-gui/res/cardsfolder/v/vacuumelt.txt @@ -1,7 +1,7 @@ Name:Vacuumelt ManaCost:2 U Types:Sorcery -K:Replicate 2 U +K:Replicate:2 U A:SP$ ChangeZone | Cost$ 2 U | ValidTgts$ Creature | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return target creature to it's owners hand. SVar:Picture:http://www.wizards.com/global/images/magic/general/vacuumelt.jpg Oracle:Replicate {2}{U} (When you cast this spell, copy it for each time you paid its replicate cost. You may choose new targets for the copies.)\nReturn target creature to its owner's hand. diff --git a/forge-gui/res/cardsfolder/v/vaevictis_asmadi_the_dire.txt b/forge-gui/res/cardsfolder/v/vaevictis_asmadi_the_dire.txt new file mode 100644 index 00000000000..82f6ef24879 --- /dev/null +++ b/forge-gui/res/cardsfolder/v/vaevictis_asmadi_the_dire.txt @@ -0,0 +1,13 @@ +Name:Vaevictis Asmadi, the Dire +ManaCost:3 B R G +Types:Legendary Creature Elder Dragon +PT:6/6 +K:Flying +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigTarget | TriggerDescription$ Whenever CARDNAME attacks, for each player, choose target permanent that player controls. Those players sacrifice those permanents. Each player who sacrificed a permanent this way reveals the top card of their library, then puts it onto the battlefield if it’s a permanent card. +SVar:TrigTarget:DB$ Pump | ValidTgts$ Permanent | TgtPrompt$ Select target permanent a players controls to be sacrificed. | TargetMin$ OneEach | TargetMax$ OneEach | References$ OneEach | TargetsWithDifferentControllers$ True | SubAbility$ DBSacrificeAll +SVar:DBSacrificeAll:DB$ SacrificeAll | Defined$ Targeted | RememberSacrificed$ True | SubAbility$ DBRepeatEach +SVar:DBRepeatEach:DB$ RepeatEach | DefinedCards$ Remembered | UseImprinted$ True | RepeatSubAbility$ DBDig | SubAbility$ DBCleanup +SVar:DBDig:DB$ Dig | Defined$ ImprintedController | DigNum$ 1 | Reveal$ True | DestinationZone$ Battlefield | DestinationZone2$ Library | LibraryPosition2$ 0 | ChangeNum$ All | ChangeValid$ Permanent +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:OneEach:PlayerCountPlayers$Amount +Oracle:Flying\nWhenever Vaevictis Asmadi, the Dire attacks, for each player, choose target permanent that player controls. Those players sacrifice those permanents. Each player who sacrificed a permanent this way reveals the top card of their library, then puts it onto the battlefield if it’s a permanent card. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/v/valakut_invoker.txt b/forge-gui/res/cardsfolder/v/valakut_invoker.txt index a4dc655a0ad..d7272d9290a 100644 --- a/forge-gui/res/cardsfolder/v/valakut_invoker.txt +++ b/forge-gui/res/cardsfolder/v/valakut_invoker.txt @@ -2,6 +2,6 @@ Name:Valakut Invoker ManaCost:2 R Types:Creature Human Shaman PT:2/3 -A:AB$ DealDamage | Cost$ 8 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. +A:AB$ DealDamage | Cost$ 8 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/valakut_invoker.jpg -Oracle:{8}: Valakut Invoker deals 3 damage to target creature or player. +Oracle:{8}: Valakut Invoker deals 3 damage to any target. diff --git a/forge-gui/res/cardsfolder/v/valakut_the_molten_pinnacle.txt b/forge-gui/res/cardsfolder/v/valakut_the_molten_pinnacle.txt index c5d5e8fda0b..da8b5aaf948 100644 --- a/forge-gui/res/cardsfolder/v/valakut_the_molten_pinnacle.txt +++ b/forge-gui/res/cardsfolder/v/valakut_the_molten_pinnacle.txt @@ -2,8 +2,8 @@ Name:Valakut, the Molten Pinnacle ManaCost:no cost Types:Land K:CARDNAME enters the battlefield tapped. -T:Mode$ ChangesZone | ValidCard$ Mountain.YouCtrl | Origin$ Any | Destination$ Battlefield | OptionalDecider$ You | Execute$ TrigDamage | IsPresent$ Mountain.YouCtrl | PresentCompare$ GE6 | TriggerZones$ Battlefield | TriggerDescription$ Whenever a Mountain enters the battlefield under your control, if you control at least five other Mountains, you may have CARDNAME deal 3 damage to target creature or player. -SVar:TrigDamage:DB$DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | TgtPrompt$ Select target creature or player | NumDmg$ 3 +T:Mode$ ChangesZone | ValidCard$ Mountain.YouCtrl | Origin$ Any | Destination$ Battlefield | OptionalDecider$ You | Execute$ TrigDamage | IsPresent$ Mountain.YouCtrl | PresentCompare$ GE6 | TriggerZones$ Battlefield | TriggerDescription$ Whenever a Mountain enters the battlefield under your control, if you control at least five other Mountains, you may have CARDNAME deal 3 damage to any target. +SVar:TrigDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 A:AB$ Mana | Cost$ T | Produced$ R | SpellDescription$ Add {R}. SVar:Picture:http://www.wizards.com/global/images/magic/general/valakut_the_molten_pinnacle.jpg -Oracle:Valakut, the Molten Pinnacle enters the battlefield tapped.\nWhenever a Mountain enters the battlefield under your control, if you control at least five other Mountains, you may have Valakut, the Molten Pinnacle deal 3 damage to target creature or player.\n{T}: Add {R}. +Oracle:Valakut, the Molten Pinnacle enters the battlefield tapped.\nWhenever a Mountain enters the battlefield under your control, if you control at least five other Mountains, you may have Valakut, the Molten Pinnacle deal 3 damage to any target.\n{T}: Add {R}. diff --git a/forge-gui/res/cardsfolder/v/valduk_keeper_of_the_flame.txt b/forge-gui/res/cardsfolder/v/valduk_keeper_of_the_flame.txt index fb2bd2d31b8..a6076bec926 100644 --- a/forge-gui/res/cardsfolder/v/valduk_keeper_of_the_flame.txt +++ b/forge-gui/res/cardsfolder/v/valduk_keeper_of_the_flame.txt @@ -6,6 +6,8 @@ T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | TriggerZones$ Battlefiel SVar:TrigToken:DB$ Token | TokenAmount$ X | References$ X | TokenName$ Elemental | TokenTypes$ Creature,Elemental | TokenOwner$ You | TokenColors$ Red | TokenPower$ 3 | TokenToughness$ 1 | TokenImage$ r 3 1 elemental dom | TokenKeywords$ Trample<>Haste | TokenSVars$ AkoumEOT | AtEOT$ Exile SVar:AkoumEOT:SVar:EndOfTurnLeavePlay:True SVar:X:Count$Valid Equipment.Attached,Aura.Attached +SVar:EnchantMe:Multiple +SVar:EquipMe:Multiple DeckHints:Type$Equipment|Aura DeckHas:Ability$Token SVar:Picture:http://www.wizards.com/global/images/magic/general/valduk_keeper_of_the_flame.jpg diff --git a/forge-gui/res/cardsfolder/v/valiant_knight.txt b/forge-gui/res/cardsfolder/v/valiant_knight.txt new file mode 100644 index 00000000000..5eab4d5d529 --- /dev/null +++ b/forge-gui/res/cardsfolder/v/valiant_knight.txt @@ -0,0 +1,9 @@ +Name:Valiant Knight +ManaCost:3 W +Types:Creature Human Knight +S:Mode$ Continuous | Affected$ Knight.YouCtrl+Other | AddPower$ 1 | AddToughness$ 1 | Description$ Other Knights you control get +1/+1. +A:AB$ PumpAll | Cost$ 3 W W | ValidCards$ Knight.YouCtrl | KW$ Double Strike | SpellDescription$ Knights you control gain double strike until end of turn. +SVar:PlayMain1:TRUE +DeckHints:Type$Knight +Oracle:Other Knights you control get +1/+1.\n{3}{W}{W}: Knights you control gain double strike until end of turn. +PT:3/4 diff --git a/forge-gui/res/cardsfolder/v/vampire_neonate.txt b/forge-gui/res/cardsfolder/v/vampire_neonate.txt new file mode 100644 index 00000000000..4b229e01bc0 --- /dev/null +++ b/forge-gui/res/cardsfolder/v/vampire_neonate.txt @@ -0,0 +1,7 @@ +Name:Vampire Neonate +ManaCost:B +Types:Creature Vampire +PT:0/3 +A:AB$ LoseLife | Cost$ 2 T | Defined$ Player.Opponent | LifeAmount$ 1 | SubAbility$ DBGainLife | SpellDescription$ Each opponent loses 1 life and you gain 1 life. +SVar:DBGainLife:DB$GainLife | LifeAmount$ 1 +Oracle:{2},{T}: Each opponent loses 1 life and you gain 1 life. diff --git a/forge-gui/res/cardsfolder/v/vampire_sovereign.txt b/forge-gui/res/cardsfolder/v/vampire_sovereign.txt new file mode 100644 index 00000000000..af37d0e71d3 --- /dev/null +++ b/forge-gui/res/cardsfolder/v/vampire_sovereign.txt @@ -0,0 +1,9 @@ +Name:Vampire Sovereign +ManaCost:3 B B +Types:Creature Vampire +PT:3/4 +K:Flying +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigBite | TriggerDescription$ When CARDNAME enters the battlefield target opponent loses 3 life and you gain 3 life. +SVar:TrigBite:DB$LoseLife | ValidTgts$ Opponent | TgtPrompt$ Select an opponent | LifeAmount$ 3 | SubAbility$ DBGainLife | SpellDescription$ Target opponent loses 3 life and you gain 3 life. +SVar:DBGainLife:DB$GainLife | LifeAmount$ 3 +Oracle:Flying\nWhen Vampire Sovereign enters the battlefield, target opponent loses 3 life and you gain 3 life. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/v/vampiric_feast.txt b/forge-gui/res/cardsfolder/v/vampiric_feast.txt index 1d680557b27..98cdd789d28 100644 --- a/forge-gui/res/cardsfolder/v/vampiric_feast.txt +++ b/forge-gui/res/cardsfolder/v/vampiric_feast.txt @@ -1,7 +1,7 @@ Name:Vampiric Feast ManaCost:5 B B Types:Sorcery -A:SP$ DealDamage | Cost$ 5 B B | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 4 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 4 damage to target creature or player and you gain 4 life. +A:SP$ DealDamage | Cost$ 5 B B | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 4 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 4 damage to any target and you gain 4 life. SVar:DBGainLife:DB$GainLife | Defined$ You | LifeAmount$ 4 SVar:Picture:http://resources.wizards.com/magic/cards/po/en-us/card4243.jpg -Oracle:Vampiric Feast deals 4 damage to target creature or player and you gain 4 life. +Oracle:Vampiric Feast deals 4 damage to any target and you gain 4 life. diff --git a/forge-gui/res/cardsfolder/v/vampiric_touch.txt b/forge-gui/res/cardsfolder/v/vampiric_touch.txt index b5034cbfa6a..8a0fd5a45f1 100644 --- a/forge-gui/res/cardsfolder/v/vampiric_touch.txt +++ b/forge-gui/res/cardsfolder/v/vampiric_touch.txt @@ -1,7 +1,7 @@ Name:Vampiric Touch ManaCost:2 B Types:Sorcery -A:SP$ DealDamage | Cost$ 2 B | ValidTgts$ Opponent | NumDmg$ 2 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 2 damage to target opponent and you gain 2 life. +A:SP$ DealDamage | Cost$ 2 B | ValidTgts$ Opponent,Planeswalker | NumDmg$ 2 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 2 damage to target opponent or planeswalker and you gain 2 life. SVar:DBGainLife:DB$GainLife | LifeAmount$ 2 SVar:Picture:http://resources.wizards.com/magic/cards/po/en-us/card4244.jpg -Oracle:Vampiric Touch deals 2 damage to target opponent and you gain 2 life. +Oracle:Vampiric Touch deals 2 damage to target opponent or planeswalker and you gain 2 life. diff --git a/forge-gui/res/cardsfolder/v/vances_blasting_cannons_spitfire_bastion.txt b/forge-gui/res/cardsfolder/v/vances_blasting_cannons_spitfire_bastion.txt index 16740c6cf97..ad618629875 100644 --- a/forge-gui/res/cardsfolder/v/vances_blasting_cannons_spitfire_bastion.txt +++ b/forge-gui/res/cardsfolder/v/vances_blasting_cannons_spitfire_bastion.txt @@ -19,6 +19,6 @@ Name:Spitfire Bastion ManaCost:no cost Types:Legendary Land A:AB$ Mana | Cost$ T | Produced$ R | Amount$ 1 | SpellDescription$ Add {R}. -A:AB$ DealDamage | Cost$ 2 R T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. +A:AB$ DealDamage | Cost$ 2 R T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/spitfire_bastion.jpg -Oracle:(Transforms from Vance's Blasting Cannons.)\n{T}: Add {R}.\n{2}{R}, {T}: Spitfire Bastion deals 3 damage to target creature or player. +Oracle:(Transforms from Vance's Blasting Cannons.)\n{T}: Add {R}.\n{2}{R}, {T}: Spitfire Bastion deals 3 damage to any target. diff --git a/forge-gui/res/cardsfolder/v/varchild_betrayer_of_kjeldor.txt b/forge-gui/res/cardsfolder/v/varchild_betrayer_of_kjeldor.txt new file mode 100644 index 00000000000..667ecd11252 --- /dev/null +++ b/forge-gui/res/cardsfolder/v/varchild_betrayer_of_kjeldor.txt @@ -0,0 +1,12 @@ +Name:Varchild, Betrayer of Kjeldor +ManaCost:2 R +Types:Legendary Creature Human Knight +PT:3/3 +T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigToken | TriggerDescription$ When CARDNAME deals combat damage to a player, that player creates that many 1/1 red Survivor creature tokens. +SVar:TrigToken:DB$ Token | TokenOwner$ TriggeredTarget | TokenAmount$ X | References$ X | TokenName$ Survivor | TokenTypes$ Creature,Survivor | TokenColors$ Red | TokenPower$ 1 | TokenToughness$ 1 | TokenImage$ r 1 1 survivor C18 +SVar:X:TriggerCount$DamageAmount +S:Mode$ Continuous | Affected$ Survivor | AddHiddenKeyword$ CantBlock Creature | Description$ Survivors can't block. +S:Mode$ CantAttack | ValidCard$ Creature.Survivor | Target$ You,Planeswalker.YouCtrl | Description$ Survivors your opponent control can't attack you or planeswalkers you control. +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.Self | Execute$ TrigGainControl | TriggerDescription$ When CARDNAME leaves the battlefield, gain control of all Survivors. +SVar:TrigGainControl:DB$ GainControl | AllValid$ Survivor | NewController$ You +Oracle:When Varchild, Betrayer of Kjeldor deals combat damage to a player, that player creates that many 1/1 red Survivor creature tokens.\nSurvivors your opponent control can't attack you or planeswalkers you control.\nWhen Varchild, Betrayer of Kjeldor leaves the battlefield, gain control of all Survivors. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/v/varchilds_war_riders.txt b/forge-gui/res/cardsfolder/v/varchilds_war_riders.txt index 1f30a4bcf15..0e1a3a47f3f 100644 --- a/forge-gui/res/cardsfolder/v/varchilds_war_riders.txt +++ b/forge-gui/res/cardsfolder/v/varchilds_war_riders.txt @@ -3,7 +3,7 @@ ManaCost:1 R Types:Creature Human Warrior PT:3/4 K:Trample -K:Rampage 1 +K:Rampage:1 T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigCumUpkeep | TriggerDescription$ Cumulative upkeep—Have an opponent create a 1/1 red Survivor creature token. SVar:TrigCumUpkeep:DB$ Charm | Choices$ TrigAgeSurvivor,TrigAgeSacrifice | CharmNum$ 1 SVar:TrigAgeSurvivor:DB$PutCounter | Defined$ Self | CounterType$ AGE | CounterNum$ 1 | SubAbility$ Survivor diff --git a/forge-gui/res/cardsfolder/v/varina_lich_queen.txt b/forge-gui/res/cardsfolder/v/varina_lich_queen.txt new file mode 100644 index 00000000000..6ab9f3ed763 --- /dev/null +++ b/forge-gui/res/cardsfolder/v/varina_lich_queen.txt @@ -0,0 +1,12 @@ +Name:Varina, Lich Queen +ManaCost:1 W U B +Types:Legendary Creature Zombie Wizard +PT:4/4 +T:Mode$ AttackersDeclared | ValidAttackers$ Zombie.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigLoot | TriggerDescription$ Whenever you attack with one or more Zombies, draw that many cards, then discard that many cards. You gain that much life. +SVar:TrigLoot:DB$ Draw | NumCards$ X | References$ X | SubAbility$ DBDiscard +SVar:DBDiscard:DB$ Discard | Defined$ You | Mode$ TgtChoose | NumCards$ X | References$ X | SubAbility$ DBGainLife +SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ X | References$ X +SVar:X:TriggerObjectsAttackers$Valid Zombie.YouCtrl +A:AB$ Token | Cost$ 2 ExileFromGrave<2/Card> | TokenAmount$ 1 | TokenName$ Zombie | TokenTypes$ Creature,Zombie | TokenOwner$ You | TokenColors$ Black | TokenPower$ 2 | TokenToughness$ 2 | TokenImage$ b 2 2 zombie ISD | TokenTapped$ True | SpellDescription$ Create a tapped 2/2 black Zombie creature token. +DeckHas:Ability$Token +Oracle:Whenever you attack with one or more Zombies, draw that many cards, then discard that many cards. You gain that much life.\n{2}, Exile two cards from your graveyard: Create a tapped 2/2 black Zombie creature token. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/v/vedalken_humiliator.txt b/forge-gui/res/cardsfolder/v/vedalken_humiliator.txt new file mode 100644 index 00000000000..a2afcef41e6 --- /dev/null +++ b/forge-gui/res/cardsfolder/v/vedalken_humiliator.txt @@ -0,0 +1,7 @@ +Name:Vedalken Humiliator +ManaCost:3 U +Types:Creature Vedalken Wizard +PT:3/4 +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigPump | Metalcraft$ True | TriggerDescription$ Metalcraft Whenever CARDNAME attacks, if you control three or more artifacts, creatures your opponents control lose all abilities and have base power and toughness 1/1 until end of turn. +SVar:TrigPump:DB$ AnimateAll | Power$ 1 | TokenToughness$ 1 | ValidCards$ Creature.OppCtrl | RemoveAllAbilities$ True | Power$ 1 | TokenToughness$ 1 | RemoveAllAbilities$ True | IsCurse$ True +Oracle:Metalcraft — Whenever Vedalken Humiliator attacks, if you control three or more artifacts, creatures your opponents control lose all abilities and have base power and toughness 1/1 until end of turn. diff --git a/forge-gui/res/cardsfolder/v/veil_of_birds.txt b/forge-gui/res/cardsfolder/v/veil_of_birds.txt index 9afd3961eed..645d31fe877 100644 --- a/forge-gui/res/cardsfolder/v/veil_of_birds.txt +++ b/forge-gui/res/cardsfolder/v/veil_of_birds.txt @@ -2,6 +2,6 @@ Name:Veil of Birds ManaCost:U Types:Enchantment T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ Opponent | TriggerZones$ Battlefield | IsPresent$ Card.Self+Enchantment | Execute$ TrigAnimate | TriggerDescription$ When an opponent casts a spell, if CARDNAME is an enchantment, CARDNAME becomes a 1/1 Bird creature with flying. -SVar:TrigAnimate:DB$Animate | Defined$ Self | Power$ 1 | Toughness$ 1 | Keywords$ Flying | Types$ Creature,Bird | OverwriteTypes$ True | Permanent$ True +SVar:TrigAnimate:DB$Animate | Defined$ Self | Power$ 1 | Toughness$ 1 | Keywords$ Flying | Types$ Creature,Bird | RemoveCardTypes$ True | Permanent$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/veil_of_birds.jpg Oracle:When an opponent casts a spell, if Veil of Birds is an enchantment, Veil of Birds becomes a 1/1 Bird creature with flying. diff --git a/forge-gui/res/cardsfolder/v/veiled_apparition.txt b/forge-gui/res/cardsfolder/v/veiled_apparition.txt index 8c3139e8d6b..d45fa1b80d9 100644 --- a/forge-gui/res/cardsfolder/v/veiled_apparition.txt +++ b/forge-gui/res/cardsfolder/v/veiled_apparition.txt @@ -2,6 +2,6 @@ Name:Veiled Apparition ManaCost:1 U Types:Enchantment T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ Opponent | TriggerZones$ Battlefield | IsPresent$ Card.Self+Enchantment | Execute$ TrigAnimate | TriggerDescription$ When an opponent casts a spell, if CARDNAME is an enchantment, CARDNAME becomes a 3/3 Illusion creature with flying and "At the beginning of your upkeep, sacrifice CARDNAME unless you pay {1}{U}." -SVar:TrigAnimate:DB$Animate | Defined$ Self | Power$ 3 | Toughness$ 3 | Keywords$ Flying & UpkeepCost:1 U | Types$ Creature,Illusion | OverwriteTypes$ True | Permanent$ True +SVar:TrigAnimate:DB$Animate | Defined$ Self | Power$ 3 | Toughness$ 3 | Keywords$ Flying & UpkeepCost:1 U | Types$ Creature,Illusion | RemoveCardTypes$ True | Permanent$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/veiled_apparition.jpg Oracle:When an opponent casts a spell, if Veiled Apparition is an enchantment, Veiled Apparition becomes a 3/3 Illusion creature with flying and "At the beginning of your upkeep, sacrifice Veiled Apparition unless you pay {1}{U}." diff --git a/forge-gui/res/cardsfolder/v/veiled_crocodile.txt b/forge-gui/res/cardsfolder/v/veiled_crocodile.txt index 5094be09ed7..6d0acc07fc2 100644 --- a/forge-gui/res/cardsfolder/v/veiled_crocodile.txt +++ b/forge-gui/res/cardsfolder/v/veiled_crocodile.txt @@ -2,7 +2,7 @@ Name:Veiled Crocodile ManaCost:2 U Types:Enchantment T:Mode$ Always | CheckSVar$ X | SVarCompare$ EQ0 | TriggerZones$ Battlefield | Execute$ TrigVCAnimate | IsPresent$ Card.Self+Enchantment | ResolvingCheck$ IsPresent | TriggerDescription$ When a player has no cards in hand, if CARDNAME is an enchantment, CARDNAME becomes a 4/4 Crocodile creature. -SVar:TrigVCAnimate:DB$ Animate | Types$ Creature,Crocodile | Power$ 4 | Toughness$ 4 | OverwriteTypes$ True | Permanent$ True +SVar:TrigVCAnimate:DB$ Animate | Types$ Creature,Crocodile | Power$ 4 | Toughness$ 4 | RemoveCardTypes$ True | Permanent$ True SVar:X:PlayerCountPlayers$LowestValidHand Card.YouOwn SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/veiled_crocodile.jpg diff --git a/forge-gui/res/cardsfolder/v/veiled_sentry.txt b/forge-gui/res/cardsfolder/v/veiled_sentry.txt index 10734438793..9ece8f80487 100644 --- a/forge-gui/res/cardsfolder/v/veiled_sentry.txt +++ b/forge-gui/res/cardsfolder/v/veiled_sentry.txt @@ -2,7 +2,7 @@ Name:Veiled Sentry ManaCost:U Types:Enchantment T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ Opponent | Execute$ TrigAnimate | TriggerZones$ Battlefield | IsPresent$ Card.Self+Enchantment | TriggerDescription$ When an opponent casts a spell, if CARDNAME is an enchantment, CARDNAME becomes an Illusion creature with power and toughness each equal to that spell's converted mana cost. -SVar:TrigAnimate:DB$ Animate | Defined$ Self | Power$ X | Toughness$ X | Types$ Creature,Illusion | OverwriteTypes$ True | Permanent$ True +SVar:TrigAnimate:DB$ Animate | Defined$ Self | Power$ X | Toughness$ X | Types$ Creature,Illusion | RemoveCardTypes$ True | Permanent$ True SVar:X:TriggerCount$CastSACMC SVar:Picture:http://www.wizards.com/global/images/magic/general/veiled_sentry.jpg Oracle:When an opponent casts a spell, if Veiled Sentry is an enchantment, Veiled Sentry becomes an Illusion creature with power and toughness each equal to that spell's converted mana cost. diff --git a/forge-gui/res/cardsfolder/v/veiled_serpent.txt b/forge-gui/res/cardsfolder/v/veiled_serpent.txt index 10c554c0a09..14f8a4ee66d 100644 --- a/forge-gui/res/cardsfolder/v/veiled_serpent.txt +++ b/forge-gui/res/cardsfolder/v/veiled_serpent.txt @@ -2,7 +2,7 @@ Name:Veiled Serpent ManaCost:2 U Types:Enchantment T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ Opponent | TriggerZones$ Battlefield | IsPresent$ Card.Self+Enchantment | Execute$ TrigAnimate | TriggerDescription$ When an opponent casts a spell, if CARDNAME is an enchantment, CARDNAME becomes a 4/4 Serpent creature that can't attack unless defending player controls an Island. -SVar:TrigAnimate:DB$ Animate | Defined$ Self | Power$ 4 | Toughness$ 4 | staticAbilities$ VeiledSerpentST | Types$ Creature,Serpent | OverwriteTypes$ True | Permanent$ True +SVar:TrigAnimate:DB$ Animate | Defined$ Self | Power$ 4 | Toughness$ 4 | staticAbilities$ VeiledSerpentST | Types$ Creature,Serpent | RemoveCardTypes$ True | Permanent$ True K:Cycling:2 SVar:VeiledSerpentST:Mode$ CantAttack | ValidCard$ Card.Self | UnlessDefenderControls$ Island | Description$ CARDNAME can't attack unless defending player controls an Island. SVar:Picture:http://www.wizards.com/global/images/magic/general/veiled_serpent.jpg diff --git a/forge-gui/res/cardsfolder/v/vengeful_archon.txt b/forge-gui/res/cardsfolder/v/vengeful_archon.txt index d7f5cce545a..edf5cf00259 100644 --- a/forge-gui/res/cardsfolder/v/vengeful_archon.txt +++ b/forge-gui/res/cardsfolder/v/vengeful_archon.txt @@ -3,10 +3,10 @@ ManaCost:4 W W W Types:Creature Archon PT:7/7 K:Flying -A:AB$ Pump | Cost$ X | ValidTgts$ Player | TgtPrompt$ Select target player damaged by shield effect | IsCurse$ True | References$ X | SubAbility$ ArchonPrevention | StackDescription$ none | AILogic$ Never | SpellDescription$ Prevent the next X damage that would be dealt to you this turn. If damage is prevented this way, CARDNAME deals that much damage to target player. +A:AB$ Pump | Cost$ X | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker damaged by shield effect | IsCurse$ True | References$ X | SubAbility$ ArchonPrevention | StackDescription$ none | AILogic$ Never | SpellDescription$ Prevent the next X damage that would be dealt to you this turn. If damage is prevented this way, CARDNAME deals that much damage to target player or planeswalker. SVar:ArchonPrevention:DB$ PreventDamage | Defined$ You | Amount$ X | References$ X | PreventionSubAbility$ ArchonsVengeance | ShieldEffectTarget$ ParentTarget -SVar:ArchonsVengeance:DB$ DealDamage | Defined$ ShieldEffectTarget | NumDmg$ PreventedDamage | SpellDescription$ CARDNAME deals damage to target player for each damage prevented this way. +SVar:ArchonsVengeance:DB$ DealDamage | Defined$ ShieldEffectTarget | NumDmg$ PreventedDamage | SpellDescription$ CARDNAME deals that much damage to target player or planeswalker. SVar:X:Count$xPaid SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/vengeful_archon.jpg -Oracle:Flying\n{X}: Prevent the next X damage that would be dealt to you this turn. If damage is prevented this way, Vengeful Archon deals that much damage to target player. +Oracle:Flying\n{X}: Prevent the next X damage that would be dealt to you this turn. If damage is prevented this way, Vengeful Archon deals that much damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/v/vengeful_rebirth.txt b/forge-gui/res/cardsfolder/v/vengeful_rebirth.txt index 6ecd4006bee..eeaaeb440d8 100644 --- a/forge-gui/res/cardsfolder/v/vengeful_rebirth.txt +++ b/forge-gui/res/cardsfolder/v/vengeful_rebirth.txt @@ -1,10 +1,10 @@ Name:Vengeful Rebirth ManaCost:4 R G Types:Sorcery -A:SP$ ChangeZone | Cost$ 4 R G | ValidTgts$ Card.YouCtrl | TgtPrompt$ Select target card | Origin$ Graveyard | Destination$ Hand | SubAbility$ DBVengefulRebirthDamage | RememberTargets$ True | SpellDescription$ Return target card from your graveyard to your hand. If you return a nonland card to your hand this way, CARDNAME deals damage equal to that card's converted mana cost to target creature or player. Exile CARDNAME. -SVar:DBVengefulRebirthDamage:DB$ DealDamage | ValidTgts$ Creature,Player | References$ VengefulRebirthX | TgtPrompt$ Select target creature or player | NumDmg$ VengefulRebirthX | ConditionDefined$ Remembered | ConditionPresent$ Card.nonLand | ConditionCompare$ GE1 | SubAbility$ DBVengefulRebirthExile +A:SP$ ChangeZone | Cost$ 4 R G | ValidTgts$ Card.YouCtrl | TgtPrompt$ Select target card | Origin$ Graveyard | Destination$ Hand | SubAbility$ DBVengefulRebirthDamage | RememberTargets$ True | SpellDescription$ Return target card from your graveyard to your hand. If you return a nonland card to your hand this way, CARDNAME deals damage equal to that card's converted mana cost to any target. Exile CARDNAME. +SVar:DBVengefulRebirthDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | References$ VengefulRebirthX | TgtPrompt$ Select any target | NumDmg$ VengefulRebirthX | ConditionDefined$ Remembered | ConditionPresent$ Card.nonLand | ConditionCompare$ GE1 | SubAbility$ DBVengefulRebirthExile SVar:DBVengefulRebirthExile:DB$ ChangeZone | Defined$ Self | Origin$ Stack | Destination$ Exile | SubAbility$ DBVengefulRebirthCleanup SVar:DBVengefulRebirthCleanup:DB$ Cleanup | ClearRemembered$ True SVar:VengefulRebirthX:Remembered$CardManaCost SVar:Picture:http://www.wizards.com/global/images/magic/general/vengeful_rebirth.jpg -Oracle:Return target card from your graveyard to your hand. If you return a nonland card to your hand this way, Vengeful Rebirth deals damage equal to that card's converted mana cost to target creature or player.\nExile Vengeful Rebirth. +Oracle:Return target card from your graveyard to your hand. If you return a nonland card to your hand this way, Vengeful Rebirth deals damage equal to that card's converted mana cost to any target.\nExile Vengeful Rebirth. diff --git a/forge-gui/res/cardsfolder/v/vent_sentinel.txt b/forge-gui/res/cardsfolder/v/vent_sentinel.txt index 7da91b7dc29..502c92a7f1d 100644 --- a/forge-gui/res/cardsfolder/v/vent_sentinel.txt +++ b/forge-gui/res/cardsfolder/v/vent_sentinel.txt @@ -3,7 +3,7 @@ ManaCost:3 R Types:Creature Elemental PT:2/4 K:Defender -A:AB$ DealDamage | Cost$ 1 R T | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage to target player equal to the number of creatures with defender you control. +A:AB$ DealDamage | Cost$ 1 R T | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage to target player or planeswalker equal to the number of creatures with defender you control. SVar:X:Count$Valid Creature.withDefender+YouCtrl SVar:Picture:http://www.wizards.com/global/images/magic/general/vent_sentinel.jpg -Oracle:Defender\n{1}{R}, {T}: Vent Sentinel deals damage to target player equal to the number of creatures with defender you control. +Oracle:Defender\n{1}{R}, {T}: Vent Sentinel deals damage to target player or planeswalker equal to the number of creatures with defender you control. diff --git a/forge-gui/res/cardsfolder/v/vesuva.txt b/forge-gui/res/cardsfolder/v/vesuva.txt index 9aea3e7e074..609ef29457a 100644 --- a/forge-gui/res/cardsfolder/v/vesuva.txt +++ b/forge-gui/res/cardsfolder/v/vesuva.txt @@ -1,9 +1,8 @@ Name:Vesuva ManaCost:no cost Types:Land -K:ETBReplacement:Copy:ChooseLand:Optional -SVar:ChooseLand:DB$ ChooseCard | Defined$ You | Amount$ 1 | Choices$ Land.Other | SubAbility$ DBCopy | RememberChosen$ True | AILogic$ Clone | SpellDescription$ You may have CARDNAME enter the battlefield tapped as a copy of any land on the battlefield. -SVar:DBCopy:DB$ Clone | Defined$ Remembered | IntoPlayTapped$ True +K:ETBReplacement:Copy:DBCopy:Optional +SVar:DBCopy:DB$ Clone | Choices$ Land.Other | IntoPlayTapped$ True | SpellDescription$ You may have CARDNAME enter the battlefield tapped as a copy of any land on the battlefield. SVar:NeedsToPlay:Land.YouDontCtrl+notnamedVesuva,Land.YouCtrl+nonLegendary+notnamedVesuva SVar:Picture:http://www.wizards.com/global/images/magic/general/vesuva.jpg Oracle:You may have Vesuva enter the battlefield tapped as a copy of any land on the battlefield. diff --git a/forge-gui/res/cardsfolder/v/viashino_fangtail.txt b/forge-gui/res/cardsfolder/v/viashino_fangtail.txt index 1454d249759..626239a97e3 100644 --- a/forge-gui/res/cardsfolder/v/viashino_fangtail.txt +++ b/forge-gui/res/cardsfolder/v/viashino_fangtail.txt @@ -2,6 +2,6 @@ Name:Viashino Fangtail ManaCost:2 R R Types:Creature Viashino Warrior PT:3/3 -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:Picture:http://www.wizards.com/global/images/magic/general/viashino_fangtail.jpg -Oracle:{T}: Viashino Fangtail deals 1 damage to target creature or player. +Oracle:{T}: Viashino Fangtail deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/v/viashino_pyromancer.txt b/forge-gui/res/cardsfolder/v/viashino_pyromancer.txt new file mode 100644 index 00000000000..f9bd0896dbb --- /dev/null +++ b/forge-gui/res/cardsfolder/v/viashino_pyromancer.txt @@ -0,0 +1,7 @@ +Name:Viashino Pyromancer +ManaCost:1 R +Types:Creature Viashino Wizard +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 2 damage to target player or planeswalker. +SVar:TrigDealDamage:DB$ DealDamage | NumDmg$ 2 | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker +Oracle:When Viashino Pyromancer enters the battlefield, it deals 2 damage to target player or planeswalker. +PT:2/1 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/v/victory_chimes.txt b/forge-gui/res/cardsfolder/v/victory_chimes.txt new file mode 100644 index 00000000000..308d832d7cb --- /dev/null +++ b/forge-gui/res/cardsfolder/v/victory_chimes.txt @@ -0,0 +1,7 @@ +Name:Victory Chimes +ManaCost:3 +Types:Artifact +K:CARDNAME untaps during each other player's untap step. +A:AB$ ChoosePlayer | Cost$ T | Defined$ You | Choices$ Player | ChoiceTitle$ Choose an player | SubAbility$ DBMana | SpellDescription$ Choose a player. That player adds one mana of any color they choose. +SVar:DBMana:DB$ Mana | Produced$ Any | Defined$ ChosenPlayer +Oracle:Untap Victory Chimes during each other player's untap step.\n{T}: A player of your choice adds {C}. diff --git a/forge-gui/res/cardsfolder/v/vigilant_baloth.txt b/forge-gui/res/cardsfolder/v/vigilant_baloth.txt new file mode 100644 index 00000000000..71b4e4ccf90 --- /dev/null +++ b/forge-gui/res/cardsfolder/v/vigilant_baloth.txt @@ -0,0 +1,6 @@ +Name:Vigilant Baloth +ManaCost:3 G G +Types:Creature Beast +K:Vigilance +Oracle:Vigilance (Attacking doesn't cause this creature to tap.) +PT:5/5 diff --git a/forge-gui/res/cardsfolder/v/vigilante_justice.txt b/forge-gui/res/cardsfolder/v/vigilante_justice.txt index fd1f8e9524d..d2d7b7223d7 100644 --- a/forge-gui/res/cardsfolder/v/vigilante_justice.txt +++ b/forge-gui/res/cardsfolder/v/vigilante_justice.txt @@ -1,8 +1,8 @@ Name:Vigilante Justice ManaCost:3 R Types:Enchantment -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Human.YouCtrl | TriggerZones$ Battlefield | Execute$ AndJusticeForAll | TriggerDescription$ Whenever a Human enters the battlefield under your control, CARDNAME deals 1 damage to target creature or player. -SVar:AndJusticeForAll:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Human.YouCtrl | TriggerZones$ Battlefield | Execute$ AndJusticeForAll | TriggerDescription$ Whenever a Human enters the battlefield under your control, CARDNAME deals 1 damage to any target. +SVar:AndJusticeForAll:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/vigilante_justice.jpg -Oracle:Whenever a Human enters the battlefield under your control, Vigilante Justice deals 1 damage to target creature or player. +Oracle:Whenever a Human enters the battlefield under your control, Vigilante Justice deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/v/vine_mare.txt b/forge-gui/res/cardsfolder/v/vine_mare.txt new file mode 100644 index 00000000000..eb76fdca105 --- /dev/null +++ b/forge-gui/res/cardsfolder/v/vine_mare.txt @@ -0,0 +1,7 @@ +Name:Vine Mare +ManaCost:2 G G +Types:Creature Elemental Horse +K:Hexproof +K:CantBeBlockedBy Creature.Black +Oracle:Hexproof (This creature can't be the target of spells or abilities your opponents control.)\nVine Mare can't be blocked by black creatures. +PT:5/3 diff --git a/forge-gui/res/cardsfolder/v/violent_eruption.txt b/forge-gui/res/cardsfolder/v/violent_eruption.txt index 14d48037495..a1887d2707b 100644 --- a/forge-gui/res/cardsfolder/v/violent_eruption.txt +++ b/forge-gui/res/cardsfolder/v/violent_eruption.txt @@ -1,7 +1,7 @@ Name:Violent Eruption ManaCost:1 R R R Types:Instant -A:SP$ DealDamage | Cost$ 1 R R R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to distribute damage to | NumDmg$ 4 | TargetMin$ 1 | TargetMax$ 4 | DividedAsYouChoose$ 4 | SpellDescription$ CARDNAME deals 4 damage divided as you choose among any number of target creatures and/or players. +A:SP$ DealDamage | Cost$ 1 R R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to distribute damage to | NumDmg$ 4 | TargetMin$ 1 | TargetMax$ 4 | DividedAsYouChoose$ 4 | SpellDescription$ CARDNAME deals 4 damage divided as you choose among any number of targets. K:Madness:1 R R SVar:Picture:http://www.wizards.com/global/images/magic/general/violent_eruption.jpg -Oracle:Violent Eruption deals 4 damage divided as you choose among any number of target creatures and/or players.\nMadness {1}{R}{R} (If you discard this card, discard it into exile. When you do, cast it for its madness cost or put it into your graveyard.) +Oracle:Violent Eruption deals 4 damage divided as you choose among any number of targets.\nMadness {1}{R}{R} (If you discard this card, discard it into exile. When you do, cast it for its madness cost or put it into your graveyard.) diff --git a/forge-gui/res/cardsfolder/v/virtus_the_veiled.txt b/forge-gui/res/cardsfolder/v/virtus_the_veiled.txt new file mode 100644 index 00000000000..b0b20ad6eae --- /dev/null +++ b/forge-gui/res/cardsfolder/v/virtus_the_veiled.txt @@ -0,0 +1,10 @@ +Name:Virtus the Veiled +ManaCost:2 B +Types:Legendary Creature Azra Assassin +PT:1/1 +K:Partner:Gorm the Great +K:Deathtouch +T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigLoseLifeOpp | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, that player loses half their life, rounded up. +SVar:TrigLoseLifeOpp:DB$ LoseLife | Defined$ TriggeredTarget | LifeAmount$ QuietusX | References$ QuietusX +SVar:QuietusX:TriggeredTarget$LifeTotal/HalfUp +Oracle:Partner with Gorm the Great (When this creature enters the battlefield, target player may put Gorm into their hand from their library, then shuffle.)\nDeathtouch\nWhenever Virtus the Veiled deals combat damage to a player, that player loses half their life, rounded up. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/v/virtuss_maneuver.txt b/forge-gui/res/cardsfolder/v/virtuss_maneuver.txt new file mode 100644 index 00000000000..aae76276af4 --- /dev/null +++ b/forge-gui/res/cardsfolder/v/virtuss_maneuver.txt @@ -0,0 +1,15 @@ +Name:Virtus's Maneuver +ManaCost:2 B +Types:Sorcery +A:SP$ AssignGroup | Cost$ 2 B | Defined$ Player | Choices$ FriendRepeat,DBSacrifice | AILogic$ FriendOrFoe | SpellDescription$ For each player, choose friend or foe. Each friend returns a creature card from their graveyard to their hand. Each foe sacrifices a creature they control. +SVar:FriendRepeat:DB$ RepeatEach | RepeatPlayers$ Remembered | RepeatSubAbility$ PlayChoose | ClearRememberedBeforeLoop$ True | SubAbility$ ReturnAll | StackDescription$ SpellDescription | SpellDescription$ Each friend returns a creature card from their graveyard to their hand. +SVar:PlayChoose:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Creature.RememberedPlayerCtrl | Amount$ 1 | Mandatory$ True | ChoiceZone$ Graveyard | ChoiceTitle$ Choose a creature in your graveyard | RememberChosen$ True +SVar:ReturnAll:DB$ ChangeZoneAll | Origin$ Graveyard | Destination$ Hand | ChangeType$ Creature.IsRemembered | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenCard$ True +SVar:DBSacrifice:DB$Sacrifice | Defined$ Remembered | SacValid$ Creature | SacMessage$ creature | StackDescription$ SpellDescription | SpellDescription$ Each foe sacrifices a creature they control. +SVar:NeedsToPlayVar:Z GE2 +SVar:Z:SVar$Z1/Plus.Z2 +SVar:Z1:Count$ValidGraveyard Creature.YourTeamCtrl +SVar:Z2:Count$Valid Creature.OppCtrl+inZoneBattlefield +SVar:Picture:http://www.wizards.com/global/images/magic/general/virtuss_maneuver.jpg +Oracle:For each player, choose friend or foe. Each friend returns a creature card from their graveyard to their hand. Each foe sacrifices a creature they control. diff --git a/forge-gui/res/cardsfolder/v/virulent_sliver.txt b/forge-gui/res/cardsfolder/v/virulent_sliver.txt index 4d6b7e72c75..80752846f7c 100644 --- a/forge-gui/res/cardsfolder/v/virulent_sliver.txt +++ b/forge-gui/res/cardsfolder/v/virulent_sliver.txt @@ -2,7 +2,7 @@ Name:Virulent Sliver ManaCost:G Types:Creature Sliver PT:1/1 -S:Mode$ Continuous | Affected$ Creature.Sliver | AddKeyword$ Poisonous 1 | Description$ All Sliver creatures have poisonous 1. (Whenever a Sliver deals combat damage to a player, that player gets a poison counter. A player with ten or more poison counters loses the game.) +S:Mode$ Continuous | Affected$ Creature.Sliver | AddKeyword$ Poisonous:1 | Description$ All Sliver creatures have poisonous 1. (Whenever a Sliver deals combat damage to a player, that player gets a poison counter. A player with ten or more poison counters loses the game.) SVar:PlayMain1:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/virulent_sliver.jpg Oracle:All Sliver creatures have poisonous 1. (Whenever a Sliver deals combat damage to a player, that player gets a poison counter. A player with ten or more poison counters loses the game.) diff --git a/forge-gui/res/cardsfolder/v/vision_charm.txt b/forge-gui/res/cardsfolder/v/vision_charm.txt index c2b033d1af2..0c6e96b7ece 100644 --- a/forge-gui/res/cardsfolder/v/vision_charm.txt +++ b/forge-gui/res/cardsfolder/v/vision_charm.txt @@ -6,7 +6,7 @@ SVar:MillOpp:DB$ Mill | NumCards$ 4 | ValidTgts$ Player | TgtPrompt$ Choose a pl SVar:ChangeType:DB$ ChooseType | Defined$ You | Type$ Land | SubAbility$ RemFirstLand | SpellDescription$ Choose a land type and a basic land type. Each land of the first chosen type becomes the second chosen type until end of turn. SVar:RemFirstLand:DB$ PumpAll | ValidCards$ Land.ChosenType | RememberAllPumped$ True | SubAbility$ ChooseType2 SVar:ChooseType2:DB$ ChooseType | Defined$ You | Type$ Basic Land | AILogic$ MostNeededType | SubAbility$ AnimateFirst -SVar:AnimateFirst:DB$ AnimateAll | ValidCards$ Land.IsRemembered | Types$ ChosenType | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | RemoveAllAbilities$ True | SubAbility$ DBCleanup +SVar:AnimateFirst:DB$ AnimateAll | ValidCards$ Land.IsRemembered | Types$ ChosenType | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:PhaseArtifact:DB$ Phases | ValidTgts$ Artifact | TgtPrompt$ Choose a artifact | SpellDescription$ Target artifact phases out. SVar:RemAIDeck:True diff --git a/forge-gui/res/cardsfolder/v/vithian_stinger.txt b/forge-gui/res/cardsfolder/v/vithian_stinger.txt index de2c20d2a9b..a21b6cb54d0 100644 --- a/forge-gui/res/cardsfolder/v/vithian_stinger.txt +++ b/forge-gui/res/cardsfolder/v/vithian_stinger.txt @@ -2,7 +2,7 @@ Name:Vithian Stinger ManaCost:2 R Types:Creature Human Shaman PT:0/1 -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. K:Unearth:1 R SVar:Picture:http://www.wizards.com/global/images/magic/general/vithian_stinger.jpg -Oracle:{T}: Vithian Stinger deals 1 damage to target creature or player.\nUnearth {1}{R} ({1}{R}: Return this card from your graveyard to the battlefield. It gains haste. Exile it at the beginning of the next end step or if it would leave the battlefield. Unearth only as a sorcery.) +Oracle:{T}: Vithian Stinger deals 1 damage to any target.\nUnearth {1}{R} ({1}{R}: Return this card from your graveyard to the battlefield. It gains haste. Exile it at the beginning of the next end step or if it would leave the battlefield. Unearth only as a sorcery.) diff --git a/forge-gui/res/cardsfolder/v/vivid_flying_fish.txt b/forge-gui/res/cardsfolder/v/vivid_flying_fish.txt new file mode 100644 index 00000000000..28af3be2ed8 --- /dev/null +++ b/forge-gui/res/cardsfolder/v/vivid_flying_fish.txt @@ -0,0 +1,6 @@ +Name:Vivid Flying Fish +ManaCost:1 U +Types:Creature Fish Lizard +S:Mode$ Continuous | Affected$ Card.Self+attacking | AddKeyword$ Flying | Description$ CARDNAME has flying as long as it's attacking. +Oracle:Vivid Flying Fish has flying as long as it's attacking. (It can't be blocked except by creatures with flying or reach.) +PT:1/1 diff --git a/forge-gui/res/cardsfolder/v/vivien_of_the_arkbow.txt b/forge-gui/res/cardsfolder/v/vivien_of_the_arkbow.txt new file mode 100644 index 00000000000..d10e59f29ae --- /dev/null +++ b/forge-gui/res/cardsfolder/v/vivien_of_the_arkbow.txt @@ -0,0 +1,11 @@ +Name:Vivien of the Arkbow +ManaCost:4 G G +Types:Legendary Planeswalker Vivien +A:AB$ PutCounter | Cost$ AddCounter<2/LOYALTY> | Planeswalker$ True | CounterNum$ 2 | CounterType$ P1P1 | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Creature | TgtPrompt$ Select target creature | Planeswalker$ True | SpellDescription$ Put two +1/+1 counters on up to one target creature. +A:AB$ Pump | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | | ValidTgts$ Creature.YouCtrl | AILogic$ PowerDmg | TgtPrompt$ Select target creature you control | SubAbility$ TailDamage | StackDescription$ None | SpellDescription$ Target creature you control deals damage equal to its power to target creature you don't control. +SVar:TailDamage:DB$ DealDamage | ValidTgts$ Creature.YouDontCtrl | AILogic$ PowerDmg | TgtPrompt$ Select target creature you don't control | NumDmg$ X | References$ X | ConditionDefined$ Targeted | ConditionPresent$ Creature | ConditionCompare$ EQ1 | DamageSource$ ParentTarget +SVar:X:ParentTargeted$CardPower +A:AB$ PumpAll | Cost$ SubCounter<9/LOYALTY> | Planeswalker$ True | Ultimate$ True | ValidCards$ Creature.YouCtrl | NumAtt$ +4 | NumDef$ +4 | KW$ Trample | SpellDescription$ Creatures you control get +4/+4 and gain trample until end of turn. +DeckHas:Ability$Token +Oracle:[+2]: Put two +1/+1 counters on up to one target creature.\n [−3]: Target creature you control deals damage equal to its power to target creature you don’t control.\n[−9]: Creatures you control get +4/+4 and gain trample until end of turn. +Loyalty:5 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/v/vivien_reid.txt b/forge-gui/res/cardsfolder/v/vivien_reid.txt new file mode 100644 index 00000000000..33e78a5e490 --- /dev/null +++ b/forge-gui/res/cardsfolder/v/vivien_reid.txt @@ -0,0 +1,9 @@ +Name:Vivien Reid +ManaCost:3 G G +Types:Legendary Planeswalker Vivien +A:AB$ Dig | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | DigNum$ 4 | ChangeNum$ 1 | Optional$ True | ChangeValid$ Creature,Land | ForceRevealToController$ True | SpellDescription$ Look at the top four cards of your library. You may reveal a creature or land card from among them and put it into your hand. Put the rest on the bottom of your library in any order. +A:AB$ Destroy | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | ValidTgts$ Artifact,Enchantment,Creature.withFlying | TgtPrompt$ Select target artifact, enchantment or creature with flying | SpellDescription$ Destroy target artifact, enchantment or creature with flying. +A:AB$ Effect | Cost$ SubCounter<8/LOYALTY> | Planeswalker$ True | Ultimate$ True | Name$ Emblem - Vivien Reid | Image$ emblem_vivien_ried | Duration$ Permanent | StaticAbilities$ STVivien | AILogic$ Always | SpellDescription$ You get an emblem with "Creatures you control get +2/+2 and have vigilance, trample, and indestructible." +SVar:STVivien:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.YouCtrl | AffectedZone$ Battlefield | AddPower$ +2 | AddToughness$ +2 | AddKeyword$ Vigilance & Trample & Indestructible +Oracle:[+1]: Look at the top four cards of your library. You may reveal a creature or land card from among them and put it into your hand. Put the rest on the bottom of your library in a random order.\n[-3]: Destroy target artifact, enchantment, or creature with flying.\n[-8]: You get an emblem with "Creatures you control get +2/+2 and have vigilance, trample, and indestructible." +Loyalty:5 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/v/viviens_invocation.txt b/forge-gui/res/cardsfolder/v/viviens_invocation.txt new file mode 100644 index 00000000000..f9ce13877ce --- /dev/null +++ b/forge-gui/res/cardsfolder/v/viviens_invocation.txt @@ -0,0 +1,8 @@ +Name:Vivien's Invocation +ManaCost:5 G G +Types:Sorcery +A:SP$ Dig | Cost$ 5 G G | DigNum$ 7 | ChangeNum$ 1 | ChangeValid$ Creature | Optional$ True | RestRandomOrder$ True | DestinationZone$ Battlefield | ForceRevealToController$ True | SpellDescription$ Look at the top seven cards of your library. You may put a creature card from among them onto the battlefield. Put the rest on the bottom of your library in a random order. When a creature is put onto the battlefield this way, it deals damage equals to its power to target creature an opponent controls. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature | ValidCause$ Card.Self | Execute$ DBDealDamage | Secondary$ True | TriggerDescription$ When a creature is put onto the battlefield this way, it deals damage equals to its power to target creature an opponent controls. +SVar:DBDealDamage:DB$ DealDamage | ValidTgts$ Creature.OppCtrl | AILogic$ PowerDmg | TgtPrompt$ Select target creature an opponent controls | NumDmg$ X | References$ X | DamageSource$ TriggeredCard +SVar:X:TriggeredCard$CardPower +Oracle:Look at the top seven cards of your library. You may put a creature card from among them onto the battlefield. Put the rest on the bottom of your library in a random order. When a creature is put onto the battlefield this way, it deals damage equals to its power to target creature an opponent controls. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/v/viviens_jaguar.txt b/forge-gui/res/cardsfolder/v/viviens_jaguar.txt new file mode 100644 index 00000000000..8bd2efacc7a --- /dev/null +++ b/forge-gui/res/cardsfolder/v/viviens_jaguar.txt @@ -0,0 +1,7 @@ +Name:Vivien's Jaguar +ManaCost:2 G +Types:Creature Cat Spirit +A:AB$ ChangeZone | Cost$ 2 G | Origin$ Graveyard | Destination$ Hand | ActivationZone$ Graveyard | IsPresent$ Planeswalker.Vivien+YouCtrl | SpellDescription$ Return CARDNAME from your graveyard to your hand. Activate this ability only if you control a Vivien planeswalker. +DeckHints:Type$Vivien +Oracle:{2}{G}: Return Vivien’s Jaguar from your graveyard to your hand. Activate this ability only if you control a Vivien planeswalker. +PT:3/2 diff --git a/forge-gui/res/cardsfolder/v/volcanic_geyser.txt b/forge-gui/res/cardsfolder/v/volcanic_geyser.txt index 5c2e8613e69..178696cd4eb 100644 --- a/forge-gui/res/cardsfolder/v/volcanic_geyser.txt +++ b/forge-gui/res/cardsfolder/v/volcanic_geyser.txt @@ -1,7 +1,7 @@ Name:Volcanic Geyser ManaCost:X R R Types:Instant -A:SP$ DealDamage | Cost$ X R R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to target creature or player. +A:SP$ DealDamage | Cost$ X R R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals X damage to any target. SVar:X:Count$xPaid SVar:Picture:http://www.wizards.com/global/images/magic/general/volcanic_geyser.jpg -Oracle:Volcanic Geyser deals X damage to target creature or player. +Oracle:Volcanic Geyser deals X damage to any target. diff --git a/forge-gui/res/cardsfolder/v/volcanic_hammer.txt b/forge-gui/res/cardsfolder/v/volcanic_hammer.txt index de2038b7793..a112f3cb1a6 100644 --- a/forge-gui/res/cardsfolder/v/volcanic_hammer.txt +++ b/forge-gui/res/cardsfolder/v/volcanic_hammer.txt @@ -1,6 +1,6 @@ Name:Volcanic Hammer ManaCost:1 R Types:Sorcery -A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. +A:SP$ DealDamage | Cost$ 1 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. SVar:Picture:http://resources.wizards.com/magic/cards/p2/en-us/card6593.jpg -Oracle:Volcanic Hammer deals 3 damage to target creature or player. +Oracle:Volcanic Hammer deals 3 damage to any target. diff --git a/forge-gui/res/cardsfolder/v/volcanic_rambler.txt b/forge-gui/res/cardsfolder/v/volcanic_rambler.txt index 1a7bd61a906..be43bdf5926 100644 --- a/forge-gui/res/cardsfolder/v/volcanic_rambler.txt +++ b/forge-gui/res/cardsfolder/v/volcanic_rambler.txt @@ -2,6 +2,6 @@ Name:Volcanic Rambler ManaCost:5 R Types:Creature Elemental PT:6/4 -A:AB$ DealDamage | Cost$ 2 R | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target player. +A:AB$ DealDamage | Cost$ 2 R | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target player or planeswalker. SVar:Picture:http://www.wizards.com/global/images/magic/general/volcanic_rambler.jpg -Oracle:{2}{R}: Voclanic Rambler deals 1 damage to target player. \ No newline at end of file +Oracle:{2}{R}: Volcanic Rambler deals 1 damage to target player or planeswalker. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/v/volcanic_spray.txt b/forge-gui/res/cardsfolder/v/volcanic_spray.txt index a2715bdf723..bdf9c5114f7 100644 --- a/forge-gui/res/cardsfolder/v/volcanic_spray.txt +++ b/forge-gui/res/cardsfolder/v/volcanic_spray.txt @@ -1,7 +1,7 @@ Name:Volcanic Spray ManaCost:1 R Types:Sorcery -K:Flashback 1 R +K:Flashback:1 R A:SP$ DamageAll | Cost$ 1 R | NumDmg$ 1 | ValidCards$ Creature.withoutFlying | ValidPlayers$ Player | ValidDescription$ each creature without flying and each player. | SpellDescription$ CARDNAME deals 1 damage to each creature without flying and each player. SVar:Picture:http://www.wizards.com/global/images/magic/general/volcanic_spray.jpg Oracle:Volcanic Spray deals 1 damage to each creature without flying and each player.\nFlashback {1}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/v/volley_of_boulders.txt b/forge-gui/res/cardsfolder/v/volley_of_boulders.txt index 609ffa91a93..0b9f39781a0 100644 --- a/forge-gui/res/cardsfolder/v/volley_of_boulders.txt +++ b/forge-gui/res/cardsfolder/v/volley_of_boulders.txt @@ -1,7 +1,7 @@ Name:Volley of Boulders ManaCost:8 R Types:Sorcery -K:Flashback R R R R R R -A:SP$ DealDamage | Cost$ 8 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to distribute damage to | NumDmg$ 6 | TargetMin$ 1 | TargetMax$ 6 | DividedAsYouChoose$ 6 | SpellDescription$ CARDNAME deals 6 damage divided as you choose among any number of target creatures and/or players. +K:Flashback:R R R R R R +A:SP$ DealDamage | Cost$ 8 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to distribute damage to | NumDmg$ 6 | TargetMin$ 1 | TargetMax$ 6 | DividedAsYouChoose$ 6 | SpellDescription$ CARDNAME deals 6 damage divided as you choose among any number of targets. SVar:Picture:http://www.wizards.com/global/images/magic/general/volley_of_boulders.jpg -Oracle:Volley of Boulders deals 6 damage divided as you choose among any number of target creatures and/or players.\nFlashback {R}{R}{R}{R}{R}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.) +Oracle:Volley of Boulders deals 6 damage divided as you choose among any number of targets.\nFlashback {R}{R}{R}{R}{R}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/v/volley_veteran.txt b/forge-gui/res/cardsfolder/v/volley_veteran.txt new file mode 100644 index 00000000000..e1975d97c70 --- /dev/null +++ b/forge-gui/res/cardsfolder/v/volley_veteran.txt @@ -0,0 +1,9 @@ +Name:Volley Veteran +ManaCost:3 R +Types:Creature Goblin Warrior +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals damage to target creature an opponent controls equal to the number of Goblins you control. +SVar:TrigDealDamage:DB$ DealDamage | NumDmg$ X | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature an opponent controls +SVar:X:Count$Valid Goblin.YouCtrl +DeckHints:Type$Goblin +Oracle:When Volley Veteran enters the battlefield, it deals damage to target creature an opponent controls equal to the number of Goblins you control. +PT:4/2 \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/v/volt_charge.txt b/forge-gui/res/cardsfolder/v/volt_charge.txt index e3141da3f8d..93cad150613 100644 --- a/forge-gui/res/cardsfolder/v/volt_charge.txt +++ b/forge-gui/res/cardsfolder/v/volt_charge.txt @@ -1,9 +1,9 @@ Name:Volt Charge ManaCost:2 R Types:Instant -A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | SubAbility$ DBProliferate | SpellDescription$ CARDNAME deals 3 damage to target creature or player. Proliferate. (You choose any number of permanents and/or players with counters on them, then give each another counter of a kind already there.) +A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SubAbility$ DBProliferate | SpellDescription$ CARDNAME deals 3 damage to any target. Proliferate. (You choose any number of permanents and/or players with counters on them, then give each another counter of a kind already there.) SVar:DBProliferate:DB$Proliferate DeckHas:Ability$Proliferate DeckNeeds:Ability$Counters SVar:Picture:http://www.wizards.com/global/images/magic/general/volt_charge.jpg -Oracle:Volt Charge deals 3 damage to target creature or player. Proliferate. (You choose any number of permanents and/or players with counters on them, then give each another counter of a kind already there.) +Oracle:Volt Charge deals 3 damage to any target. Proliferate. (You choose any number of permanents and/or players with counters on them, then give each another counter of a kind already there.) diff --git a/forge-gui/res/cardsfolder/v/voodoo_doll.txt b/forge-gui/res/cardsfolder/v/voodoo_doll.txt index c36e29dad4f..fa84cae9150 100644 --- a/forge-gui/res/cardsfolder/v/voodoo_doll.txt +++ b/forge-gui/res/cardsfolder/v/voodoo_doll.txt @@ -3,11 +3,11 @@ ManaCost:6 Types:Artifact T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigPutCounter | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your upkeep, put a pin counter on CARDNAME. T:Mode$ Phase | Phase$ End of Turn | IsPresent$ Card.Self+untapped | PresentCompare$ EQ1 | ValidPlayer$ You | Execute$ TrigDestroy | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your end step, if CARDNAME is untapped, destroy CARDNAME and it deals damage to you equal to the number of pin counters on it. -A:AB$ DealDamage | Cost$ X X T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to the number of pin counters on it to target creature or player. X is the number of pin counters on CARDNAME. +A:AB$ DealDamage | Cost$ X X T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X | SpellDescription$ CARDNAME deals damage equal to the number of pin counters on it to any target. X is the number of pin counters on CARDNAME. SVar:TrigPutCounter:DB$PutCounter | CounterType$ PIN | CounterNum$ 1 | Defined$ Self SVar:TrigDestroy:DB$Destroy | Defined$ Self | SubAbility$ DBDealDamageYou SVar:DBDealDamageYou:DB$DealDamage | Defined$ You | NumDmg$ X | References$ X SVar:X:Count$CardCounters.PIN SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/voodoo_doll.jpg -Oracle:At the beginning of your upkeep, put a pin counter on Voodoo Doll.\nAt the beginning of your end step, if Voodoo Doll is untapped, destroy Voodoo Doll and it deals damage to you equal to the number of pin counters on it.\n{X}{X}, {T}: Voodoo Doll deals damage equal to the number of pin counters on it to target creature or player. X is the number of pin counters on Voodoo Doll. +Oracle:At the beginning of your upkeep, put a pin counter on Voodoo Doll.\nAt the beginning of your end step, if Voodoo Doll is untapped, destroy Voodoo Doll and it deals damage to you equal to the number of pin counters on it.\n{X}{X}, {T}: Voodoo Doll deals damage equal to the number of pin counters on it to any target. X is the number of pin counters on Voodoo Doll. diff --git a/forge-gui/res/cardsfolder/v/voracious_dragon.txt b/forge-gui/res/cardsfolder/v/voracious_dragon.txt index 59a0c081da7..55e713b413b 100644 --- a/forge-gui/res/cardsfolder/v/voracious_dragon.txt +++ b/forge-gui/res/cardsfolder/v/voracious_dragon.txt @@ -4,8 +4,8 @@ Types:Creature Dragon PT:4/4 K:Flying K:Devour:1 -T:Mode$ ChangesZone | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals damage to target creature or player equal to twice the number of Goblins it devoured. -SVar:TrigDamage:DB$DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | References$ X +T:Mode$ ChangesZone | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals damage to any target equal to twice the number of Goblins it devoured. +SVar:TrigDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | References$ X SVar:X:Count$Devoured Card.Goblin/Twice SVar:Picture:http://www.wizards.com/global/images/magic/general/voracious_dragon.jpg -Oracle:Flying\nDevour 1 (As this enters the battlefield, you may sacrifice any number of creatures. This creature enters the battlefield with that many +1/+1 counters on it.)\nWhen Voracious Dragon enters the battlefield, it deals damage to target creature or player equal to twice the number of Goblins it devoured. +Oracle:Flying\nDevour 1 (As this enters the battlefield, you may sacrifice any number of creatures. This creature enters the battlefield with that many +1/+1 counters on it.)\nWhen Voracious Dragon enters the battlefield, it deals damage to any target equal to twice the number of Goblins it devoured. diff --git a/forge-gui/res/cardsfolder/v/vulshok_replica.txt b/forge-gui/res/cardsfolder/v/vulshok_replica.txt index 4362a428678..ef1600c2c08 100644 --- a/forge-gui/res/cardsfolder/v/vulshok_replica.txt +++ b/forge-gui/res/cardsfolder/v/vulshok_replica.txt @@ -2,7 +2,7 @@ Name:Vulshok Replica ManaCost:3 Types:Artifact Creature Berserker PT:3/1 -A:AB$ DealDamage | Cost$ 1 R Sac<1/CARDNAME> | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target player. +A:AB$ DealDamage | Cost$ 1 R Sac<1/CARDNAME> | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to target player or planeswalker. DeckNeeds:Color$Red SVar:Picture:http://www.wizards.com/global/images/magic/general/vulshok_replica.jpg -Oracle:{1}{R}, Sacrifice Vulshok Replica: Vulshok Replica deals 3 damage to target player. +Oracle:{1}{R}, Sacrifice Vulshok Replica: Vulshok Replica deals 3 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/v/vulshok_sorcerer.txt b/forge-gui/res/cardsfolder/v/vulshok_sorcerer.txt index e2ab337d19b..2d0b20d6e13 100644 --- a/forge-gui/res/cardsfolder/v/vulshok_sorcerer.txt +++ b/forge-gui/res/cardsfolder/v/vulshok_sorcerer.txt @@ -3,7 +3,7 @@ ManaCost:1 R R Types:Creature Human Shaman PT:1/1 K:Haste -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:NonCombatPriority:1 SVar:Picture:http://resources.wizards.com/magic/cards/5dn/en-us/card51177.jpg -Oracle:Haste\n{T}: Vulshok Sorcerer deals 1 damage to target creature or player. \ No newline at end of file +Oracle:Haste\n{T}: Vulshok Sorcerer deals 1 damage to any target. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/w/walking_ballista.txt b/forge-gui/res/cardsfolder/w/walking_ballista.txt index c6a9ed88ebb..441f05fddc4 100644 --- a/forge-gui/res/cardsfolder/w/walking_ballista.txt +++ b/forge-gui/res/cardsfolder/w/walking_ballista.txt @@ -4,7 +4,7 @@ Types:Artifact Creature Construct PT:0/0 K:etbCounter:P1P1:X A:AB$ PutCounter | Cost$ 4 | CounterType$ P1P1 | CounterNum$ 1 | SpellDescription$ Put a +1/+1 counter on CARDNAME. -A:AB$ DealDamage | AILogic$ Triskelion | Cost$ SubCounter<1/P1P1> | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | AILogic$ Triskelion | Cost$ SubCounter<1/P1P1> | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:X:Count$xPaid SVar:Picture:http://www.wizards.com/global/images/magic/general/walking_ballista.jpg -Oracle:Walking Ballista enters the battlefield with X +1/+1 counters on it.\n{4}: Put a +1/+1 counter on Walking Ballista.\nRemove a +1/+1 counter from Walking Ballista: It deals 1 damage to target creature or player. \ No newline at end of file +Oracle:Walking Ballista enters the battlefield with X +1/+1 counters on it.\n{4}: Put a +1/+1 counter on Walking Ballista.\nRemove a +1/+1 counter from Walking Ballista: It deals 1 damage to any target. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/w/wall_of_forgotten_pharaohs.txt b/forge-gui/res/cardsfolder/w/wall_of_forgotten_pharaohs.txt index daa82545f3b..088ece3cc92 100644 --- a/forge-gui/res/cardsfolder/w/wall_of_forgotten_pharaohs.txt +++ b/forge-gui/res/cardsfolder/w/wall_of_forgotten_pharaohs.txt @@ -3,7 +3,7 @@ ManaCost:2 Types:Artifact Creature Wall PT:0/4 K:Defender -A:AB$ DealDamage | Cost$ T | ValidTgts$ Player | TgtPrompt$ Select target player | NumDmg$ 1 | Activation$ Desert | SpellDescription$ CARDNAME deals 1 damage to target player. Activate this ability only if you control a Desert or there is a Desert card in your graveyard. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 | Activation$ Desert | SpellDescription$ CARDNAME deals 1 damage to target player or planeswalker. Activate this ability only if you control a Desert or there is a Desert card in your graveyard. DeckHints:Type$Desert SVar:Picture:http://www.wizards.com/global/images/magic/general/wall_of_forgotten_pharaohs.jpg -Oracle:Defender\n{T}: Wall of Forgotten Pharaohs deals 1 damage to target player. Activate this ability only if you control a Desert or there is a Desert card in your graveyard. +Oracle:Defender\n{T}: Wall of Forgotten Pharaohs deals 1 damage to target player or planeswalker. Activate this ability only if you control a Desert or there is a Desert card in your graveyard. diff --git a/forge-gui/res/cardsfolder/w/wall_of_mist.txt b/forge-gui/res/cardsfolder/w/wall_of_mist.txt new file mode 100644 index 00000000000..c3ef6c3ec80 --- /dev/null +++ b/forge-gui/res/cardsfolder/w/wall_of_mist.txt @@ -0,0 +1,6 @@ +Name:Wall of Mist +ManaCost:1 U +Types:Creature Wall +K:Defender +Oracle:Defender (This creature can't attack.) +PT:0/5 diff --git a/forge-gui/res/cardsfolder/w/wall_of_souls.txt b/forge-gui/res/cardsfolder/w/wall_of_souls.txt index 4dc4e4af6a2..54c86cdf527 100644 --- a/forge-gui/res/cardsfolder/w/wall_of_souls.txt +++ b/forge-gui/res/cardsfolder/w/wall_of_souls.txt @@ -3,9 +3,9 @@ ManaCost:1 B Types:Creature Wall PT:0/4 K:Defender -T:Mode$ DamageDoneOnce | CombatDamage$ True | ValidTarget$ Card.Self | Execute$ TrigDamage | TriggerDescription$ Whenever CARDNAME is dealt combat damage, it deals that much damage to target opponent. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | NumDmg$ X | References$ X +T:Mode$ DamageDoneOnce | CombatDamage$ True | ValidTarget$ Card.Self | Execute$ TrigDamage | TriggerDescription$ Whenever CARDNAME is dealt combat damage, it deals that much damage to target opponent or planeswalker. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Opponent,Planeswalker | TgtPrompt$ Select target opponent or planeswalker | NumDmg$ X | References$ X SVar:X:TriggerCount$DamageAmount SVar:HasCombatEffect:TRUE SVar:Picture:http://www.wizards.com/global/images/magic/general/wall_of_souls.jpg -Oracle:Defender (This creature can't attack.)\nWhenever Wall of Souls is dealt combat damage, it deals that much damage to target opponent. +Oracle:Defender (This creature can't attack.)\nWhenever Wall of Souls is dealt combat damage, it deals that much damage to target opponent or planeswalker. diff --git a/forge-gui/res/cardsfolder/w/wandering_mage.txt b/forge-gui/res/cardsfolder/w/wandering_mage.txt index 026415bf0ab..b44763760da 100644 --- a/forge-gui/res/cardsfolder/w/wandering_mage.txt +++ b/forge-gui/res/cardsfolder/w/wandering_mage.txt @@ -4,6 +4,6 @@ Types:Creature Human Cleric Wizard PT:0/3 A:AB$ PreventDamage | Cost$ W PayLife<1> | ValidTgts$ Creature | Amount$ 2 | SpellDescription$ Prevent the next 2 damage that would be dealt to target creature this turn. A:AB$ PreventDamage | Cost$ U | ValidTgts$ Cleric,Wizard | TgtPrompt$ Select target Cleric or Wizard | Amount$ 1 | SpellDescription$ Prevent the next 1 damage that would be dealt to target Cleric or Wizard this turn. -A:AB$ PreventDamage | Cost$ B AddCounter<1/M1M1/Creature.YouCtrl/a creature you control> | ValidTgts$ Player | Amount$ 2 | SpellDescription$ Prevent the next 2 damage that would be dealt to target player this turn. +A:AB$ PreventDamage | Cost$ B AddCounter<1/M1M1/Creature.YouCtrl/a creature you control> | ValidTgts$ Player,Planeswalker | Amount$ 2 | SpellDescription$ Prevent the next 2 damage that would be dealt to target player or planeswalker this turn. SVar:Picture:http://www.wizards.com/global/images/magic/general/wandering_mage.jpg -Oracle:{W}, Pay 1 life: Prevent the next 2 damage that would be dealt to target creature this turn.\n{U}: Prevent the next 1 damage that would be dealt to target Cleric or Wizard creature this turn.\n{B}, Put a -1/-1 counter on a creature you control: Prevent the next 2 damage that would be dealt to target player this turn. +Oracle:{W}, Pay 1 life: Prevent the next 2 damage that would be dealt to target creature this turn.\n{U}: Prevent the next 1 damage that would be dealt to target Cleric or Wizard creature this turn.\n{B}, Put a -1/-1 counter on a creature you control: Prevent the next 2 damage that would be dealt to target player or planeswalker this turn. diff --git a/forge-gui/res/cardsfolder/w/ward_of_piety.txt b/forge-gui/res/cardsfolder/w/ward_of_piety.txt index eafe9d1ee6c..66892afb8aa 100644 --- a/forge-gui/res/cardsfolder/w/ward_of_piety.txt +++ b/forge-gui/res/cardsfolder/w/ward_of_piety.txt @@ -3,9 +3,9 @@ ManaCost:1 W Types:Enchantment Aura K:Enchant creature A:SP$ Attach | Cost$ 1 W | ValidTgts$ Creature | AILogic$ Pump -A:AB$ Effect | Cost$ 1 W | Name$ Redirection Ward | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to redirect the damage to | ReplacementEffects$ WardDamage | SVars$ WardDamage,WardDmg | References$ WardDamage,WardDmg | RememberObjects$ Targeted | ImprintCards$ Enchanted | ExileOnMoved$ Battlefield | SpellDescription$ The next 1 damage that would be dealt to enchanted creature this turn is dealt to target creature or player instead. -SVar:WardDamage:Event$ DamageDone | ValidTarget$ Creature.IsImprinted | ReplaceWith$ WardDmg | DamageTarget$ Remembered | Description$ The next 1 damage that would be dealt to enchanted creature this turn is dealt to target creature or player instead. +A:AB$ Effect | Cost$ 1 W | Name$ Redirection Ward | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to redirect the damage to | ReplacementEffects$ WardDamage | SVars$ WardDamage,WardDmg | References$ WardDamage,WardDmg | RememberObjects$ Targeted | ImprintCards$ Enchanted | ExileOnMoved$ Battlefield | SpellDescription$ The next 1 damage that would be dealt to enchanted creature this turn is dealt to any target instead. +SVar:WardDamage:Event$ DamageDone | ValidTarget$ Creature.IsImprinted | ReplaceWith$ WardDmg | DamageTarget$ Remembered | Description$ The next 1 damage that would be dealt to enchanted creature this turn is dealt to any target instead. SVar:WardDmg:DB$ ReplaceSplitDamage | DamageTarget$ Remembered SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/ward_of_piety.jpg -Oracle:Enchant creature\n{1}{W}: The next 1 damage that would be dealt to enchanted creature this turn is dealt to target creature or player instead. +Oracle:Enchant creature\n{1}{W}: The next 1 damage that would be dealt to enchanted creature this turn is dealt to any target instead. diff --git a/forge-gui/res/cardsfolder/w/warleaders_helix.txt b/forge-gui/res/cardsfolder/w/warleaders_helix.txt index d539aa4cdb5..076e907a08a 100644 --- a/forge-gui/res/cardsfolder/w/warleaders_helix.txt +++ b/forge-gui/res/cardsfolder/w/warleaders_helix.txt @@ -1,7 +1,7 @@ Name:Warleader's Helix ManaCost:2 R W Types:Instant -A:SP$ DealDamage | Cost$ 2 R W | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 4 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 4 damage to target creature or player and you gain 4 life. +A:SP$ DealDamage | Cost$ 2 R W | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 4 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 4 damage to any target and you gain 4 life. SVar:DBGainLife:DB$ GainLife | LifeAmount$ 4 SVar:Picture:http://www.wizards.com/global/images/magic/general/warleaders_helix.jpg -Oracle:Warleader's Helix deals 4 damage to target creature or player and you gain 4 life. +Oracle:Warleader's Helix deals 4 damage to any target and you gain 4 life. diff --git a/forge-gui/res/cardsfolder/w/warstorm_surge.txt b/forge-gui/res/cardsfolder/w/warstorm_surge.txt index 2e760eaee1c..c29559df424 100644 --- a/forge-gui/res/cardsfolder/w/warstorm_surge.txt +++ b/forge-gui/res/cardsfolder/w/warstorm_surge.txt @@ -1,8 +1,8 @@ Name:Warstorm Surge ManaCost:5 R Types:Enchantment -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever a creature enters the battlefield under your control, it deals damage equal to its power to target creature or player. -SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ X | DamageSource$ TriggeredCard +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever a creature enters the battlefield under your control, it deals damage equal to its power to any target. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ X | DamageSource$ TriggeredCard SVar:X:TriggeredCard$CardPower SVar:Picture:http://www.wizards.com/global/images/magic/general/warstorm_surge.jpg -Oracle:Whenever a creature enters the battlefield under your control, it deals damage equal to its power to target creature or player. +Oracle:Whenever a creature enters the battlefield under your control, it deals damage equal to its power to any target. diff --git a/forge-gui/res/cardsfolder/w/weaver_of_lightning.txt b/forge-gui/res/cardsfolder/w/weaver_of_lightning.txt index 78d6b98470f..c1d4122c88f 100644 --- a/forge-gui/res/cardsfolder/w/weaver_of_lightning.txt +++ b/forge-gui/res/cardsfolder/w/weaver_of_lightning.txt @@ -4,6 +4,6 @@ Types:Creature Human Shaman PT:1/4 K:Reach T:Mode$ SpellCast | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever you cast an instant or sorcery spell, CARDNAME deals 1 damage to target creature an opponent controls. -SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature an oppoonent controls | NumDmg$ 1 +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature an opponent controls | NumDmg$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/weaver_of_lightning.jpg Oracle:Reach\nWhenever you cast an instant or sorcery spell, Weaver of Lightning deals 1 damage to target creature an opponent controls. diff --git a/forge-gui/res/cardsfolder/w/where_ancients_tread.txt b/forge-gui/res/cardsfolder/w/where_ancients_tread.txt index 7aca84f9960..99ffd7d247a 100644 --- a/forge-gui/res/cardsfolder/w/where_ancients_tread.txt +++ b/forge-gui/res/cardsfolder/w/where_ancients_tread.txt @@ -1,7 +1,7 @@ Name:Where Ancients Tread ManaCost:4 R Types:Enchantment -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.powerGE5+YouCtrl | OptionalDecider$ You | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever a creature with power 5 or greater enters the battlefield under your control, you may have CARDNAME deal 5 damage to target creature or player. -SVar:TrigDamage:DB$DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 5 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.powerGE5+YouCtrl | OptionalDecider$ You | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever a creature with power 5 or greater enters the battlefield under your control, you may have CARDNAME deal 5 damage to any target. +SVar:TrigDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 5 SVar:Picture:http://www.wizards.com/global/images/magic/general/where_ancients_tread.jpg -Oracle:Whenever a creature with power 5 or greater enters the battlefield under your control, you may have Where Ancients Tread deal 5 damage to target creature or player. +Oracle:Whenever a creature with power 5 or greater enters the battlefield under your control, you may have Where Ancients Tread deal 5 damage to any target. diff --git a/forge-gui/res/cardsfolder/w/which_of_you_burns_brightest.txt b/forge-gui/res/cardsfolder/w/which_of_you_burns_brightest.txt index 7be6292aa4d..27bd3070cfe 100644 --- a/forge-gui/res/cardsfolder/w/which_of_you_burns_brightest.txt +++ b/forge-gui/res/cardsfolder/w/which_of_you_burns_brightest.txt @@ -1,8 +1,10 @@ Name:Which of You Burns Brightest? ManaCost:no cost Types:Scheme -T:Mode$ SetInMotion | ValidCard$ Card.Self | Execute$ DarkEffect | TriggerZones$ Command | OptionalDecider$ You | TriggerDescription$ When you set this scheme in motion, you may pay {X}. If you do, this scheme deals X damage to target opponent and each creature they control. -SVar:DarkEffect:AB$ DamageAll | Cost$ X | NumDmg$ X | ValidTgts$ Player | TgtPrompt$ Select a player | ValidCards$ Creature | ValidPlayers$ Targeted | ValidDescription$ target player and each creature they control. | References$ X +T:Mode$ SetInMotion | ValidCard$ Card.Self | Execute$ DarkEffect | TriggerZones$ Command | OptionalDecider$ You | TriggerDescription$ When you set this scheme in motion, you may pay {X}. If you do, this scheme deals X damage to target opponent or planeswalker and each creature or that planeswalker's controller controls. +SVar:DarkEffect:AB$ DealDamage | Cost$ X | ValidTgts$ Opponent,Planeswalker | TgtPrompt$ Select an opponent or planeswalker | NumDmg$ X | References$ X | SubAbility$ DmgAll | DamageMap$ True +SVar:DmgAll:DB$ DamageAll | NumDmg$ X | References$ X | ValidCards$ Creature.ControlledBy TargetedOrController | SubAbility$ DBDamageResolve +SVar:DBDamageResolve:DB$ DamageResolve SVar:X:Count$xPaid SVar:Picture:https://downloads.cardforge.org/images/cards/ARC/Which of You Burns Brightest.full.jpg -Oracle:When you set this scheme in motion, you may pay {X}. If you do, this scheme deals X damage to target opponent and each creature they control. +Oracle:When you set this scheme in motion, you may pay {X}. If you do, this scheme deals X damage to target opponent or planeswalker and each creature or that planeswalker's controller controls. diff --git a/forge-gui/res/cardsfolder/w/whiptongue_hydra.txt b/forge-gui/res/cardsfolder/w/whiptongue_hydra.txt new file mode 100644 index 00000000000..60321631093 --- /dev/null +++ b/forge-gui/res/cardsfolder/w/whiptongue_hydra.txt @@ -0,0 +1,12 @@ +Name:Whiptongue Hydra +ManaCost:5 G +Types:Creature Lizard Hydra +PT:4/4 +K:Reach +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDestroyAll | TriggerDescription$ When CARDNAME enters the battlefield, destroy all creatures with flying. Put a +1/+1 counter on CARDNAME for each creature destroyed this way. +SVar:TrigDestroyAll:DB$DestroyAll | ValidCards$ Creature.withFlying | RememberDestroyed$ True | SubAbility$ DBPutCounter +SVar:DBPutCounter:DB$PutCounter | CounterType$ P1P1 | CounterNum$ X | References$ X | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:Remembered$Amount +DeckHas:Ability$Counters +Oracle:Reach\nWhen Whiptongue Hydra enters the battlefield, destroy all creatures with flying. Put a +1/+1 counter on Whiptongue Hydra for each creature destroyed this way. diff --git a/forge-gui/res/cardsfolder/w/whisper_blood_liturgist.txt b/forge-gui/res/cardsfolder/w/whisper_blood_liturgist.txt index 9b537e74629..48a57053e75 100644 --- a/forge-gui/res/cardsfolder/w/whisper_blood_liturgist.txt +++ b/forge-gui/res/cardsfolder/w/whisper_blood_liturgist.txt @@ -4,5 +4,4 @@ Types:Legendary Creature Human Cleric PT:2/2 A:AB$ ChangeZone | Cost$ T Sac<2/Creature> | TgtPrompt$ Choose target creature card in your graveyard | ValidTgts$ Creature.YouCtrl | Origin$ Graveyard | Destination$ Battlefield | SpellDescription$ Return target creature card from your graveyard to the battlefield. SVar:AIPreference:SacCost$Creature.cmcLE3 -SVar:RemAIDeck:True Oracle:{T}, Sacrifice two creatures: Return target creature card from your graveyard to the battlefield. diff --git a/forge-gui/res/cardsfolder/w/wild_hunger.txt b/forge-gui/res/cardsfolder/w/wild_hunger.txt index 61b12d836e6..2e107a86380 100644 --- a/forge-gui/res/cardsfolder/w/wild_hunger.txt +++ b/forge-gui/res/cardsfolder/w/wild_hunger.txt @@ -2,6 +2,6 @@ Name:Wild Hunger ManaCost:2 G Types:Instant A:SP$ Pump | Cost$ 2 G | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +3 | NumDef$ +1 | KW$ Trample | SpellDescription$ Target creature gets +3/+1 and gains trample until end of turn. -K:Flashback 3 R +K:Flashback:3 R SVar:Picture:http://www.wizards.com/global/images/magic/general/wild_hunger.jpg Oracle:Target creature gets +3/+1 and gains trample until end of turn.\nFlashback {3}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.) diff --git a/forge-gui/res/cardsfolder/w/wild_slash.txt b/forge-gui/res/cardsfolder/w/wild_slash.txt index 2b6cc1d1fbf..0b40192f953 100644 --- a/forge-gui/res/cardsfolder/w/wild_slash.txt +++ b/forge-gui/res/cardsfolder/w/wild_slash.txt @@ -1,8 +1,8 @@ Name:Wild Slash ManaCost:R Types:Instant -A:SP$ Effect | Cost$ R | Name$ Wild Slash Effect | StaticAbilities$ STCantPrevent | AILogic$ Burn | SubAbility$ DBDmg | ConditionPresent$ Creature.YouCtrl+powerGE4 | SpellDescription$ Ferocious — If you control a creature with power 4 or greater, damage can't be prevented this turn. CARDNAME deals 2 damage to target creature or player. +A:SP$ Effect | Cost$ R | Name$ Wild Slash Effect | StaticAbilities$ STCantPrevent | AILogic$ Burn | SubAbility$ DBDmg | ConditionPresent$ Creature.YouCtrl+powerGE4 | SpellDescription$ Ferocious — If you control a creature with power 4 or greater, damage can't be prevented this turn. CARDNAME deals 2 damage to any target. SVar:STCantPrevent:Mode$ Continuous | EffectZone$ Command | GlobalRule$ Damage can't be prevented. | Description$ Damage can't be prevented. -SVar:DBDmg:DB$ DealDamage | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | AILogic$ Burn | NumDmg$ 2 +SVar:DBDmg:DB$ DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | AILogic$ Burn | NumDmg$ 2 SVar:Picture:http://www.wizards.com/global/images/magic/general/wild_slash.jpg -Oracle:Ferocious — If you control a creature with power 4 or greater, damage can't be prevented this turn.\nWild Slash deals 2 damage to target creature or player. +Oracle:Ferocious — If you control a creature with power 4 or greater, damage can't be prevented this turn.\nWild Slash deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/w/wildfire_eternal.txt b/forge-gui/res/cardsfolder/w/wildfire_eternal.txt index 321e56cff65..3fd2a5e4fab 100644 --- a/forge-gui/res/cardsfolder/w/wildfire_eternal.txt +++ b/forge-gui/res/cardsfolder/w/wildfire_eternal.txt @@ -2,7 +2,7 @@ Name:Wildfire Eternal ManaCost:3 R Types:Creature Zombie Jackal Cleric PT:1/4 -K:Afflict 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 card 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:Picture:http://www.wizards.com/global/images/magic/general/wildfire_eternal.jpg diff --git a/forge-gui/res/cardsfolder/w/will_kenrith.txt b/forge-gui/res/cardsfolder/w/will_kenrith.txt new file mode 100644 index 00000000000..250aa84fe73 --- /dev/null +++ b/forge-gui/res/cardsfolder/w/will_kenrith.txt @@ -0,0 +1,15 @@ +Name:Will Kenrith +ManaCost:4 U U +Types:Legendary Planeswalker Will +Loyalty:4 +Text:CARDNAME can be your commander. +K:Partner:Rowan Kenrith:Rowan +A:AB$ Animate | Cost$ AddCounter<2/LOYALTY> | Planeswalker$ True | UntilYourNextTurn$ True | ValidTgts$ Creature | TargetMin$ 0 | TargetMax$ 2 | Power$ 0 | Toughness$ 3 | IsCurse$ True | RemoveAllAbilities$ True | SpellDescription$ Until your next turn, up to two target creatures each have base power and toughness 0/3 and lose all abilities. +A:AB$ Draw | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | ValidTgts$ Player | NumCards$ 2 | SubAbility$ DBEffect | SpellDescription$ Target player draws two cards. Until your next turn, instant, sorcery, and planeswalker spells that player casts cost {2} less to cast. +SVar:DBEffect:DB$ Effect | StaticAbilities$ WillReduceCost | RememberObjects$ Targeted | Duration$ UntilYourNextTurn +SVar:WillReduceCost:Mode$ ReduceCost | EffectZone$ Command | ValidCard$ Instant,Sorcery,Planeswalker | Type$ Spell | Activator$ Player.IsRemembered | Amount$ 2 | Description$ Until your next turn, instant, sorcery, and planeswalker spells that player casts cost {2} less to cast. +A:AB$ Effect | Cost$ SubCounter<8/LOYALTY> | Planeswalker$ True | Ultimate$ True | ValidTgts$ Player | EffectOwner$ Targeted | Name$ Emblem - Will Kenrith | Image$ emblem_will_kenrith | Triggers$ CopySpell | SVars$ TrigCopy | Duration$ Permanent | AILogic$ Always | SpellDescription$ Target player gets an emblem with "Whenever you cast an instant or sorcery spell, copy it. You may choose new targets for the copy." +SVar:CopySpell:Mode$ SpellCast | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ You | Execute$ TrigCopy | TriggerZones$ Command | TriggerDescription$ Whenever you cast an instant or sorcery spell, copy it. You may choose new targets for the copy. +SVar:TrigCopy:DB$ CopySpellAbility | Defined$ TriggeredSpellAbility +DeckHints:Name$Rowan Kenrith +Oracle:[+2]: Until your next turn, up to two target creatures each have base power and toughness 0/3 and lose all abilities.\n[-2]: Target player draws two cards. Until your next turn, instant, sorcery, and planeswalker spells that player casts cost {2} less to cast.\n[-8]: Target player gets an emblem with "Whenever you cast an instant or sorcery spell, copy it. You may choose new targets for the copy."\nPartner with Rowan Kenrith\nWill Kenrith can be your commander. diff --git a/forge-gui/res/cardsfolder/w/windgraces_judgment.txt b/forge-gui/res/cardsfolder/w/windgraces_judgment.txt new file mode 100644 index 00000000000..6fb2cf1e7f0 --- /dev/null +++ b/forge-gui/res/cardsfolder/w/windgraces_judgment.txt @@ -0,0 +1,6 @@ +Name:Windgrace's Judgment +ManaCost:3 B G +Types:Instant +A:SP$ Destroy | Cost$ 3 B G | ValidTgts$ Permanent.nonLand+OppCtrl | TgtPrompt$ Select target nonland permanent an opponent controls to destroy. | TargetMin$ 0 | TargetMax$ OneEach | References$ OneEach | TargetsWithDifferentControllers$ True | SpellDescription$ For any number of opponents, destroy target nonland permanent that player controls. +SVar:OneEach:PlayerCountOpponents$Amount +Oracle:For any number of opponents, destroy target nonland permanent that player controls. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/w/witch_hunter.txt b/forge-gui/res/cardsfolder/w/witch_hunter.txt index e2c780e2260..adb6ebe5c81 100644 --- a/forge-gui/res/cardsfolder/w/witch_hunter.txt +++ b/forge-gui/res/cardsfolder/w/witch_hunter.txt @@ -2,8 +2,8 @@ Name:Witch Hunter ManaCost:2 W W Types:Creature Human Cleric PT:1/1 -A:AB$ DealDamage | Cost$ T | NumDmg$ 1 | ValidTgts$ Player | TgtPrompt$ Select target player | SpellDescription$ CARDNAME deals 1 damage to target player. +A:AB$ DealDamage | Cost$ T | NumDmg$ 1 | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | SpellDescription$ CARDNAME deals 1 damage to target player. A:AB$ ChangeZone | Cost$ 1 W W T | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature an opponent controls | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return target creature you don't control to its owner's hand. SVar:NonCombatPriority:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/witch_hunter.jpg -Oracle:{T}: Witch Hunter deals 1 damage to target player.\n{1}{W}{W}, {T}: Return target creature an opponent controls to its owner's hand. +Oracle:{T}: Witch Hunter deals 1 damage to target player or planeswalker.\n{1}{W}{W}, {T}: Return target creature an opponent controls to its owner's hand. diff --git a/forge-gui/res/cardsfolder/w/withstand.txt b/forge-gui/res/cardsfolder/w/withstand.txt index a1310751258..ae0a35cda1c 100644 --- a/forge-gui/res/cardsfolder/w/withstand.txt +++ b/forge-gui/res/cardsfolder/w/withstand.txt @@ -1,7 +1,7 @@ Name:Withstand ManaCost:2 W Types:Instant -A:SP$ PreventDamage | Cost$ 2 W | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Amount$ 3 | SubAbility$ DBDraw | SpellDescription$ Prevent the next 3 damage that would be dealt to target creature or player this turn. Draw a card. +A:SP$ PreventDamage | Cost$ 2 W | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Amount$ 3 | SubAbility$ DBDraw | SpellDescription$ Prevent the next 3 damage that would be dealt to any target this turn. Draw a card. SVar:DBDraw:DB$Draw | NumCards$ 1 SVar:Picture:http://www.wizards.com/global/images/magic/general/withstand.jpg -Oracle:Prevent the next 3 damage that would be dealt to target creature or player this turn.\nDraw a card. +Oracle:Prevent the next 3 damage that would be dealt to any target this turn.\nDraw a card. diff --git a/forge-gui/res/cardsfolder/w/wizards_lightning.txt b/forge-gui/res/cardsfolder/w/wizards_lightning.txt index 662dc1aeced..b148ce38860 100644 --- a/forge-gui/res/cardsfolder/w/wizards_lightning.txt +++ b/forge-gui/res/cardsfolder/w/wizards_lightning.txt @@ -3,7 +3,7 @@ ManaCost:2 R Types:Instant S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 2 | EffectZone$ All | CheckSVar$ Wizard | SVarCompare$ GE1 | References$ Wizard | Description$ This spell costs {2} less to cast if you control a Wizard. SVar:Wizard:Count$Valid Wizard.YouCtrl -A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select target | NumDmg$ 3 | References$ 3 | SpellDescription$ CARDNAME deals 3 damage to target creature or player. +A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select target | NumDmg$ 3 | References$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. DeckNeeds:Type$Wizard SVar:Picture:http://www.wizards.com/global/images/magic/general/wizards_lightning.jpg Oracle:This spell costs {2} less to cast if you control a Wizard.\nWizard's Lightning deals 3 damage to any target. diff --git a/forge-gui/res/cardsfolder/w/wolverine_pack.txt b/forge-gui/res/cardsfolder/w/wolverine_pack.txt index f19da6be2aa..48fd10db292 100644 --- a/forge-gui/res/cardsfolder/w/wolverine_pack.txt +++ b/forge-gui/res/cardsfolder/w/wolverine_pack.txt @@ -2,6 +2,6 @@ Name:Wolverine Pack ManaCost:2 G G Types:Creature Wolverine PT:2/4 -K:Rampage 2 +K:Rampage:2 SVar:Picture:http://www.wizards.com/global/images/magic/general/wolverine_pack.jpg Oracle:Rampage 2 (Whenever this creature becomes blocked, it gets +2/+2 until end of turn for each creature blocking it beyond the first.) diff --git a/forge-gui/res/cardsfolder/w/words_of_war.txt b/forge-gui/res/cardsfolder/w/words_of_war.txt index 0877aeee475..279762dc0c3 100644 --- a/forge-gui/res/cardsfolder/w/words_of_war.txt +++ b/forge-gui/res/cardsfolder/w/words_of_war.txt @@ -1,10 +1,10 @@ Name:Words of War ManaCost:2 R Types:Enchantment -A:AB$ Effect | Cost$ 1 | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | Name$ Words of War Effect | RememberObjects$ Targeted | ImprintCards$ Self | ReplacementEffects$ DrawReplace | SVars$ ExileEffect,WarDamage | SpellDescription$ The next time you would draw a card this turn, CARDNAME deals 2 damage to target creature or player instead. -SVar:DrawReplace:Event$ Draw | ValidPlayer$ You | ReplaceWith$ WarDamage | Description$ The next time you would draw a card this turn, Words of War deals 2 damage to target creature or player instead. +A:AB$ Effect | Cost$ 1 | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | Name$ Words of War Effect | RememberObjects$ Targeted | ImprintCards$ Self | ReplacementEffects$ DrawReplace | SVars$ ExileEffect,WarDamage | SpellDescription$ The next time you would draw a card this turn, CARDNAME deals 2 damage to any target instead. +SVar:DrawReplace:Event$ Draw | ValidPlayer$ You | ReplaceWith$ WarDamage | Description$ The next time you would draw a card this turn, Words of War deals 2 damage to any target instead. SVar:WarDamage:DB$ DealDamage | Defined$ Remembered | DamageSource$ Imprinted | NumDmg$ 2 | SubAbility$ ExileEffect SVar:ExileEffect:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/words_of_war.jpg -Oracle:{1}: The next time you would draw a card this turn, Words of War deals 2 damage to target creature or player instead. +Oracle:{1}: The next time you would draw a card this turn, Words of War deals 2 damage to any target instead. diff --git a/forge-gui/res/cardsfolder/w/wu_longbowman.txt b/forge-gui/res/cardsfolder/w/wu_longbowman.txt index dada6fab8f1..591d5151bf8 100644 --- a/forge-gui/res/cardsfolder/w/wu_longbowman.txt +++ b/forge-gui/res/cardsfolder/w/wu_longbowman.txt @@ -2,6 +2,6 @@ Name:Wu Longbowman ManaCost:2 U Types:Creature Human Soldier Archer PT:1/1 -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | PlayerTurn$ True | ActivationPhases$ Upkeep->BeginCombat | SpellDescription$ CARDNAME deals 1 damage to target creature or player. Activate this ability only during your turn, before attackers are declared. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | PlayerTurn$ True | ActivationPhases$ Upkeep->BeginCombat | SpellDescription$ CARDNAME deals 1 damage to any target. Activate this ability only during your turn, before attackers are declared. SVar:Picture:http://www.wizards.com/global/images/magic/general/wu_longbowman.jpg -Oracle:{T}: Wu Longbowman deals 1 damage to target creature or player. Activate this ability only during your turn, before attackers are declared. +Oracle:{T}: Wu Longbowman deals 1 damage to any target. Activate this ability only during your turn, before attackers are declared. diff --git a/forge-gui/res/cardsfolder/x/xantcha_sleeper_agent.txt b/forge-gui/res/cardsfolder/x/xantcha_sleeper_agent.txt new file mode 100644 index 00000000000..d181bf173f2 --- /dev/null +++ b/forge-gui/res/cardsfolder/x/xantcha_sleeper_agent.txt @@ -0,0 +1,13 @@ +Name:Xantcha, Sleeper Agent +ManaCost:1 B R +Types:Legendary Creature Minion +PT:5/5 +K:CARDNAME attacks each combat if able. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChoose | Static$ True | TriggerDescription$ As CARDNAME enters the battlefield, an opponent gains control of it. +SVar:TrigChoose:DB$ ChoosePlayer | Defined$ You | Choices$ Player.Opponent | ChoiceTitle$ Choose an opponent to give control to: | AILogic$ Curse | SubAbility$ DBDonate +SVar:DBDonate:DB$ GainControl | Defined$ Self | NewController$ Player.Chosen | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearChosenPlayer$ True +S:Mode$ CantAttack | ValidCard$ Card.Self | Target$ Player.CardOwner,Planeswalker.ControlledBy Player.CardOwner | Description$ CARDNAME can’t attack its owner or planeswalkers its owner controls. +A:AB$ Draw | Cost$ 3 | NumCards$ 1 | AnyPlayer$ True | SubAbility$ DBLoseLife | SpellDescription$ Xantcha’s controller loses 2 life and you draw a card. Any player may activate this ability. +SVar:DBLoseLife:DB$ LoseLife | LifeAmount$ 2 | Defined$ CardController +Oracle:As Xantcha, Sleeper Agent enters the battlefield, an opponent of your choice gains control of it.\nXantcha attacks each combat if able and can’t attack its owner or planeswalkers its owner controls.\n{3}: Xantcha’s controller loses 2 life and you draw a card. Any player may activate this ability. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/y/yamabushis_flame.txt b/forge-gui/res/cardsfolder/y/yamabushis_flame.txt index ba84aee2a0a..16111ea09c2 100644 --- a/forge-gui/res/cardsfolder/y/yamabushis_flame.txt +++ b/forge-gui/res/cardsfolder/y/yamabushis_flame.txt @@ -1,7 +1,7 @@ Name:Yamabushi's Flame ManaCost:2 R Types:Instant -A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 3 | RememberDamaged$ True | ReplaceDyingDefined$ Remembered | SubAbility$ DBCleanup | SpellDescription$ CARDNAME deals 3 damage to target creature or player. If a creature dealt damage this way would die this turn, exile it instead. +A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | RememberDamaged$ True | ReplaceDyingDefined$ Remembered | SubAbility$ DBCleanup | SpellDescription$ CARDNAME deals 3 damage to any target. If a creature dealt damage this way would die this turn, exile it instead. SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Picture:http://www.wizards.com/global/images/magic/general/yamabushis_flame.jpg -Oracle:Yamabushi's Flame deals 3 damage to target creature or player. If a creature dealt damage this way would die this turn, exile it instead. +Oracle:Yamabushi's Flame deals 3 damage to any target. If a creature dealt damage this way would die 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 new file mode 100644 index 00000000000..6a94848f570 --- /dev/null +++ b/forge-gui/res/cardsfolder/y/yennett_cryptic_sovereign.txt @@ -0,0 +1,14 @@ +Name:Yennett, Cryptic Sovereign +ManaCost:2 W U B +Types:Legendary Creature Sphinx +PT:3/5 +K:Flying +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. If that card's converted mana cost is odd, you may cast it without paying its mana cost. Otherwise, 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 | ConditionCheckSVar$ X | ConditionSVarCompare$ M21 | References$ X | SubAbility$ DBDraw +SVar:DBDraw:DB$ Draw | ConditionDefined$ Remembered | ConditionPresent$ Card | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:Remembered$CardManaCost +Oracle:Flying,vigilance,menace\nWhenever Yennett, Cryptic Sovereign attacks, reveal the top card of your library. If that card's converted mana cost is odd, you may cast it without paying its mana cost. Otherwise, draw a card. diff --git a/forge-gui/res/cardsfolder/y/yuriko_the_tigers_shadow.txt b/forge-gui/res/cardsfolder/y/yuriko_the_tigers_shadow.txt new file mode 100644 index 00000000000..794a2821905 --- /dev/null +++ b/forge-gui/res/cardsfolder/y/yuriko_the_tigers_shadow.txt @@ -0,0 +1,12 @@ +Name:Yuriko, the Tiger's Shadow +ManaCost:1 U B +Types:Legendary Creature Human Ninja +PT:1/3 +K:Ninjutsu:U B:Commander +T:Mode$ DamageDone | ValidSource$ Ninja.YouCtrl | ValidTarget$ Player | CombatDamage$ True | TriggerZones$ Battlefield | Execute$ TrigDig | TriggerDescription$ Whenever a Ninja you control deals combat damage to a player, reveal the top card of your library and put that card into your hand. Each opponent loses life equal to that card's converted mana cost. +SVar:TrigDig:DB$Dig | DigNum$ 1 | Reveal$ True | ChangeNum$ All | ChangeValid$ Card | DestinationZone$ Hand | RememberChanged$ True | SubAbility$ DBLoseLife +SVar:DBLoseLife:DB$LoseLife | LifeAmount$ X | Defined$ Player.Opponent | SubAbility$ DBCleanup | References$ X +SVar:DBCleanup:DB$Cleanup | ClearRemembered$ True +SVar:X:Remembered$CardManaCost +DeckHints:Type$Ninja +Oracle:Commander ninjutsu {U}{B} ({U}{B}, Return an unblocked attacker you control to hand: Put this card onto the battlefield from your hand or the command zone tapped and attacking.)\nWhenever a Ninja you control deals combat damage to a player, reveal the top card of your library and put that card into your hand. Each opponent loses life equal to that card's converted mana cost. diff --git a/forge-gui/res/cardsfolder/z/zadas_commando.txt b/forge-gui/res/cardsfolder/z/zadas_commando.txt index 47941be3fbd..6a3cdf0acd1 100644 --- a/forge-gui/res/cardsfolder/z/zadas_commando.txt +++ b/forge-gui/res/cardsfolder/z/zadas_commando.txt @@ -3,7 +3,7 @@ ManaCost:1 R Types:Creature Goblin Archer Ally PT:2/1 K:First Strike -A:AB$ DealDamage | Cost$ T tapXType<1/Ally> | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | NumDmg$ 1 | PrecostDesc$ Cohort — | SpellDescription$ CARDNAME deals 1 damage to target opponent. +A:AB$ DealDamage | Cost$ T tapXType<1/Ally> | ValidTgts$ Opponent,Planeswalker | TgtPrompt$ Select target opponent or planeswalker | NumDmg$ 1 | PrecostDesc$ Cohort — | SpellDescription$ CARDNAME deals 1 damage to target opponent or planeswalker. DeckHints:Type$Ally SVar:Picture:http://www.wizards.com/global/images/magic/general/zadas_commando.jpg -Oracle:First strike\nCohort — {T}, Tap an untapped Ally you control: Zada's Commando deals 1 damage to target opponent. +Oracle:First strike\nCohort — {T}, Tap an untapped Ally you control: Zada's Commando deals 1 damage to target opponent or planeswalker. diff --git a/forge-gui/res/cardsfolder/z/zap.txt b/forge-gui/res/cardsfolder/z/zap.txt index 1ebc3841e73..c1143a6899a 100644 --- a/forge-gui/res/cardsfolder/z/zap.txt +++ b/forge-gui/res/cardsfolder/z/zap.txt @@ -1,7 +1,7 @@ Name:Zap ManaCost:2 R Types:Instant -A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. | SubAbility$ DBDraw +A:SP$ DealDamage | Cost$ 2 R | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. | SubAbility$ DBDraw SVar:DBDraw:DB$Draw | NumCards$ 1 | SpellDescription$ Draw a card. SVar:Picture:http://www.wizards.com/global/images/magic/general/zap.jpg -Oracle:Zap deals 1 damage to target creature or player.\nDraw a card. +Oracle:Zap deals 1 damage to any target.\nDraw a card. diff --git a/forge-gui/res/cardsfolder/z/zealot_of_the_god_pharaoh.txt b/forge-gui/res/cardsfolder/z/zealot_of_the_god_pharaoh.txt index 51e618b8f1f..e683c6cac02 100644 --- a/forge-gui/res/cardsfolder/z/zealot_of_the_god_pharaoh.txt +++ b/forge-gui/res/cardsfolder/z/zealot_of_the_god_pharaoh.txt @@ -2,6 +2,6 @@ Name:Zealot of the God-Pharaoh ManaCost:3 R Types:Creature Minotaur Archer PT:4/3 -A:AB$ DealDamage | Cost$ 4 R | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target opponent. +A:AB$ DealDamage | Cost$ 4 R | ValidTgts$ Opponent,Planeswalker | TgtPrompt$ Select target opponent or planeswalker | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to target opponent or planeswalker. SVar:Picture:http://www.wizards.com/global/images/magic/general/zealot_of_the_god_pharaoh.jpg -Oracle:{4}{R}: Zealot of the God-Pharaoh deals 2 damage to target opponent. \ No newline at end of file +Oracle:{4}{R}: Zealot of the God-Pharaoh deals 2 damage to target opponent or planeswalker. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/z/zhalfirin_crusader.txt b/forge-gui/res/cardsfolder/z/zhalfirin_crusader.txt index 3df4f1bd660..4034896d8b3 100644 --- a/forge-gui/res/cardsfolder/z/zhalfirin_crusader.txt +++ b/forge-gui/res/cardsfolder/z/zhalfirin_crusader.txt @@ -3,9 +3,9 @@ ManaCost:1 W W Types:Creature Human Knight PT:2/2 K:Flanking -A:AB$ Effect | Cost$ 1 W | Name$ Zhalfirin Redirection | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player to redirect the damage to | ReplacementEffects$ Zhalfirin | SVars$ ZhalfirinDmg | References$ Zhalfirin,ZhalfirinDmg | Duration$ HostLeavesOrEOT | RememberObjects$ Targeted | ExileOnMoved$ Battlefield | SpellDescription$ The next 1 damage that would be dealt to CARDNAME this turn is dealt to target creature you control instead. -SVar:Zhalfirin:Event$ DamageDone | ValidTarget$ Creature.EffectSource | ReplaceWith$ ZhalfirinDmg | DamageTarget$ Remembered | Description$ The next 1 damage that would be dealt to EFFECTSOURCE this turn is dealt to target creature you control instead. +A:AB$ Effect | Cost$ 1 W | Name$ Zhalfirin Redirection | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target to redirect the damage to | ReplacementEffects$ Zhalfirin | SVars$ ZhalfirinDmg | References$ Zhalfirin,ZhalfirinDmg | Duration$ HostLeavesOrEOT | RememberObjects$ Targeted | ExileOnMoved$ Battlefield | SpellDescription$ The next 1 damage that would be dealt to CARDNAME this turn is dealt to any target instead. +SVar:Zhalfirin:Event$ DamageDone | ValidTarget$ Creature.EffectSource | ReplaceWith$ ZhalfirinDmg | DamageTarget$ Remembered | Description$ The next 1 damage that would be dealt to EFFECTSOURCE this turn is dealt to any target. SVar:ZhalfirinDmg:DB$ ReplaceSplitDamage | DamageTarget$ Remembered SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/zhalfirin_crusader.jpg -Oracle:Flanking (Whenever a creature without flanking blocks this creature, the blocking creature gets -1/-1 until end of turn.)\n{1}{W}: The next 1 damage that would be dealt to Zhalfirin Crusader this turn is dealt to target creature or player instead. +Oracle:Flanking (Whenever a creature without flanking blocks this creature, the blocking creature gets -1/-1 until end of turn.)\n{1}{W}: The next 1 damage that would be dealt to Zhalfirin Crusader this turn is dealt to any target instead. diff --git a/forge-gui/res/cardsfolder/z/zndrsplt_eye_of_wisdom.txt b/forge-gui/res/cardsfolder/z/zndrsplt_eye_of_wisdom.txt new file mode 100644 index 00000000000..83fbdad78e6 --- /dev/null +++ b/forge-gui/res/cardsfolder/z/zndrsplt_eye_of_wisdom.txt @@ -0,0 +1,11 @@ +Name:Zndrsplt, Eye of Wisdom +ManaCost:4 U +Types:Legendary Creature Homunculus +PT:1/4 +K:Partner:Okaun, Eye of Chaos:Okaun +T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigFlip | TriggerDescription$ At the beginning of combat on your turn, flip a coin until you lose a flip. +SVar:TrigFlip:DB$ FlipACoin | FlipUntilYouLose$ True +T:Mode$ FlippedCoin | ValidResult$ Win | TriggerZones$ Battlefield | Execute$ TrigDraw | TriggerDescription$ Whenever a player wins a coin flip, draw a card. +SVar:TrigDraw:DB$Draw | Defined$ You | NumCards$ 1 +SVar:Picture:http://www.wizards.com/global/images/magic/general/zndrsplt_eye_of_wisdom.jpg +Oracle:Partner with Okaun, Eye of Chaos (When this creature enters the battlefield, target player may put Okaun into their hand from their library, then shuffle.)\nAt the beginning of combat on your turn, flip a coin until you lose a flip.\nWhenever a player wins a coin flip, draw a card. diff --git a/forge-gui/res/cardsfolder/z/zndrsplts_judgment.txt b/forge-gui/res/cardsfolder/z/zndrsplts_judgment.txt new file mode 100644 index 00000000000..ef57e37a24d --- /dev/null +++ b/forge-gui/res/cardsfolder/z/zndrsplts_judgment.txt @@ -0,0 +1,16 @@ +Name:Zndrsplt's Judgment +ManaCost:4 U +Types:Sorcery +A:SP$ AssignGroup | Cost$ 4 U | Defined$ Player | Choices$ FriendRepeat,FoeRepeat | AILogic$ FriendOrFoe | SpellDescription$ For each player, choose friend or foe. Each friend creates a token that's a copy of a creature they control. Each foe returns a creature they control to its owner's hand. +SVar:FriendRepeat:DB$ RepeatEach | RepeatPlayers$ Remembered | RepeatSubAbility$ DBClone | ClearRememberedBeforeLoop$ True | StackDescription$ Each friend creates a token that's a copy of a creature they control. | SpellDescription$ Friend creates a token that's a copy of a creature they control. +SVar:DBClone:DB$ CopyPermanent | Choices$ Creature.RememberedPlayerCtrl | Chooser$ Remembered | Controller$ Remembered +SVar:FoeRepeat:DB$ RepeatEach | RepeatPlayers$ Remembered | RepeatSubAbility$ PlayChoose | ClearRememberedBeforeLoop$ True | SubAbility$ BounceAll | StackDescription$ Each foe returns a creature they control to its owner's hand. | SpellDescription$ Foe returns a creature they control to its owner's hand. +SVar:PlayChoose:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Creature.RememberedPlayerCtrl | Amount$ 1 | Mandatory$ True | AILogic$ WorstCard | ChoiceTitle$ Choose a creature you control | RememberChosen$ True +SVar:BounceAll:DB$ ChangeZoneAll | Origin$ Battlefield | Destination$ Hand | ChangeType$ Creature.IsRemembered | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenCard$ True +SVar:NeedsToPlayVar:Z GE2 +SVar:Z:SVar$Z1/Plus.Z2 +SVar:Z1:Count$Valid Creature.YourTeamCtrl+inZoneBattlefield +SVar:Z2:Count$Valid Creature.OppCtrl+inZoneBattlefield +SVar:Picture:http://www.wizards.com/global/images/magic/general/zndrsplt_judgment.jpg +Oracle:For each player, choose friend or foe. Each friend creates a token that's a copy of a creature they control. Each foe returns a creature they control to its owner's hand. diff --git a/forge-gui/res/cardsfolder/z/zombie_trailblazer.txt b/forge-gui/res/cardsfolder/z/zombie_trailblazer.txt index 1d54750ac46..021324dac57 100644 --- a/forge-gui/res/cardsfolder/z/zombie_trailblazer.txt +++ b/forge-gui/res/cardsfolder/z/zombie_trailblazer.txt @@ -2,8 +2,8 @@ Name:Zombie Trailblazer ManaCost:B B B Types:Creature Zombie Scout PT:2/2 -A:AB$ Animate | Cost$ tapXType<1/Zombie> | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ Swamp | OverwriteTypes$ True | KeepSupertypes$ True | KeepCardTypes$ True | RemoveAllAbilities$ True | SpellDescription$ Target land becomes a Swamp until end of turn. +A:AB$ Animate | Cost$ tapXType<1/Zombie> | ValidTgts$ Land | TgtPrompt$ Select target land | Types$ Swamp | RemoveLandTypes$ True | RemoveIntrinsicAbilities$ True | SpellDescription$ Target land becomes a Swamp until end of turn. A:AB$ Pump | Cost$ tapXType<1/Zombie> | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ Swampwalk | SpellDescription$ Target creature gains swampwalk until end of turn. SVar:RemAIDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/zombie_trailblazer.jpg -Oracle:Tap an untapped Zombie you control: Target land becomes a Swamp until end of turn.\nTap an untapped Zombie you control: Target creature gains swampwalk until end of turn. +Oracle:Tap an untapped Zombie you control: Target land becomes a Swamp until end of turn.\nTap an untapped Zombie you control: Target creature gains swampwalk until end of turn. (It can't be blocked as long as defending player controls a Swamp.) diff --git a/forge-gui/res/cardsfolder/z/zuran_spellcaster.txt b/forge-gui/res/cardsfolder/z/zuran_spellcaster.txt index c2232a46ba8..941d2a17971 100644 --- a/forge-gui/res/cardsfolder/z/zuran_spellcaster.txt +++ b/forge-gui/res/cardsfolder/z/zuran_spellcaster.txt @@ -2,7 +2,7 @@ Name:Zuran Spellcaster ManaCost:2 U Types:Creature Human Wizard PT:1/1 -A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player | TgtPrompt$ Select target creature or player | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target creature or player. +A:AB$ DealDamage | Cost$ T | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to any target. SVar:NonCombatPriority:1 SVar:Picture:http://www.wizards.com/global/images/magic/general/zuran_spellcaster.jpg -Oracle:{T}: Zuran Spellcaster deals 1 damage to target creature or player. +Oracle:{T}: Zuran Spellcaster deals 1 damage to any target. diff --git a/forge-gui/res/cube/Card Kingdom Starter Cube v3.dck b/forge-gui/res/cube/Card Kingdom Starter Cube v3.dck new file mode 100644 index 00000000000..01bb59f9839 --- /dev/null +++ b/forge-gui/res/cube/Card Kingdom Starter Cube v3.dck @@ -0,0 +1,365 @@ +[metadata] +Name=Card Kingdom Starter Cube v3 +[Main] +1 Abzan Battle Priest|IMA +1 Abzan Falconer|IMA +1 Acidic Slime|CMA +1 Aesthir Glider|DOM +1 Ahn-Crop Crasher|AKH +1 Ainok Bond-Kin|IMA +1 Ainok Survivalist|A25 +1 Akoum Firebird|BFZ +1 Ambassador Oak|A25 +1 Arbor Elf|A25 +1 Arcane Denial|A25 +1 Arcane Flight|DOM +1 Attended Knight|MM3 +1 Atzocan Archer|XLN +1 Aven Wind Guide|AKH +1 Awakened Amalgam|RIX +1 Azure Mage|MM3 +1 Banewhip Punisher|HOU +1 Battlefield Scavenger|AKH +1 Blinding Mage|IMA +1 Blink of an Eye|DOM +1 Bloodfell Caves|C17 +1 Bloodtallow Candle|DOM +1 Blossoming Sands|C17 +1 Bombard|RIX +1 Bone Picker|AKH +1 Boros Elite|GTC +1 Brainstorm|SS1 +1 Brood Butcher|BFZ +1 Burning-Fist Minotaur|HOU +1 Burning-Tree Emissary|MM3 +1 Cackling Counterpart|MM3 +1 Call of the Conclave|MM3 +1 Call the Cavalry|DOM +1 Call the Skybreaker|EMA +1 Cancel|XLN +1 Carven Caryatid|IMA +1 Cast Down|DOM +1 Catacomb Sifter|BFZ +1 Champion of the Flame|DOM +1 Charging Monstrosaur|XLN +1 Chartooth Cougar|A25 +1 Cinder Barrens|RIX +1 Cloudfin Raptor|GTC +1 Cloudshift|A25 +1 Cobbled Wings|XLN +1 Coiling Oracle|MM3 +1 Costly Plunder|XLN +1 Counterspell|SS1 +1 Countless Gears Renegade|AER +1 Cradle of the Accursed|AKH +1 Crested Herdcaller|RIX +1 Crook of Condemnation|HOU +1 Crowned Ceratok|IMA +1 Crushing Vines|C17 +1 Cultivate|A25 +1 Dagger of the Worthy|HOU +1 Danitha Capashen, Paragon|DOM +1 Daring Demolition|AER +1 Daring Skyjek|GTC +1 Dark Bargain|DOM +1 Dark Ritual|A25 +1 Dead Reveler|IMA +1 Deadly Designs|A25 +1 Death Wind|CN2 +1 Deathbloom Thallid|DOM +1 Decree of Justice|A25 +1 Deep Freeze|DOM +1 Demonic Vigor|DOM +1 Desert of the Fervent|HOU +1 Desert of the Glorified|HOU +1 Desert of the Indomitable|HOU +1 Desert of the Mindful|HOU +1 Desert of the True|HOU +1 Destined // Lead|AKH +1 Destructive Tampering|AER +1 Diminish|IMA +1 Dinrova Horror|MM3 +1 Dire Fleet Hoarder|XLN +1 Disfigure|A25 +1 Dismal Backwater|C17 +1 Displacement Wave|ORI +1 Divest|DOM +1 Doom Blade|E02 +1 Doomed Dissenter|AKH +1 Doomed Traveler|IMA +1 Dragon Fodder|MM3 +1 Dread Drone|MM2 +1 Drowner of Hope|BFZ +1 Druid's Deliverance|MM3 +1 Duress|IMA +1 Dusk Legion Zealot|A25 +1 Eldrazi Skyspawner|BFZ +1 Electrickery|RTR +1 Elegant Edgecrafters|KLD +1 Elfhame Druid|DOM +1 Elite Scaleguard|C16 +1 Elvish Aberration|DDU +1 Elvish Mystic|DDU +1 Enthralling Victor|A25 +1 Epic Confrontation|A25 +1 Essence Scatter|DDT +1 Eviscerate|DOM +1 Evolving Wilds|RIX +1 Exclude|A25 +1 Experimental Aviator|KLD +1 Eyes in the Skies|MM3 +1 Falkenrath Noble|C17 +1 Fanatical Firebrand|RIX +1 Farseek|C17 +1 Fiend Hunter|A25 +1 Fight with Fire|DOM +1 Filigree Familiar|DDU +1 Fists of Ironwood|MM3 +1 Flayer Husk|PCA +1 Fleetwheel Cruiser|KLD +1 Fling|AKH +1 Foe-Razer Regent|DTK +1 Forebear's Blade|DOM +1 Forsaken Sanctuary|RIX +1 Foul Orchard|RIX +1 Foundry Street Denizen|DDT +1 Frenzied Goblin|A25 +1 Frenzied Rage|DOM +1 Frost Walker|FRF +1 Fumigate|KLD +1 Fungal Infection|DOM +1 Gargoyle Castle|CMA +1 Geistflame|ISD +1 Genju of the Spires|A25 +1 Ghastly Conscription|C16 +1 Ghitu Lavarunner|DOM +1 Ghostly Flicker|MM3 +1 Gift of Growth|DOM +1 Gleaming Barrier|RIX +1 Goblin Trailblazer|RIX +1 Gods Willing|A25 +1 Golden Demise|RIX +1 Grasping Scoundrel|RIX +1 Greenwheel Liberator|AER +1 Ground Assault|MM3 +1 Grow from the Ashes|DOM +1 Guardian Idol|IMA +1 Heart-Piercer Manticore|AKH +1 Hedron Crawler|OGW +1 Herald of Anafenza|KTK +1 Hidden Stockpile|AER +1 Hieroglyphic Illumination|AKH +1 Highland Lake|RIX +1 Hordeling Outburst|A25 +1 Hungry Flames|AER +1 Hunt the Weak|RIX +1 Icy Manipulator|DOM +1 Illusory Wrappings|AKH +1 In Bolas's Clutches|DOM +1 Incremental Growth|W16 +1 Intangible Virtue|MM3 +1 Invoke the Divine|DOM +1 Ire Shaman|A25 +1 Ixalli's Diviner|XLN +1 Jackal Pup|A25 +1 Jazal Goldmane|C17 +1 Jhoira's Familiar|DOM +1 Jousting Lance|DOM +1 Juggernaut|DOM +1 Jungle Hollow|CMA +1 Jungleborn Pioneer|RIX +1 Kefnet's Last Word|HOU +1 Khenra Scrapper|HOU +1 Knight of Grace|DOM +1 Knight of Malice|DOM +1 Kongming, "Sleeping Dragon"|A25 +1 Kor Hookmaster|MM3 +1 Kor Sanctifiers|C15 +1 Kor Skyfisher|MM3 +1 Krenko's Command|DDT +1 Krosan Tusker|DDU +1 Lightning Bolt|A25 +1 Lightning Strike|XLN +1 Lingering Souls|MM3 +1 Llanowar Elves|DOM +1 Lone Missionary|MM3 +1 Loyal Sentry|A25 +1 Madcap Skills|MM3 +1 Man-o'-War|A25 +1 Mana Leak|IMA +1 Manalith|HOU +1 Mardu Woe-Reaper|FRF +1 Mark of Mutiny|IMA +1 Master Splicer|MM3 +1 Meandering River|DOM +1 Memorial to Folly|DOM +1 Memorial to Genius|DOM +1 Memorial to Glory|DOM +1 Memorial to Unity|DOM +1 Memorial to War|DOM +1 Mercurial Chemister|C17 +1 Merfolk Looter|A25 +1 Mesmeric Fiend|A25 +1 Mizzium Mortars|MM3 +1 Mnemonic Wall|IMA +1 Mogg Fanatic|EMA +1 Mogg Flunkies|A25 +1 Moment of Craving|RIX +1 Moment of Triumph|RIX +1 Momentary Blink|MM3 +1 Multani, Yavimaya's Avatar|DOM +1 Murder|A25 +1 Naga Vitalist|AKH +1 Narnam Renegade|AER +1 Naturalize|DDU +1 Nature's Way|DDU +1 Nef-Crop Entangler|AKH +1 Negate|SS1 +1 Nekrataal|EMA +1 New Horizons|XLN +1 Noble Templar|A25 +1 Oblivion Ring|MM2 +1 On Serra's Wings|DOM +1 Opt|DOM +1 Oracle's Vault|AKH +1 Orazca Relic|RIX +1 Otherworldly Journey|MM2 +1 Outland Boar|AER +1 Oviya Pashiri, Sage Lifecrafter|KLD +1 Pacification Array|AER +1 Pacifism|A25 +1 Pain Seer|BNG +1 Painful Truths|C17 +1 Painted Bluffs|AKH +1 Pardic Wanderer|DOM +1 Pearl Lake Ancient|KTK +1 Peema Outrider|KLD +1 Perilous Myr|A25 +1 Phyrexian Rager|IMA +1 Pillory of the Sleepless|A25 +1 Plagued Rusalka|MM2 +1 Priest of the Blood Rite|ORI +1 Pristine Talisman|IMA +1 Prophetic Prism|KLD +1 Prying Blade|XLN +1 Pyrewild Shaman|MM3 +1 Pyroclasm|A25 +1 Radiating Lightning|DOM +1 Raise the Alarm|CN2 +1 Rakdos Drake|IMA +1 Ravenous Chupacabra|A25 +1 Reduce // Rubble|AKH +1 Release to the Wind|RIX +1 Renegade Freighter|KLD +1 Repeal|IMA +1 Resolute Survivors|HOU +1 Revolutionary Rebuff|KLD +1 Ride Down|EMN +1 Ridgescale Tusker|AER +1 Rite of Belzenlok|DOM +1 Rootborn Defenses|MM3 +1 Rugged Highlands|C16 +1 Run Amok|DOM +1 Sailor of Means|RIX +1 Saproling Migration|DOM +1 Savannah Lions|A25 +1 Scoured Barrens|C17 +1 Scourge of Skola Vale|BNG +1 Scrounging Bandar|AER +1 Sea Gate Oracle|C17 +1 Seekers' Squire|XLN +1 Sensor Splicer|MM3 +1 Sergeant-at-Arms|DOM +1 Serra Angel|DOM +1 Shadowmage Infiltrator|A25 +1 Shapers of Nature|XLN +1 Shimmering Grotto|IMA +1 Shivan Fire|DOM +1 Shock|AER +1 Shoreline Ranger|A25 +1 Short Sword|DOM +1 Sign in Blood|MM2 +1 Simic Sky Swallower|IMA +1 Siren Lookout|XLN +1 Skinbrand Goblin|GTC +1 Skittering Surveyor|DOM +1 Skyship Stalker|KLD +1 Slash of Talons|XLN +1 Soul Manipulation|MM3 +1 Sparring Construct|DOM +1 Spike Jester|MM3 +1 Spikeshot Goblin|A25 +1 Spire Patrol|AER +1 Splatter Thug|IMA +1 Spore Swarm|DOM +1 Star Compass|IMA +1 Stone Quarry|RIX +1 Storm Fleet Aerialist|XLN +1 Strider Harness|RIX +1 Stronghold Confessor|DOM +1 Submerged Boneyard|AKH +1 Sundering Growth|MM3 +1 Supernatural Stamina|A25 +1 Supplant Form|FRF +1 Suspension Field|KTK +1 Swiftwater Cliffs|DDU +1 Swords to Plowshares|A25 +1 Sylvan Awakening|DOM +1 Syncopate|DOM +1 Tempest Caller|XLN +1 Terramorphic Expanse|C17 +1 Thallid Soothsayer|DOM +1 Think Twice|ISD +1 Thornwood Falls|C16 +1 Thrummingbird|C16 +1 Timber Gorge|DOM +1 Timberland Guide|IMA +1 Topan Freeblade|IMA +1 Torch Fiend|M15 +1 Torch Gauntlet|KLD +1 Tragic Slip|EMA +1 Tranquil Cove|EMA +1 Tranquil Expanse|C17 +1 Traveler's Amulet|RIX +1 Treasure Keeper|A25 +1 Triplicate Spirits|M15 +1 Triumph of Gerrard|DOM +1 Twisted Abomination|A25 +1 Tymaret, the Murder King|THS +1 Ultimate Price|DTK +1 Unknown Shores|XLN +1 Unlicensed Disintegration|KLD +1 Unsummon|E02 +1 Untamed Kavu|DOM +1 Untethered Express|AER +1 Unwind|DOM +1 Urbis Protector|A25 +1 Urza's Tome|DOM +1 Valduk, Keeper of the Flame|DOM +1 Vapor Snag|MM2 +1 Verdant Force|DOM +1 Vicious Offering|DOM +1 Viridian Shaman|DDU +1 Vital Splicer|MM3 +1 Vizier of Deferment|AKH +1 Vodalian Arcanist|DOM +1 Voltaic Servant|DOM +1 Walk the Plank|XLN +1 Wall of Roots|IMA +1 War Flare|FRF +1 War-Name Aspirant|KTK +1 Watertrap Weaver|XLN +1 Wayfaring Temple|MM3 +1 Whirler Rogue|DDU +1 Wild Beastmaster|C16 +1 Wild Onslaught|DOM +1 Willbender|A25 +1 Wind-Scarred Crag|C17 +1 Wing Splicer|MM3 +1 Woodland Stream|RIX +1 Wrecking Ogre|GTC +1 Yargle, Glutton of Urborg|DOM +1 Yavimaya Sapherd|DOM +1 Zulaport Cutthroat|A25 +[Sideboard] + diff --git a/forge-gui/res/deckgendecks/Commander.dat b/forge-gui/res/deckgendecks/Commander.dat index bb7961de7e1..902522e5612 100644 Binary files a/forge-gui/res/deckgendecks/Commander.dat and b/forge-gui/res/deckgendecks/Commander.dat differ diff --git a/forge-gui/res/deckgendecks/Legacy.lda.dat b/forge-gui/res/deckgendecks/Legacy.lda.dat new file mode 100644 index 00000000000..8071ad2372f Binary files /dev/null and b/forge-gui/res/deckgendecks/Legacy.lda.dat differ diff --git a/forge-gui/res/deckgendecks/Legacy.raw.dat b/forge-gui/res/deckgendecks/Legacy.raw.dat new file mode 100644 index 00000000000..2e9c52dc9d1 Binary files /dev/null and b/forge-gui/res/deckgendecks/Legacy.raw.dat differ diff --git a/forge-gui/res/deckgendecks/Modern.lda.dat b/forge-gui/res/deckgendecks/Modern.lda.dat index a3c9c230a52..320929740c4 100644 Binary files a/forge-gui/res/deckgendecks/Modern.lda.dat and b/forge-gui/res/deckgendecks/Modern.lda.dat differ diff --git a/forge-gui/res/deckgendecks/Modern.raw.dat b/forge-gui/res/deckgendecks/Modern.raw.dat new file mode 100644 index 00000000000..efc62594181 Binary files /dev/null and b/forge-gui/res/deckgendecks/Modern.raw.dat differ diff --git a/forge-gui/res/deckgendecks/Standard.lda.dat b/forge-gui/res/deckgendecks/Standard.lda.dat index 0419f7a2a1c..a8c44ebc1ea 100644 Binary files a/forge-gui/res/deckgendecks/Standard.lda.dat and b/forge-gui/res/deckgendecks/Standard.lda.dat differ diff --git a/forge-gui/res/deckgendecks/Standard.raw.dat b/forge-gui/res/deckgendecks/Standard.raw.dat new file mode 100644 index 00000000000..69b2e193bfd Binary files /dev/null and b/forge-gui/res/deckgendecks/Standard.raw.dat differ diff --git a/forge-gui/res/deckgendecks/Vintage.lda.dat b/forge-gui/res/deckgendecks/Vintage.lda.dat new file mode 100644 index 00000000000..969e41e0490 Binary files /dev/null and b/forge-gui/res/deckgendecks/Vintage.lda.dat differ diff --git a/forge-gui/res/deckgendecks/Vintage.raw.dat b/forge-gui/res/deckgendecks/Vintage.raw.dat new file mode 100644 index 00000000000..0cbeb6bbafa Binary files /dev/null and b/forge-gui/res/deckgendecks/Vintage.raw.dat differ diff --git a/forge-gui/res/defaults/editor.xml b/forge-gui/res/defaults/editor.xml index ddd23b8ea34..8beb854381d 100644 --- a/forge-gui/res/defaults/editor.xml +++ b/forge-gui/res/defaults/editor.xml @@ -1,5 +1,5 @@ - + CARD_PICTURE @@ -14,6 +14,9 @@ EDITOR_CATALOG EDITOR_ALLDECKS + EDITOR_COMMANDER + EDITOR_BRAWL + EDITOR_TINY_LEADERS EDITOR_DECKGEN diff --git a/forge-gui/res/defaults/no_card.jpg b/forge-gui/res/defaults/no_card.jpg index 6e2ca0b5a03..812b0984a75 100644 Binary files a/forge-gui/res/defaults/no_card.jpg and b/forge-gui/res/defaults/no_card.jpg differ diff --git a/forge-gui/res/draft/Card Kingdom Starter Cube v3.draft b/forge-gui/res/draft/Card Kingdom Starter Cube v3.draft new file mode 100644 index 00000000000..e056baef76d --- /dev/null +++ b/forge-gui/res/draft/Card Kingdom Starter Cube v3.draft @@ -0,0 +1,6 @@ +Name:Card Kingdom Starter Cube +DeckFile:Card Kingdom Starter Cube v3 +Singleton:True + +Booster: 15 Any +NumPacks: 3 diff --git a/forge-gui/res/draft/rankings.txt b/forge-gui/res/draft/rankings.txt index 9dc5a15c667..f5db72c1884 100644 --- a/forge-gui/res/draft/rankings.txt +++ b/forge-gui/res/draft/rankings.txt @@ -1,3 +1,520 @@ +//Rank|Name|Rarity|Set +#1|Doom Whisperer|M|GRN +#2|Aurelia, Exemplar of Justice|M|GRN +#3|Light of the Legion|R|GRN +#4|Dream Eater|M|GRN +#5|March of the Multitudes|M|GRN +#6|Vraska, Golgari Queen|M|GRN +#7|Assassin's Trophy|R|GRN +#8|Underrealm Lich|M|GRN +#9|Niv-Mizzet, Parun|R|GRN +#10|Trostani Discordant|M|GRN +#11|Status Statue|U|GRN +#12|Price of Fame|U|GRN +#13|Conclave Tribunal|U|GRN +#14|Izoni, Thousand-Eyed|R|GRN +#15|Lava Coil|U|GRN +#16|Dawn of Hope|R|GRN +#17|Legion Warboss|R|GRN +#18|Find|R|GRN +#19|Integrity Intervention|U|GRN +#20|Justice Strike|U|GRN +#21|Tajic, Legion's Edge|R|GRN +#22|Pelt Collector|R|GRN +#23|Ral, Izzet Viceroy|M|GRN +#24|Emmara, Soul of the Accord|R|GRN +#25|Swiftblade Vindicator|R|GRN +#26|Assure|R|GRN +#27|Chamber Sentry|R|GRN +#28|Bounty of Might|R|GRN +#29|Nightveil Predator|U|GRN +#30|Venerated Loxodon|R|GRN +#31|Crackling Drake|U|GRN +#32|Etrata, the Silencer|R|GRN +#33|Nullhide Ferox|M|GRN +#34|Golgari Findbroker|U|GRN +#35|Knight of Autumn|R|GRN +#36|Conclave Cavalier|U|GRN +#37|Thief of Sanity|R|GRN +#38|Response|R|GRN +#39|Deafening Clarion|R|GRN +#40|Truefire Captain|U|GRN +#41|Deadly Visit|C|GRN +#42|Midnight Reaper|R|GRN +#43|Lazav, the Multifarious|M|GRN +#44|Boros Challenger|U|GRN +#45|Ritual of Soot|R|GRN +#46|Rampaging Monument|U|GRN +#47|Luminous Bonds|C|GRN +#48|Chemister's Insight|U|GRN +#49|Artful Takedown|C|GRN +#50|Beast Whisperer|R|GRN +#51|Expansion|R|GRN +#52|Affectionate Indrik|U|GRN +#53|Connive|R|GRN +#54|Hatchery Spider|R|GRN +#55|Charnel Troll|R|GRN +#56|Rosemane Centaur|C|GRN +#57|Hypothesizzle|C|GRN +#58|Arclight Phoenix|M|GRN +#59|Swarm Guildmage|U|GRN +#60|House Guildmage|U|GRN +#61|League Guildmage|U|GRN +#62|Legion Guildmage|U|GRN +#63|Glowspore Shaman|U|GRN +#64|Wee Dragonauts|U|GRN +#65|Kraul Harpooner|U|GRN +#66|Gravitic Punch|C|GRN +#67|Dead Weight|C|GRN +#68|District Guide|U|GRN +#69|Command the Storm|C|GRN +#70|Inescapable Blaze|U|GRN +#71|Conclave Guildmage|U|GRN +#72|Ledev Champion|U|GRN +#73|Discovery|U|GRN +#74|Roc Charger|U|GRN +#75|Citywide Bust|R|GRN +#76|Plaguecrafter|U|GRN +#77|Camaraderie|R|GRN +#78|Hired Poisoner|C|GRN +#79|Capture Sphere|C|GRN +#80|Firemind's Research|R|GRN +#81|Quasiduplicate|R|GRN +#82|Arboretum Elemental|U|GRN +#83|Unexplained Disappearance|C|GRN +#84|Sunhome Stalwart|U|GRN +#85|Chromatic Lantern|R|GRN +#86|Goblin Cratermaker|U|GRN +#87|Notion Rain|C|GRN +#88|Invert|U|GRN +#89|Erratic Cyclops|R|GRN +#90|Citywatch Sphinx|U|GRN +#91|Skyknight Legionnaire|C|GRN +#92|Watcher in the Mist|C|GRN +#93|Dimir Spybug|U|GRN +#94|Siege Wurm|C|GRN +#95|Risk Factor|R|GRN +#96|Flower|U|GRN +#97|Inspiring Unicorn|U|GRN +#98|Prey Upon|C|GRN +#99|Severed Strands|C|GRN +#100|Kraul Swarm|U|GRN +#101|Demotion|U|GRN +#102|Murmuring Mystic|U|GRN +#103|Healer's Hawk|C|GRN +#104|Direct Current|C|GRN +#105|Nightveil Sprite|U|GRN +#106|Darkblade Agent|C|GRN +#107|Blood Operative|R|GRN +#108|Swathcutter Giant|U|GRN +#109|Loxodon Restorer|C|GRN +#110|Sprouting Renewal|U|GRN +#111|Beacon Bolt|U|GRN +#112|Undercity Uprising|C|GRN +#113|Flight of Equenauts|U|GRN +#114|Experimental Frenzy|R|GRN +#115|Undercity Necrolisk|U|GRN +#116|Selective Snare|U|GRN +#117|Collar the Culprit|C|GRN +#118|Sacred Foundry|R|GRN +#119|Watery Grave|R|GRN +#120|Temple Garden|R|GRN +#121|Overgrown Tomb|R|GRN +#122|Steam Vents|R|GRN +#123|Dimir Informant|C|GRN +#124|Runaway Steam-Kin|R|GRN +#125|Ionize|R|GRN +#126|Garrison Sergeant|C|GRN +#127|Hunted Witness|C|GRN +#128|Disinformation Campaign|U|GRN +#129|Piston-Fist Cyclops|C|GRN +#130|Parhelion Patrol|C|GRN +#131|Join Shields|U|GRN +#132|Gird for Battle|U|GRN +#133|Gatekeeper Gargoyle|U|GRN +#134|Drowned Secrets|R|GRN +#135|Hellkite Whelp|U|GRN +#136|Spinal Centipede|C|GRN +#137|Burglar Rat|C|GRN +#138|Righteous Blow|C|GRN +#139|Golgari Guildgate|C|GRN +#140|Izzet Guildgate|C|GRN +#141|Selesnya Guildgate|C|GRN +#142|Dimir Guildgate|C|GRN +#143|Boros Guildgate|C|GRN +#144|Thought Erasure|U|GRN +#145|Necrotic Wound|U|GRN +#146|Guild Summit|U|GRN +#147|Whispering Snitch|U|GRN +#148|Vivid Revival|R|GRN +#149|Guildmages' Forum|R|GRN +#150|Molderhulk|U|GRN +#151|Gruesome Menagerie|R|GRN +#152|Centaur Peacemaker|C|GRN +#153|Thoughtbound Phantasm|U|GRN +#154|Ochran Assassin|U|GRN +#155|Circuitous Route|U|GRN +#156|Lotleth Giant|U|GRN +#157|Book Devourer|U|GRN +#158|Worldsoul Colossus|U|GRN +#159|Haazda Marshal|U|GRN +#160|Erstwhile Trooper|C|GRN +#161|Might of the Masses|U|GRN +#162|Wild Ceratok|C|GRN +#163|Ironshell Beetle|C|GRN +#164|Smelt-Ward Minotaur|U|GRN +#165|Cosmotronic Wave|C|GRN +#166|Douser of Lights|C|GRN +#167|Sworn Companions|C|GRN +#168|Intrusive Packbeast|C|GRN +#169|Sinister Sabotage|U|GRN +#170|Barging Sergeant|C|GRN +#171|Hammer Dropper|C|GRN +#172|Goblin Electromancer|C|GRN +#173|Sumala Woodshaper|C|GRN +#174|Bounty Agent|R|GRN +#175|Blade Instructor|C|GRN +#176|Gateway Plaza|C|GRN +#177|Disdainful Stroke|C|GRN +#178|Goblin Banneret|U|GRN +#179|Wojek Bodyguard|C|GRN +#180|Enhanced Surveillance|U|GRN +#181|Ledev Guardian|C|GRN +#182|Beamsplitter Mage|U|GRN +#183|Generous Stray|C|GRN +#184|Vernadi Shieldmate|C|GRN +#185|Pitiless Gorgon|C|GRN +#186|Vigorspore Wurm|C|GRN +#187|Pack's Favor|C|GRN +#188|Hitchclaw Recluse|C|GRN +#189|Sure Strike|C|GRN +#190|Rubblebelt Boar|C|GRN +#191|Ornery Goblin|C|GRN +#192|Fire Urchin|C|GRN +#193|Pilfering Imp|U|GRN +#194|Bartizan Bats|C|GRN +#195|Vedalken Mesmerist|C|GRN +#196|Muse Drake|C|GRN +#197|Leapfrog|C|GRN +#198|Skyline Scout|C|GRN +#199|Radical Idea|C|GRN +#200|Moodmark Painter|C|GRN +#201|Fresh-Faced Recruit|C|GRN +#202|Whisper Agent|C|GRN +#203|Golgari Raiders|U|GRN +#204|Mission Briefing|R|GRN +#205|Chance for Glory|M|GRN +#206|Kraul Foragers|C|GRN +#207|Rhizome Lurcher|C|GRN +#208|Electrostatic Field|U|GRN +#209|Street Riot|U|GRN +#210|Fearless Halberdier|C|GRN +#211|Veiled Shade|C|GRN +#212|Child of Night|C|GRN +#213|Wishcoin Crab|C|GRN +#214|Tenth District Guard|C|GRN +#215|Take Heart|C|GRN +#216|Devkarin Dissident|C|GRN +#217|Narcomoeba|R|GRN +#218|Sonic Assault|C|GRN +#219|Wary Okapi|C|GRN +#220|Izzet Locket|C|GRN +#221|Selesnya Locket|C|GRN +#222|Golgari Locket|C|GRN +#223|Dimir Locket|C|GRN +#224|Boros Locket|C|GRN +#225|Passwall Adept|C|GRN +#226|Omnispell Adept|R|GRN +#227|Wand of Vertebrae|U|GRN +#228|Divine Visitation|M|GRN +#229|Mnemonic Betrayal|M|GRN +#230|Urban Utopia|C|GRN +#231|Wall of Mist|C|GRN +#232|Dazzling Lights|C|GRN +#233|Candlelight Vigil|C|GRN +#234|Mausoleum Secrets|R|GRN +#235|Glaive of the Guildpact|U|GRN +#236|Maximize Velocity|C|GRN +#237|Goblin Locksmith|C|GRN +#238|Grappling Sundew|U|GRN +#239|Crushing Canopy|C|GRN +#240|Torch Courier|C|GRN +#241|Maximize Altitude|C|GRN +#242|Never Happened|C|GRN +#243|Thousand-Year Storm|M|GRN +#244|Silent Dart|U|GRN +#245|Portcullis Vine|C|GRN +#246|Mephitic Vapors|C|GRN +#247|Crush Contraband|U|GRN +#248|Barrier of Bones|C|GRN +#249|Devious Cover-Up|C|GRN +#250|Maniacal Rage|C|GRN +#251|Pause for Reflection|C|GRN +#252|Vicious Rumors|C|GRN +#253|Creeping Chill|U|GRN +#254|Unmoored Ego|R|GRN +//Rank|Name|Rarity|Set +#1|Chromium, the Mutable|M|M19 +#2|Palladia-Mors, the Ruiner|M|M19 +#3|Tezzeret, Artifice Master|M|M19 +#4|Vivien Reid|M|M19 +#5|Vaevictis Asmadi, the Dire|M|M19 +#6|Lathliss, Dragon Queen|R|M19 +#7|Ajani, Adversary of Tyrants|M|M19 +#8|Valiant Knight|R|M19 +#9|Resplendent Angel|M|M19 +#10|Leonin Warleader|R|M19 +#11|Nicol Bolas, the Ravager|M|M19 +#12|Bone Dragon|M|M19 +#13|Demon of Catastrophes|R|M19 +#14|Lena, Selfless Champion|R|M19 +#15|Sigiled Sword of Valeron|R|M19 +#16|Arcades, the Strategist|M|M19 +#17|Demanding Dragon|R|M19 +#18|Djinn of Wishes|R|M19 +#19|Isareth the Awakener|R|M19 +#20|Hungering Hydra|R|M19 +#21|Banefire|R|M19 +#22|Murder|U|M19 +#23|Pelakka Wurm|R|M19 +#24|Goreclaw, Terror of Qal Sisma|R|M19 +#25|Spit Flame|R|M19 +#26|Prodigious Growth|R|M19 +#27|Death Baron|R|M19 +#28|Goblin Trashmaster|R|M19 +#29|Cleansing Nova|R|M19 +#30|Vivien's Invocation|R|M19 +#31|Windreader Sphinx|R|M19 +#32|Sarkhan, Fireblood|M|M19 +#33|Lightning Strike|U|M19 +#34|Sai, Master Thopterist|R|M19 +#35|Sarkhan's Unsealing|R|M19 +#36|Open the Graves|R|M19 +#37|Ajani's Last Stand|R|M19 +#38|Dismissive Pyromancer|R|M19 +#39|Hieromancer's Cage|U|M19 +#40|Graveyard Marshal|R|M19 +#41|Volley Veteran|U|M19 +#42|Mentor of the Meek|R|M19 +#43|Militia Bugler|U|M19 +#44|Exclusion Mage|U|M19 +#45|Aerial Engineer|U|M19 +#46|Draconic Disciple|U|M19 +#47|Regal Bloodlord|U|M19 +#48|Skyrider Patrol|U|M19 +#49|Lich's Caress|C|M19 +#50|Liliana, Untouched by Death|M|M19 +#51|Runic Armasaur|R|M19 +#52|Shield Mare|U|M19 +#53|Plague Mare|U|M19 +#54|Fell Specter|U|M19 +#55|Psychic Symbiont|U|M19 +#56|Shock|C|M19 +#57|Heroic Reinforcements|U|M19 +#58|Enigma Drake|U|M19 +#59|Remorseful Cleric|R|M19 +#60|Surge Mare|U|M19 +#61|Vine Mare|U|M19 +#62|Poison-Tip Archer|U|M19 +#63|Electrify|C|M19 +#64|Luminous Bonds|C|M19 +#65|Rabid Bite|C|M19 +#66|Lightning Mare|U|M19 +#67|Skilled Animator|U|M19 +#68|Brawl-Bash Ogre|U|M19 +#69|Gravedigger|U|M19 +#70|Vampire Sovereign|U|M19 +#71|Vigilant Baloth|U|M19 +#72|Knightly Valor|U|M19 +#73|Dark-Dweller Oracle|R|M19 +#74|Departed Deckhand|U|M19 +#75|Herald of Faith|U|M19 +#76|Liliana's Contract|R|M19 +#77|Thorn Lieutenant|R|M19 +#78|Mystic Archaeologist|R|M19 +#79|Sift|U|M19 +#80|Patient Rebuilding|R|M19 +#81|Phylactery Lich|R|M19 +#82|Mirror Image|U|M19 +#83|Satyr Enchanter|U|M19 +#84|Goblin Instigator|C|M19 +#85|Ajani's Pridemate|U|M19 +#86|Fiery Finish|U|M19 +#87|Volcanic Dragon|U|M19 +#88|Druid of the Cowl|C|M19 +#89|Sleep|U|M19 +#90|Star-Crowned Stag|C|M19 +#91|Strangling Spores|C|M19 +#92|Aviation Pioneer|C|M19 +#93|Rise from the Grave|U|M19 +#94|Switcheroo|U|M19 +#95|One with the Machine|R|M19 +#96|Meteor Golem|U|M19 +#97|Declare Dominance|U|M19 +#98|Ghastbark Twins|U|M19 +#99|Pegasus Courser|C|M19 +#100|Take Vengeance|C|M19 +#101|Siegebreaker Giant|U|M19 +#102|Gallant Cavalry|C|M19 +#103|Elvish Clancaller|R|M19 +#104|Dryad Greenseeker|U|M19 +#105|Diamond Mare|U|M19 +#106|Fountain of Renewal|U|M19 +#107|Nightmare's Thirst|U|M19 +#108|Guttersnipe|U|M19 +#109|Reassembling Skeleton|U|M19 +#110|Aven Wind Mage|C|M19 +#111|Centaur Courser|C|M19 +#112|Disperse|C|M19 +#113|Dwarven Priest|C|M19 +#114|Horizon Scholar|U|M19 +#115|Skyscanner|C|M19 +#116|Skymarch Bloodletter|C|M19 +#117|Angel of the Dawn|C|M19 +#118|Aethershield Artificer|U|M19 +#119|Blanchwood Armor|U|M19 +#120|Arcane Encyclopedia|U|M19 +#121|Essence Scatter|C|M19 +#122|Metamorphic Alteration|R|M19 +#123|Stitcher's Supplier|U|M19 +#124|Elvish Rejuvenator|C|M19 +#125|Blood Divination|U|M19 +#126|Bristling Boar|C|M19 +#127|Colossal Dreadmaw|C|M19 +#128|Epicure of Blood|C|M19 +#129|Cavalry Drillmaster|C|M19 +#130|Divination|C|M19 +#131|Sparktongue Dragon|C|M19 +#132|Gearsmith Guardian|C|M19 +#133|Omenspeaker|C|M19 +#134|Giant Spider|C|M19 +#135|Skeleton Archer|C|M19 +#136|Snapping Drake|C|M19 +#137|Totally Lost|C|M19 +#138|Transmogrifying Wand|R|M19 +#139|Doomed Dissenter|C|M19 +#140|Boggart Brute|C|M19 +#141|Dragon Egg|U|M19 +#142|Ghirapur Guide|U|M19 +#143|Gift of Paradise|U|M19 +#144|Cinder Barrens|C|M19 +#145|Forsaken Sanctuary|C|M19 +#146|Foul Orchard|C|M19 +#147|Highland Lake|C|M19 +#148|Meandering River|C|M19 +#149|Stone Quarry|C|M19 +#150|Submerged Boneyard|C|M19 +#151|Tranquil Expanse|C|M19 +#152|Woodland Stream|C|M19 +#153|Timber Gorge|C|M19 +#154|Ajani's Welcome|U|M19 +#155|Two-Headed Zombie|C|M19 +#156|Act of Treason|C|M19 +#157|Anticipate|C|M19 +#158|Child of Night|C|M19 +#159|Scholar of Stars|C|M19 +#160|Marauder's Axe|C|M19 +#161|Thornhide Wolves|C|M19 +#162|Titanic Growth|C|M19 +#163|Salvager of Secrets|C|M19 +#164|Havoc Devils|C|M19 +#165|Supreme Phantom|R|M19 +#166|Ravenous Harpy|U|M19 +#167|Druid of Horns|U|M19 +#168|Aether Tunnel|U|M19 +#169|Macabre Waltz|C|M19 +#170|Explosive Apparatus|C|M19 +#171|Magistrate's Scepter|R|M19 +#172|Thud|U|M19 +#173|Diregraf Ghoul|U|M19 +#174|Daybreak Chaplain|C|M19 +#175|Dwindle|C|M19 +#176|Rogue's Gloves|U|M19 +#177|Hostile Minotaur|C|M19 +#178|Sure Strike|C|M19 +#179|Doublecast|U|M19 +#180|Rhox Oracle|C|M19 +#181|Make a Stand|U|M19 +#182|Gargoyle Sentinel|U|M19 +#183|Gigantosaurus|R|M19 +#184|Desecrated Tomb|R|M19 +#185|Colossal Majesty|U|M19 +#186|Cancel|C|M19 +#187|Abnormal Endurance|C|M19 +#188|Fire Elemental|C|M19 +#189|Gearsmith Prodigy|C|M19 +#190|Viashino Pyromancer|C|M19 +#191|Inspired Charge|C|M19 +#192|Mighty Leap|C|M19 +#193|Onakke Ogre|C|M19 +#194|Tormenting Voice|C|M19 +#195|Frilled Sea Serpent|C|M19 +#196|Oakenform|C|M19 +#197|Oreskos Swiftclaw|C|M19 +#198|Recollect|U|M19 +#199|Revitalize|C|M19 +#200|Uncomfortable Chill|C|M19 +#201|Suspicious Bookcase|U|M19 +#202|Novice Knight|U|M19 +#203|Dragon's Hoard|R|M19 +#204|Suncleanser|R|M19 +#205|Mind Rot|C|M19 +#206|Chaos Wand|R|M19 +#207|Reclamation Sage|U|M19 +#208|Bogstomper|C|M19 +#209|Trusty Packbeast|C|M19 +#210|Goblin Motivator|C|M19 +#211|Manalith|C|M19 +#212|Loxodon Line Breaker|C|M19 +#213|Field Creeper|C|M19 +#214|Highland Game|C|M19 +#215|Infernal Scarring|C|M19 +#216|Plummet|C|M19 +#217|Rustwing Falcon|C|M19 +#218|Tolarian Scholar|C|M19 +#219|Trumpet Blast|C|M19 +#220|Lava Axe|C|M19 +#221|Catalyst Elemental|C|M19 +#222|Ghostform|C|M19 +#223|Invoke the Divine|C|M19 +#224|Leonin Vanguard|U|M19 +#225|Psychic Corrosion|U|M19 +#226|Aegis of the Heavens|U|M19 +#227|Bone to Ash|U|M19 +#228|Vampire Neonate|C|M19 +#229|Tectonic Rift|U|M19 +#230|Daggerback Basilisk|C|M19 +#231|Talons of Wildwood|C|M19 +#232|Infernal Reckoning|R|M19 +#233|Smelt|C|M19 +#234|Knight's Pledge|C|M19 +#235|Sovereign's Bite|C|M19 +#236|Walking Corpse|C|M19 +#237|Knight of the Tusk|C|M19 +#238|Isolate|R|M19 +#239|Fraying Omnipotence|R|M19 +#240|Rupture Spire|U|M19 +#241|Duress|C|M19 +#242|Hired Blade|C|M19 +#243|Crash Through|C|M19 +#244|Inferno Hellion|U|M19 +#245|Greenwood Sentinel|C|M19 +#246|Naturalize|C|M19 +#247|Wall of Mist|C|M19 +#248|Wall of Vines|C|M19 +#249|Infectious Horror|C|M19 +#250|Millstone|U|M19 +#251|Crucible of Worlds|M|M19 +#252|Scapeshift|M|M19 +#253|Amulet of Safekeeping|R|M19 +#254|Root Snare|C|M19 +#255|Mistcaller|R|M19 +#256|Apex of Power|M|M19 +#257|Detection Tower|R|M19 +#258|Alpine Moon|R|M19 +#259|Reliquary Tower|U|M19 +#260|Omniscience|M|M19 +//Rank|Name|Rarity|Set #1|Aryel, Knight of Windgrace|R|DOM #2|Lyra Dawnbringer|M|DOM #3|Demonlord Belzenlok|M|DOM diff --git a/forge-gui/res/editions/Battlebond.txt b/forge-gui/res/editions/Battlebond.txt new file mode 100644 index 00000000000..bae7a7a8049 --- /dev/null +++ b/forge-gui/res/editions/Battlebond.txt @@ -0,0 +1,266 @@ +[metadata] +Code=BBD +Date=2018-06-08 +Name=Battlebond +MciCode=bbd +Type=Other +BoosterCovers=3 +Booster=10 Common, 3 Uncommon, 1 fromSheet("BBD RareMythic"), 1 BasicLand + +[cards] +1 M Will Kenrith +2 M Rowan Kenrith +3 R Regna, the Redeemer +4 R Krav, the Unredeemed +5 R Zndrsplt, Eye of Wisdom +6 R Okaun, Eye of Chaos +7 R Virtus the Veiled +8 R Gorm the Great +9 R Khorvath Brightflame +10 R Sylvia Brightspear +11 R Pir, Imaginative Rascal +12 R Toothy, Imaginary Friend +13 U Blaring Recruiter +14 U Blaring Captain +15 U Chakram Retriever +16 U Chakram Slinger +17 U Soulblade Corrupter +18 U Soulblade Renewer +19 U Impetuous Protege +20 U Proud Mentor +21 U Ley Weaver +22 U Lore Weaver +23 M Arena Rector +24 C Aurora Champion +25 M Brightling +26 U Bring Down +27 C Dwarven Lightsmith +28 U Jubilant Mascot +29 R Play of the Game +30 R Regna's Sanction +31 C Skystreamer +32 R Together Forever +33 M Arcane Artisan +34 U Fumble +35 R Game Plan +36 C Huddle Up +37 U Nimbus Champion +38 U Out of Bounds +39 C Saltwater Stalwart +40 C Soaring Show-Off +41 R Spellseeker +42 C Spellweaver Duo +43 R Zndrsplt's Judgment +44 M Archfiend of Despair +45 C Bloodborn Scoundrels +46 C Fan Favorite +47 U Gang Up +48 U Inner Demon +49 R Mindblade Render +50 C Sickle Dancer +51 M Stunning Reversal +52 U Thrasher Brute +53 R Thrilling Encore +54 R Virtus's Maneuver +55 C Azra Bladeseeker +56 R Bonus Round +57 C Bull-Rush Bruiser +58 U Cheering Fanatic +59 R Khorvath's Fury +60 U Lava-Field Overlord +61 C Magma Hellion +62 M Najeela, the Blade-Blossom +63 C Stadium Vendors +64 R Stolen Strategy +65 M Bramble Sovereign +66 C Charging Binox +67 C Combo Attack +68 U The Crowd Goes Wild +69 U Decorated Champion +70 R Generous Patron +71 M Grothama, All-Devouring +72 C Jungle Wayfinder +73 R Pir's Whim +74 R Archon of Valor's Reach +75 U Azra Oddsmaker +76 R Last One Standing +77 U Rushblade Commander +78 U Vampire Charmseeker +79 R Sentinel Tower +80 R Victory Chimes +81 R Bountiful Promenade +82 R Luxury Suite +83 R Morphic Pool +84 R Sea of Clouds +85 R Spire Garden +86 U Angel of Retribution +87 R Angelic Chorus +88 C Angelic Gift +89 U Battle Mastery +90 C Champion of Arashin +91 C Doomed Traveler +92 C Expedition Raptor +93 R Kor Spiritdancer +94 M Land Tax +95 C Lightwalker +96 U Long Road Home +97 U Loyal Pegasus +98 R Mangara of Corondor +99 C Midnight Guard +100 U Oreskos Explorer +101 C Pacifism +102 C Raptor Companion +103 C Rebuke +104 C Royal Trooper +105 C Shoulder to Shoulder +106 C Silverchase Fox +107 U Solemn Offering +108 C Sparring Mummy +109 U Steppe Glider +110 U Swords to Plowshares +111 U Take Up Arms +112 C Tandem Tactics +113 C Benthic Giant +114 C Call to Heel +115 C Claustrophobia +116 C Coralhelm Guide +117 U Fog Bank +118 C Frost Lynx +119 C Impulse +120 C Kitesail Corsair +121 C Kraken Hatchling +122 R Mystic Confluence +123 C Negate +124 C Nimbus of the Isles +125 C Omenspeaker +126 U Opportunity +127 U Oracle's Insight +128 C Peregrine Drake +129 U Phantom Warrior +130 U Reckless Scholar +131 R Sower of Temptation +132 U Spell Snare +133 U Switcheroo +134 R Tidespout Tyrant +135 C Totally Lost +136 M True-Name Nemesis +137 C Watercourser +138 U Assassin's Strike +139 C Assassinate +140 C Daggerdrome Imp +141 R Diabolic Intent +142 C Doomed Dissenter +143 C Eyeblight Assassin +144 C Fill with Fright +145 C Grotesque Mutation +146 C Hand of Silumgar +147 C Last Gasp +148 C Liturgy of Blood +149 U Morbid Curiosity +150 M Nirkana Revenant +151 R Noosegraf Mob +152 U Noxious Dragon +153 R Nyxathid +154 C Painful Lesson +155 C Prakhata Club Security +156 U Quest for the Gravelord +157 C Rotfeaster Maggot +158 C Screeching Buzzard +159 C Shambling Ghoul +160 U Slum Reaper +161 U Swarm of Bloodflies +162 U Tavern Swindler +163 U Tenacious Dead +164 C Bathe in Dragonfire +165 C Battle Rampart +166 U Battle-Rattle Shaman +167 U Blaze +168 U Blood Feud +169 U Boldwyr Intimidator +170 C Borderland Marauder +171 U Chain Lightning +172 U Dragon Breath +173 C Dragon Hatchling +174 C Earth Elemental +175 C Ember Beast +176 U Enthralling Victor +177 C Expedite +178 U Flamewave Invoker +179 R Goblin Razerunners +180 C Lightning Talons +181 R Magmatic Force +182 C Pathmaker Initiate +183 C Reckless Reveler +184 C Shock +185 C Thunder Strike +186 U Trumpet Blast +187 R War's Toll +188 C Wrap in Flames +189 U Aim High +190 U Beast Within +191 C Canopy Spider +192 C Charging Rhino +193 C Cowl Prowler +194 C Daggerback Basilisk +195 M Doubling Season +196 U Elvish Visionary +197 U Feral Hydra +198 C Fertile Ground +199 U Fertilid +200 C Giant Growth +201 R Greater Good +202 U Hunted Wumpus +203 U Karametra's Favor +204 C Kraul Warrior +205 C Lead by Example +206 R Magus of the Candelabra +207 U Plated Crusher +208 C Primal Huntbeast +209 U Pulse of Murasa +210 C Return to the Earth +211 C Saddleback Lagac +212 R Seedborn Muse +213 C Skyshroud Claim +214 U Veteran Explorer +215 R Vigor +216 C Wandering Wolf +217 R Apocalypse Hydra +218 C Auger Spree +219 C Centaur Healer +220 U Dinrova Horror +221 U Enduring Scalelord +222 R Evil Twin +223 R Gwafa Hazid, Profiteer +224 U Jelenn Sphinx +225 U Kiss of the Amesha +226 U Relentless Hunter +227 C Rhox Brute +228 C Riptide Crab +229 U Savage Ventmaw +230 U Unflinching Courage +231 C Urborg Drake +232 C Consulate Skygate +233 U Culling Dais +234 C Eager Construct +235 U Genesis Chamber +236 U Gold-Forged Sentinel +237 C Hexplate Golem +238 U Juggernaut +239 C Millennial Gargoyle +240 R Mind's Eye +241 M Mycosynth Lattice +242 C Night Market Guard +243 C Peace Strider +244 C Pierce Strider +245 C Seer's Lantern +246 U Spectral Searchlight +247 C Stone Golem +248 C Tyrant's Machine +249 C Yotian Soldier +250 L Plains +251 L Island +252 L Swamp +253 L Mountain +254 L Forest +255 M Will Kenrith +256 M Rowan Kenrith diff --git a/forge-gui/res/editions/Commander 2018.txt b/forge-gui/res/editions/Commander 2018.txt new file mode 100644 index 00000000000..64fe5c1fdaa --- /dev/null +++ b/forge-gui/res/editions/Commander 2018.txt @@ -0,0 +1,316 @@ +[metadata] +Code=C18 +Date=2018-08-09 +Name=Commander 2018 +Code2=C18 +MciCode=c18 +Type=Other + +[cards] +1 R Boreas Charger +2 R Empyrial Storm +3 R Heavenly Blademaster +4 U Loyal Unicorn +5 R Magus of the Balance +6 R Aminatou's Augury +7 R Echo Storm +8 R Estrid's Invocation +9 R Ever-Watching Threshold +10 U Loyal Drake +11 R Octopus Umbra +12 R Primordial Mist +13 R Vedalken Humiliator +14 R Bloodtracker +15 R Entreat the Dead +16 U Loyal Subordinate +17 R Night Incarnate +18 R Skull Storm +19 R Sower of Discord +20 R Emissary of Grudges +21 R Enchanter's Bane +22 R Fury Storm +23 U Loyal Apprentice +24 R Nesting Dragon +25 R Reality Scramble +26 R Saheeli's Directive +27 R Treasure Nabber +28 R Varchild, Betrayer of Kjeldor +29 R Crash of Rhino Beetles +30 R Genesis Storm +31 U Loyal Guardian +32 R Myth Unbound +33 R Nylea's Colossus +34 R Ravenous Slime +35 R Turntimber Sower +36 R Whiptongue Hydra +37 M Aminatou, the Fateshifter +38 R Arixmethes, Slumbering Isle +39 M Brudiclad, Telchor Engineer +40 M Estrid, the Masked +41 M Gyrus, Waker of Corpses +42 M Kestia, the Cultivator +43 M Lord Windgrace +44 M Saheeli, the Gifted +45 M Tawnos, Urza's Apprentice +46 M Thantis, the Warweaver +47 M Tuvasa the Sunlit +48 M Varina, Lich Queen +49 R Windgrace's Judgment +50 R Xantcha, Sleeper Agent +51 M Yennett, Cryptic Sovereign +52 R Yuriko, the Tiger's Shadow +53 R Ancient Stone Idol +54 R Coveted Jewel +55 R Endless Atlas +56 U Geode Golem +57 R Retrofitter Foundry +58 C Forge of Heroes +59 R Isolated Watchtower +60 R Adarkar Valkyrie +61 R Ajani's Chosen +62 R Akroma's Vengeance +63 U Banishing Stroke +64 R Celestial Archon +65 U Crib Swap +66 C Dismantling Blow +67 M Entreat the Angels +68 U Lightform +69 R Martial Coup +70 R Phyrexian Rebirth +71 U Return to Dust +72 U Sage's Reverie +73 M Serra Avatar +74 R Sigil of the Empty Throne +75 R Silent Sentinel +76 U Soul Snare +77 R Terminus +78 U Unquestioned Authority +79 R Winds of Rath +80 R Aether Gale +81 U Archetype of Imagination +82 U Brainstorm +83 U Cloudform +84 R Conundrum Sphinx +85 R Devastation Tide +86 R Dictate of Kruphix +87 R Djinn of Wishes +88 C Dream Cache +89 C Eel Umbra +90 C Etherium Sculptor +91 R Inkwell Leviathan +92 C Into the Roil +93 R Jeskai Infiltrator +94 U Mulldrifter +95 C Ninja of the Deep Hours +96 C Ponder +97 C Portent +98 U Predict +99 U Reverse Engineer +100 R Saheeli's Artistry +101 R Sharding Sphinx +102 U Sigiled Starfish +103 R Sphinx of Jwar Isle +104 R Sphinx of Uthuun +105 C Telling Time +106 U Thirst for Knowledge +107 R Thopter Spy Network +108 U Tidings +109 C Treasure Hunt +110 U Vow of Flight +111 U Whirler Rogue +112 U Whitewater Naiads +113 M Army of the Damned +114 R Moonlight Bargain +115 R Phyrexian Delver +116 U Retreat to Hagra +117 R Ruinous Path +118 M Soul of Innistrad +119 U Stitch Together +120 R Blasphemous Act +121 R Chain Reaction +122 R Chaos Warp +123 R Flameblast Dragon +124 R Hellkite Igniter +125 R Magmaquake +126 U Thopter Engineer +127 U Acidic Slime +128 C Aura Gnarlid +129 M Avenger of Zendikar +130 U Baloth Woodcrasher +131 R Bear Umbra +132 R Boon Satyr +133 C Borderland Explorer +134 R Budoka Gardener +135 R Centaur Vinecrasher +136 U Consign to Dust +137 R Creeping Renaissance +138 C Cultivate +139 C Dawn's Reflection +140 R Eidolon of Blossoms +141 R Enchantress's Presence +142 R Epic Proportions +143 C Explore +144 U Explosive Vegetation +145 C Far Wanderings +146 C Farhaven Elf +147 C Fertile Ground +148 C Grapple with the Past +149 R Ground Seal +150 C Harrow +151 R Herald of the Pantheon +152 U Hunting Wilds +153 M Hydra Omnivore +154 C Khalni Heart Expedition +155 C Kruphix's Insight +156 R Moldgraf Monstrosity +157 C Overgrowth +158 R Rampaging Baloths +159 U Reclamation Sage +160 C Sakura-Tribe Elder +161 R Scute Mob +162 C Snake Umbra +163 R Spawning Grounds +164 U Vow of Wildness +165 C Wild Growth +166 C Yavimaya Elder +167 C Yavimaya Enchantress +168 R Aethermage's Touch +169 U Bant Charm +170 M Bruna, Light of Alabaster +171 R Charnelhoard Wurm +172 R Cold-Eyed Selkie +173 R Daxos of Meletis +174 U Deathreap Ritual +175 R Decimate +176 R Duskmantle Seer +177 R Elderwood Scion +178 R Enigma Sphinx +179 U Esper Charm +180 R Finest Hour +181 R Gaze of Granite +182 C Grisly Salvage +183 R High Priest of Penance +184 R Lavalanche +185 U Maverick Thopterist +186 U Mortify +187 U Putrefy +188 R Righteous Authority +189 R Rubblehulk +190 U Savage Twister +191 R Silent-Blade Oni +192 U Unflinching Courage +193 R Utter End +194 R Worm Harvest +195 U Zendikar Incarnate +196 U Azorius Signet +197 R Blinkmoth Urn +198 R Bosh, Iron Golem +199 U Chief of the Foundry +200 C Commander's Sphere +201 U Crystal Ball +202 R Darksteel Juggernaut +203 U Dimir Signet +204 U Dreamstone Hedron +205 R Duplicant +206 U Hedron Archive +207 U Izzet Signet +208 U Magnifying Glass +209 R Mimic Vat +210 C Mind Stone +211 R Mirrorworks +212 R Myr Battlesphere +213 C Orzhov Signet +214 C Pilgrim's Eye +215 U Prismatic Lens +216 R Prototype Portal +217 R Psychosis Crawler +218 U Scrabbling Claws +219 R Scuttling Doom Engine +220 C Seer's Lantern +221 R Seer's Sundial +222 U Sol Ring +223 M Soul of New Phyrexia +224 R Steel Hellkite +225 U Swiftfoot Boots +226 R Thopter Assembly +227 U Unstable Obelisk +228 R Unwinding Clock +229 U Vessel of Endless Rest +230 U Worn Powerstone +231 U Akoum Refuge +232 U Arcane Sanctum +233 U Azorius Chancery +234 C Azorius Guildgate +235 C Barren Moor +236 U Blighted Woodland +237 C Blossoming Sands +238 C Bojuka Bog +239 U Buried Ruin +240 C Command Tower +241 U Darksteel Citadel +242 U Dimir Aqueduct +243 C Dimir Guildgate +244 C Dismal Backwater +245 C Evolving Wilds +246 C Forgotten Cave +247 U Forsaken Sanctuary +248 U Foundry of the Consuls +249 U Golgari Rot Farm +250 C Great Furnace +251 R Grim Backwoods +252 U Gruul Turf +253 C Halimar Depths +254 C Haunted Fengraf +255 U Highland Lake +256 U Izzet Boilerworks +257 C Izzet Guildgate +258 C Jund Panorama +259 C Jungle Hollow +260 U Jwar Isle Refuge +261 U Kazandu Refuge +262 C Khalni Garden +263 U Krosan Verge +264 C Lonely Sandbar +265 U Meandering River +266 C Mortuary Mire +267 R Mosswort Bridge +268 U Mountain Valley +269 U Myriad Landscape +270 U New Benalia +271 U Orzhov Basilica +272 C Orzhov Guildgate +273 C Rakdos Carnarium +274 U Rocky Tar Pit +275 U Savage Lands +276 C Scoured Barrens +277 U Seaside Citadel +278 C Seat of the Synod +279 C Secluded Steppe +280 U Sejiri Refuge +281 C Selesnya Sanctuary +282 U Simic Growth Chamber +283 U Submerged Boneyard +284 C Swiftwater Cliffs +285 U Temple of the False God +286 C Terramorphic Expanse +287 C Thornwood Falls +288 C Tranquil Cove +289 U Tranquil Expanse +290 C Tranquil Thicket +291 C Warped Landscape +292 C Woodland Stream +293 L Plains +294 L Plains +295 L Plains +296 L Island +297 L Island +298 L Island +299 L Swamp +300 L Swamp +301 L Swamp +302 L Mountain +303 L Mountain +304 L Mountain +305 L Forest +306 L Forest +307 L Forest \ No newline at end of file diff --git a/forge-gui/res/editions/Commander Anthology Vol. II.txt b/forge-gui/res/editions/Commander Anthology Vol. II.txt new file mode 100644 index 00000000000..1f885805bd8 --- /dev/null +++ b/forge-gui/res/editions/Commander Anthology Vol. II.txt @@ -0,0 +1,319 @@ +[metadata] +Code=CM2 +Date=2018-06-08 +Name=Commander Anthology Vol. II +MciCode=CM2 +Type=Other +[cards] +1 M The Mimeoplasm +2 M Damia, Sage of Stone +3 R Vorosh, the Hunter +4 M Daretti, Scrap Savant +5 R Bosh, Iron Golem +6 M Feldon of the Third Path +7 M Kalemne, Disciple of Iroas +8 M Anya, Merciless Angel +9 M Gisela, Blade of Goldnight +10 M Atraxa, Praetors' Voice +11 M Ikra Shidiqi, the Usurper +12 M Ishai, Ojutai Dragonspeaker +13 R Reyhan, Last of the Abzan +14 U Artisan of Kozilek +15 U Abzan Falconer +16 M Angel of Serenity +17 R Arbiter of Knollridge +18 U Banishing Light +19 U Brave the Sands +20 R Cathars' Crusade +21 R Citadel Siege +22 U Crib Swap +23 R Custodi Soulbinders +24 R Dawnbreak Reclaimer +25 C Dawnglare Invoker +26 R Duelist's Heritage +27 U Elite Scaleguard +28 C Faith's Fetters +29 U Herald of the Host +30 R Jareth, Leonine Titan +31 R Kalemne's Captain +32 U Oreskos Explorer +33 C Orim's Thunder +34 U Orzhov Advokist +35 R Reveillark +36 R Sublime Exhalation +37 M Sun Titan +38 R Victory's Herald +39 R Deepglow Skate +40 C Disdainful Stroke +41 R Dreamborn Muse +42 U Fact or Fiction +43 U Grip of Phyresis +44 R Manifold Insights +45 R Memory Erosion +46 R Minds Aglow +47 C Mulldrifter +48 C Riddlekeeper +49 U Slipstream Eel +50 U Spell Crumple +51 U Tezzeret's Gambit +52 U Thrummingbird +53 C Treasure Cruise +54 U Vow of Flight +55 U Windfall +56 U Wonder +57 R Avatar of Woe +58 R Bane of the Living +59 U Buried Alive +60 R Butcher of Malakir +61 R Dark Hatchling +62 R Extractor Demon +63 C Festercreep +64 U Fleshbag Marauder +65 R Grave Pact +66 C Gravedigger +67 R Languish +68 R Living Death +69 R Mortivore +70 R Necroplasm +71 U Nezumi Graverobber +72 R Patron of the Nezumi +73 U Rise from the Grave +74 R Scythe Specter +75 R Sewer Nemesis +76 R Shared Trauma +77 C Sign in Blood +78 U Stitch Together +79 U Syphon Flesh +80 C Syphon Mind +81 C Unnerve +82 U Vow of Malice +83 U Beetleback Chief +84 R Bitter Feud +85 R Blasphemous Act +86 M Bogardan Hellkite +87 R Borderland Behemoth +88 U Breath of Darigaaz +89 R Chaos Warp +90 U Curse of the Nightly Hunt +91 R Desolation Giant +92 R Disaster Radius +93 R Dream Pillager +94 R Dualcaster Mage +95 R Earthquake +96 C Faithless Looting +97 C Fall of the Hammer +98 R Fiery Confluence +99 U Flametongue Kavu +100 R Fumiko the Lowblood +101 R Goblin Welder +102 R Hamletback Goliath +103 R Hammerfist Giant +104 R Hoard-Smelter Dragon +105 R Hostility +106 R Hunted Dragon +107 R Impact Resonance +108 R Incite Rebellion +109 M Inferno Titan +110 C Ingot Chewer +111 R Magma Giant +112 R Magmaquake +113 R Magus of the Wheel +114 U Meteor Blast +115 U Rite of the Raging Storm +116 R Scrap Mastery +117 U Spitebellows +118 R Starstorm +119 C Stinkdrinker Daredevil +120 U Stoneshock Giant +121 R Sunrise Sovereign +122 R Taurean Mauler +123 U Thundercloud Shaman +124 R Tuktuk the Explorer +125 R Tyrant's Familiar +126 R Volcanic Offering +127 U Warchief Giant +128 R Warmonger Hellkite +129 R Warstorm Surge +130 U Whipflare +131 R Word of Seizing +132 U Acidic Slime +133 U Brawn +134 R Champion of Lambholt +135 C Cultivate +136 U Eternal Witness +137 R Forgotten Ancient +138 R Hardened Scales +139 U Inspiring Call +140 M Kalonian Hydra +141 R Lhurgoyf +142 C Relic Crush +143 R Scavenging Ooze +144 U Solidarity of Heroes +145 U Tribute to the Wild +146 R Troll Ascetic +147 U Tuskguard Captain +148 U Vow of Wildness +149 C Yavimaya Elder +150 U Ancient Excavation +151 U Bred for the Hunt +152 R Corpsejack Menace +153 C Desecrator Hag +154 R Duneblast +155 U Enduring Scalelord +156 R Fathom Mage +157 M Ghave, Guru of Spores +158 U Juniper Order Ranger +159 M Master Biomancer +160 R Merciless Eviction +161 U Migratory Route +162 R Mirrorweave +163 U Mortify +164 U Putrefy +165 R Skullbriar, the Walking Grave +166 R Spitting Image +167 U Sylvan Reclamation +168 R Szadek, Lord of Secrets +169 R Vorel of the Hull Clade +170 R Vulturous Zombie +171 M Wrexial, the Risen Deep +172 R Astral Cornucopia +173 U Basalt Monolith +174 R Blade of Selves +175 C Boros Cluestone +176 C Boros Signet +177 U Bottle Gnomes +178 R Caged Sun +179 U Cathodion +180 R Cauldron of Souls +181 U Coldsteel Heart +182 C Commander's Sphere +183 R Crystalline Crawler +184 U Darksteel Ingot +185 C Dimir Signet +186 U Dreamstone Hedron +187 R Epochrasite +188 U Everflowing Chalice +189 U Fellwar Stone +190 U Fire Diamond +191 C Golgari Signet +192 C Golgari Signet +193 C Ichor Wellspring +194 R Jalum Tome +195 R Junk Diver +196 U Lightning Greaves +197 U Liquimetal Coating +198 U Loreseeker's Stone +199 R Loxodon Warhammer +200 U Mind Stone +201 C Mycosynth Wellspring +202 R Myr Battlesphere +203 U Myr Retriever +204 C Myr Sire +205 R Oblivion Stone +206 C Orzhov Signet +207 U Palladium Myr +208 C Panic Spellbomb +209 R Pentavus +210 C Pilgrim's Eye +211 C Pristine Talisman +212 R Ruby Medallion +213 U Sandstone Oracle +214 R Seer's Sundial +215 C Simic Signet +216 C Simic Signet +217 U Sol Ring +218 R Solemn Simulacrum +219 R Solemn Simulacrum +220 R Spine of Ish Sah +221 R Staff of Nin +222 R Steel Hellkite +223 U Swiftfoot Boots +224 C Thought Vessel +225 R Trading Post +226 R Triskelavus +227 U Unstable Obelisk +228 R Urza's Incubator +229 C Wayfarer's Bauble +230 U Worn Powerstone +231 M Wurmcoil Engine +232 R Ancient Amphitheater +233 U Arcane Lighthouse +234 U Arcane Sanctum +235 C Ash Barrens +236 U Azorius Chancery +237 C Barren Moor +238 U Blasted Landscape +239 C Boros Garrison +240 C Boros Guildgate +241 U Buried Ruin +242 C Command Tower +243 U Darksteel Citadel +244 R Darkwater Catacombs +245 C Dimir Aqueduct +246 U Dormant Volcano +247 U Dreadship Reef +248 C Drifting Meadow +249 C Evolving Wilds +250 R Exotic Orchard +251 R Flamekin Village +252 C Forgotten Cave +253 U Ghost Quarter +254 U Golgari Rot Farm +255 C Great Furnace +256 U Jwar Isle Refuge +257 C Lonely Sandbar +258 R Murmuring Bosk +259 C Opal Palace +260 U Opulent Palace +261 U Phyrexia's Core +262 U Reliquary Tower +263 C Rupture Spire +264 U Sandsteppe Citadel +265 U Seaside Citadel +266 C Secluded Steppe +267 C Simic Growth Chamber +268 C Smoldering Crater +269 R Sungrass Prairie +270 U Svogthos, the Restless Tomb +271 U Temple of the False God +272 U Temple of the False God +273 C Terramorphic Expanse +274 C Tranquil Thicket +275 R Underground River +276 U Vivid Crag +277 U Vivid Meadow +278 C Wind-Scarred Crag +279 L Plains +280 L Plains +281 L Plains +282 L Plains +283 L Plains +284 L Plains +285 L Plains +286 L Island +287 L Island +288 L Island +289 L Island +290 L Island +291 L Island +292 L Island +293 L Swamp +294 L Swamp +295 L Swamp +296 L Swamp +297 L Swamp +298 L Swamp +299 L Swamp +300 L Mountain +301 L Mountain +302 L Mountain +303 L Mountain +304 L Mountain +305 L Mountain +306 L Forest +307 L Forest +308 L Forest +309 L Forest +310 L Forest +311 L Forest +312 L Forest diff --git a/forge-gui/res/editions/Global Series Jiang Yanggu & Mu Yanling.txt b/forge-gui/res/editions/Global Series Jiang Yanggu & Mu Yanling.txt new file mode 100644 index 00000000000..ca9b17c59d2 --- /dev/null +++ b/forge-gui/res/editions/Global Series Jiang Yanggu & Mu Yanling.txt @@ -0,0 +1,48 @@ +[metadata] +Code=GS1 +Date=2018-06-22 +Name=Global Series Jiang Yanggu & Mu Yanling +MciCode=gs1 +Type=Other + +[cards] +1 M Mu Yanling +2 C Colorful Feiyi Sparrow +3 C Purple-Crystal Crab +4 C Vivid Flying Fish +5 C Welkin Tern +6 C Heavenly Qilin +7 C Armored Whirl Turtle +8 C Nine-Tail White Fox +9 C Earth-Origin Yak +10 U Moon-Eating Dog +11 U Stormcloud Spirit +12 R Ancestor Dragon +13 C Cloak of Mists +14 C Qilin's Blessing +15 C Drown in Shapelessness +16 C Dragon's Presence +17 U Brilliant Plan +18 R Rhythmic Water Vortex +19 C Meandering River +20 L Plains +21 L Island +22 M Jiang Yanggu +23 C Leopard-Spotted Jiao +24 C Feiyi Snake +25 U Sacred White Deer +26 C Reckless Pangolin +27 C Giant Spider +28 C Ferocious Zheng +29 U Fire-Omen Crane +30 R Screeching Phoenix +31 C Earthshaking Si +32 C Hardened-Scale Armor +33 C Breath of Fire +34 C Aggressive Instinct +35 C Confidence from Strength +36 M Journey for the Elixir +37 C Cleansing Screech +38 C Timber Gorge +39 L Mountain +40 L Forest diff --git a/forge-gui/res/editions/Guilds of Ravnica.txt b/forge-gui/res/editions/Guilds of Ravnica.txt new file mode 100644 index 00000000000..2e05b127e5c --- /dev/null +++ b/forge-gui/res/editions/Guilds of Ravnica.txt @@ -0,0 +1,289 @@ +[metadata] +Code=GRN +Date=2018-10-05 +Name=Guilds of Ravnica +Code2=GRN +MciCode=grn +Type=Expansion +BoosterCovers=5 +Booster=10 Common:!fromSheet("GRN Secret Cards"), 3 Uncommon:!fromSheet("GRN Secret Cards"), 1 RareMythic:!fromSheet("GRN Secret Cards"), 1 fromSheet("GRN Lands") + +[cards] +1 C Blade Instructor +2 R Bounty Agent +3 C Candlelight Vigil +4 R Citywide Bust +5 C Collar the Culprit +6 U Conclave Tribunal +7 U Crush Contraband +8 R Dawn of Hope +9 U Demotion +10 M Divine Visitation +11 U Flight of Equenauts +12 U Gird for Battle +13 U Haazda Marshal +14 C Healer's Hawk +15 C Hunted Witness +16 U Inspiring Unicorn +17 C Intrusive Packbeast +18 C Ledev Guardian +19 R Light of the Legion +20 C Loxodon Restorer +21 C Luminous Bonds +22 C Parhelion Patrol +23 C Righteous Blow +24 U Roc Charger +25 C Skyline Scout +26 U Sunhome Stalwart +27 C Sworn Companions +28 C Take Heart +29 C Tenth District Guard +30 R Venerated Loxodon +31 C Capture Sphere +32 U Chemister's Insight +33 U Citywatch Sphinx +34 C Dazzling Lights +35 C Devious Cover-Up +36 C Dimir Informant +37 C Disdainful Stroke +38 M Dream Eater +39 R Drowned Secrets +40 U Enhanced Surveillance +41 U Guild Summit +42 C Leapfrog +43 C Maximize Altitude +44 R Mission Briefing +45 U Murmuring Mystic +46 C Muse Drake +47 R Narcomoeba +48 U Nightveil Sprite +49 R Omnispell Adept +50 C Passwall Adept +51 R Quasiduplicate +52 C Radical Idea +53 U Selective Snare +54 U Sinister Sabotage +55 U Thoughtbound Phantasm +56 C Unexplained Disappearance +57 C Vedalken Mesmerist +58 C Wall of Mist +59 C Watcher in the Mist +60 C Wishcoin Crab +61 C Barrier of Bones +62 C Bartizan Bats +63 R Blood Operative +64 C Burglar Rat +65 C Child of Night +66 U Creeping Chill +67 C Dead Weight +68 C Deadly Visit +69 M Doom Whisperer +70 C Douser of Lights +71 R Gruesome Menagerie +72 C Hired Poisoner +73 U Kraul Swarm +74 U Lotleth Giant +75 R Mausoleum Secrets +76 C Mephitic Vapors +77 R Midnight Reaper +78 C Moodmark Painter +79 U Necrotic Wound +80 C Never Happened +81 U Pilfering Imp +82 U Plaguecrafter +83 U Price of Fame +84 R Ritual of Soot +85 C Severed Strands +86 C Spinal Centipede +87 U Undercity Necrolisk +88 C Veiled Shade +89 C Vicious Rumors +90 U Whispering Snitch +91 M Arclight Phoenix +92 C Barging Sergeant +93 U Book Devourer +94 C Command the Storm +95 C Cosmotronic Wave +96 C Direct Current +97 U Electrostatic Field +98 R Erratic Cyclops +99 R Experimental Frenzy +100 C Fearless Halberdier +101 C Fire Urchin +102 U Goblin Banneret +103 U Goblin Cratermaker +104 C Goblin Locksmith +105 C Gravitic Punch +106 U Hellkite Whelp +107 U Inescapable Blaze +108 U Lava Coil +109 R Legion Warboss +110 C Maniacal Rage +111 C Maximize Velocity +112 C Ornery Goblin +113 R Risk Factor +114 C Rubblebelt Boar +115 R Runaway Steam-Kin +116 U Smelt-Ward Minotaur +117 U Street Riot +118 C Sure Strike +119 C Torch Courier +120 C Wojek Bodyguard +121 U Affectionate Indrik +122 U Arboretum Elemental +123 R Beast Whisperer +124 R Bounty of Might +125 U Circuitous Route +126 C Crushing Canopy +127 C Devkarin Dissident +128 U District Guide +129 C Generous Stray +130 U Golgari Raiders +131 U Grappling Sundew +132 R Hatchery Spider +133 C Hitchclaw Recluse +134 C Ironshell Beetle +135 C Kraul Foragers +136 U Kraul Harpooner +137 U Might of the Masses +138 M Nullhide Ferox +139 C Pack's Favor +140 C Pause for Reflection +141 R Pelt Collector +142 C Portcullis Vine +143 C Prey Upon +144 C Siege Wurm +145 U Sprouting Renewal +146 C Urban Utopia +147 C Vigorspore Wurm +148 R Vivid Revival +149 C Wary Okapi +150 C Wild Ceratok +151 C Artful Takedown +152 R Assassin's Trophy +153 M Aurelia, Exemplar of Justice +154 U Beacon Bolt +155 U Beamsplitter Mage +156 U Boros Challenger +157 R Camaraderie +158 C Centaur Peacemaker +159 M Chance for Glory +160 R Charnel Troll +161 U Conclave Cavalier +162 U Conclave Guildmage +163 U Crackling Drake +164 C Darkblade Agent +165 R Deafening Clarion +166 U Dimir Spybug +167 U Disinformation Campaign +168 R Emmara, Soul of the Accord +169 C Erstwhile Trooper +170 R Etrata, the Silencer +171 R Firemind's Research +172 C Garrison Sergeant +173 U Glowspore Shaman +174 C Goblin Electromancer +175 U Golgari Findbroker +176 C Hammer Dropper +177 U House Guildmage +178 C Hypothesizzle +179 R Ionize +180 R Izoni, Thousand-Eyed +181 U Join Shields +182 U Justice Strike +183 R Knight of Autumn +184 M Lazav, the Multifarious +185 U League Guildmage +186 U Ledev Champion +187 U Legion Guildmage +188 M March of the Multitudes +189 M Mnemonic Betrayal +190 U Molderhulk +191 U Nightveil Predator +192 R Niv-Mizzet, Parun +193 C Notion Rain +194 U Ochran Assassin +195 M Ral, Izzet Viceroy +196 C Rhizome Lurcher +197 C Rosemane Centaur +198 C Skyknight Legionnaire +199 C Sonic Assault +200 C Sumala Woodshaper +201 U Swarm Guildmage +202 U Swathcutter Giant +203 R Swiftblade Vindicator +204 R Tajic, Legion's Edge +205 R Thief of Sanity +206 U Thought Erasure +207 M Thousand-Year Storm +208 M Trostani Discordant +209 U Truefire Captain +210 C Undercity Uprising +211 M Underrealm Lich +212 R Unmoored Ego +213 M Vraska, Golgari Queen +214 U Wee Dragonauts +215 U Worldsoul Colossus +216 C Fresh-Faced Recruit +217 C Piston-Fist Cyclops +218 C Pitiless Gorgon +219 C Vernadi Shieldmate +220 C Whisper Agent +221 R Assure // Assemble +222 R Connive // Concoct +223 U Discovery // Dispersal +224 R Expansion // Explosion +225 R Find // Finality +226 U Flower // Flourish +227 U Integrity // Intervention +228 U Invert // Invent +229 R Response // Resurgence +230 U Status // Statue +231 C Boros Locket +232 R Chamber Sentry +233 R Chromatic Lantern +234 C Dimir Locket +235 U Gatekeeper Gargoyle +236 U Glaive of the Guildpact +237 C Golgari Locket +238 C Izzet Locket +239 U Rampaging Monument +240 C Selesnya Locket +241 U Silent Dart +242 U Wand of Vertebrae +243 C Boros Guildgate +244 C Boros Guildgate +245 C Dimir Guildgate +246 C Dimir Guildgate +247 C Gateway Plaza +248 C Golgari Guildgate +249 C Golgari Guildgate +250 R Guildmages' Forum +251 C Izzet Guildgate +252 C Izzet Guildgate +253 R Overgrown Tomb +254 R Sacred Foundry +255 C Selesnya Guildgate +256 C Selesnya Guildgate +257 R Steam Vents +258 R Temple Garden +259 R Watery Grave +260 L Plains +261 L Island +262 L Swamp +263 L Mountain +264 L Forest +265 M Ral, Caller of Storms +266 R Ral's Dispersal +267 C Precision Bolt +268 U Ral's Staticaster +269 M Vraska, Regal Gorgon +270 C Kraul Raider +271 U Attendant of Vraska +272 R Vraska's Stoneglare +273 M Impervious Greatwurm + +[tokens] +w_1_1_soldier_lifelink +u_1_1_bird_illusion_flying +r_1_1_goblin diff --git a/forge-gui/res/editions/Magic 2019.txt b/forge-gui/res/editions/Magic 2019.txt new file mode 100644 index 00000000000..9498505b3e2 --- /dev/null +++ b/forge-gui/res/editions/Magic 2019.txt @@ -0,0 +1,328 @@ +[metadata] +Code=M19 +Date=2018-07-13 +Name=Core Set 2019 +Code2=M19 +MciCode=m19 +Type=Core +BoosterCovers=5 +Booster=10 Common:!fromSheet("M19 Secret Cards"), 3 Uncommon:!fromSheet("M19 Secret Cards"), 1 RareMythic:!fromSheet("M19 Secret Cards"), 1 fromSheet("M19 Lands") + +[cards] +1 U Aegis of the Heavens +2 U Aethershield Artificer +3 M Ajani, Adversary of Tyrants +4 R Ajani's Last Stand +5 U Ajani's Pridemate +6 U Ajani's Welcome +7 C Angel of the Dawn +8 C Cavalry Drillmaster +9 R Cleansing Nova +10 C Daybreak Chaplain +11 C Dwarven Priest +12 C Gallant Cavalry +13 U Herald of Faith +14 U Hieromancer's Cage +15 C Inspired Charge +16 C Invoke the Divine +17 R Isolate +18 C Knight of the Tusk +19 C Knight's Pledge +20 U Knightly Valor +21 R Lena, Selfless Champion +22 U Leonin Vanguard +23 R Leonin Warleader +24 C Loxodon Line Breaker +25 C Luminous Bonds +26 U Make a Stand +27 R Mentor of the Meek +28 C Mighty Leap +29 U Militia Bugler +30 U Novice Knight +31 C Oreskos Swiftclaw +32 C Pegasus Courser +33 R Remorseful Cleric +34 M Resplendent Angel +35 C Revitalize +36 C Rustwing Falcon +37 U Shield Mare +38 C Star-Crowned Stag +39 R Suncleanser +40 C Take Vengeance +41 C Trusty Packbeast +42 R Valiant Knight +43 U Aether Tunnel +44 C Anticipate +45 C Aven Wind Mage +46 C Aviation Pioneer +47 U Bone to Ash +48 C Cancel +49 U Departed Deckhand +50 C Disperse +51 C Divination +52 R Djinn of Wishes +53 C Dwindle +54 C Essence Scatter +55 U Exclusion Mage +56 C Frilled Sea Serpent +57 C Gearsmith Prodigy +58 C Ghostform +59 U Horizon Scholar +60 R Metamorphic Alteration +61 U Mirror Image +62 R Mistcaller +63 R Mystic Archaeologist +64 C Omenspeaker +65 M Omniscience +66 R One with the Machine +67 R Patient Rebuilding +68 U Psychic Corrosion +69 R Sai, Master Thopterist +70 C Salvager of Secrets +71 C Scholar of Stars +72 U Sift +73 U Skilled Animator +74 U Sleep +75 C Snapping Drake +76 R Supreme Phantom +77 U Surge Mare +78 U Switcheroo +79 M Tezzeret, Artifice Master +80 C Tolarian Scholar +81 C Totally Lost +82 C Uncomfortable Chill +83 C Wall of Mist +84 R Windreader Sphinx +85 C Abnormal Endurance +86 U Blood Divination +87 C Bogstomper +88 M Bone Dragon +89 C Child of Night +90 R Death Baron +91 R Demon of Catastrophes +92 U Diregraf Ghoul +93 C Doomed Dissenter +94 C Duress +95 C Epicure of Blood +96 U Fell Specter +97 R Fraying Omnipotence +98 U Gravedigger +99 R Graveyard Marshal +100 C Hired Blade +101 C Infectious Horror +102 R Infernal Reckoning +103 C Infernal Scarring +104 R Isareth the Awakener +105 C Lich's Caress +106 M Liliana, Untouched by Death +107 R Liliana's Contract +108 C Macabre Waltz +109 C Mind Rot +110 U Murder +111 U Nightmare's Thirst +112 R Open the Graves +113 R Phylactery Lich +114 U Plague Mare +115 U Ravenous Harpy +116 U Reassembling Skeleton +117 U Rise from the Grave +118 C Skeleton Archer +119 C Skymarch Bloodletter +120 C Sovereign's Bite +121 U Stitcher's Supplier +122 C Strangling Spores +123 C Two-Headed Zombie +124 C Vampire Neonate +125 U Vampire Sovereign +126 C Walking Corpse +127 C Act of Treason +128 R Alpine Moon +129 M Apex of Power +130 R Banefire +131 C Boggart Brute +132 C Catalyst Elemental +133 C Crash Through +134 R Dark-Dweller Oracle +135 R Demanding Dragon +136 R Dismissive Pyromancer +137 U Doublecast +138 U Dragon Egg +139 C Electrify +140 U Fiery Finish +141 C Fire Elemental +142 C Goblin Instigator +143 C Goblin Motivator +144 R Goblin Trashmaster +145 U Guttersnipe +146 C Havoc Devils +147 C Hostile Minotaur +148 U Inferno Hellion +149 R Lathliss, Dragon Queen +150 C Lava Axe +151 U Lightning Mare +152 U Lightning Strike +153 C Onakke Ogre +154 M Sarkhan, Fireblood +155 R Sarkhan's Unsealing +156 C Shock +157 U Siegebreaker Giant +158 C Smelt +159 C Sparktongue Dragon +160 R Spit Flame +161 C Sure Strike +162 U Tectonic Rift +163 U Thud +164 C Tormenting Voice +165 C Trumpet Blast +166 C Viashino Pyromancer +167 U Volcanic Dragon +168 U Volley Veteran +169 U Blanchwood Armor +170 C Bristling Boar +171 C Centaur Courser +172 C Colossal Dreadmaw +173 U Colossal Majesty +174 C Daggerback Basilisk +175 U Declare Dominance +176 U Druid of Horns +177 C Druid of the Cowl +178 U Dryad Greenseeker +179 R Elvish Clancaller +180 C Elvish Rejuvenator +181 U Ghastbark Twins +182 U Ghirapur Guide +183 C Giant Spider +184 U Gift of Paradise +185 R Gigantosaurus +186 R Goreclaw, Terror of Qal Sisma +187 C Greenwood Sentinel +188 C Highland Game +189 R Hungering Hydra +190 C Naturalize +191 C Oakenform +192 R Pelakka Wurm +193 C Plummet +194 R Prodigious Growth +195 C Rabid Bite +196 U Reclamation Sage +197 U Recollect +198 C Rhox Oracle +199 C Root Snare +200 R Runic Armasaur +201 M Scapeshift +202 C Talons of Wildwood +203 R Thorn Lieutenant +204 C Thornhide Wolves +205 C Titanic Growth +206 U Vigilant Baloth +207 U Vine Mare +208 M Vivien Reid +209 R Vivien's Invocation +210 C Wall of Vines +211 U Aerial Engineer +212 M Arcades, the Strategist +213 U Brawl-Bash Ogre +214 M Chromium, the Mutable +215 U Draconic Disciple +216 U Enigma Drake +217 U Heroic Reinforcements +218 M Nicol Bolas, the Ravager +219 M Palladia-Mors, the Ruiner +220 U Poison-Tip Archer +221 U Psychic Symbiont +222 U Regal Bloodlord +223 U Satyr Enchanter +224 U Skyrider Patrol +225 M Vaevictis Asmadi, the Dire +226 R Amulet of Safekeeping +227 U Arcane Encyclopedia +228 R Chaos Wand +229 M Crucible of Worlds +230 R Desecrated Tomb +231 U Diamond Mare +232 R Dragon's Hoard +233 C Explosive Apparatus +234 C Field Creeper +235 U Fountain of Renewal +236 U Gargoyle Sentinel +237 C Gearsmith Guardian +238 R Magistrate's Scepter +239 C Manalith +240 C Marauder's Axe +241 U Meteor Golem +242 U Millstone +243 U Rogue's Gloves +244 R Sigiled Sword of Valeron +245 C Skyscanner +246 U Suspicious Bookcase +247 R Transmogrifying Wand +248 C Cinder Barrens +249 R Detection Tower +250 C Forsaken Sanctuary +251 C Foul Orchard +252 C Highland Lake +253 C Meandering River +254 U Reliquary Tower +255 U Rupture Spire +256 C Stone Quarry +257 C Submerged Boneyard +258 C Timber Gorge +259 C Tranquil Expanse +260 C Woodland Stream +261 L Plains +262 L Plains +263 L Plains +264 L Plains +265 L Island +266 L Island +267 L Island +268 L Island +269 L Swamp +270 L Swamp +271 L Swamp +272 L Swamp +273 L Mountain +274 L Mountain +275 L Mountain +276 L Mountain +277 L Forest +278 L Forest +279 L Forest +280 L Forest +281 M Ajani, Wise Counselor +282 R Ajani's Influence +283 U Court Cleric +284 R Serra's Guardian +285 C Silverbeak Griffin +286 M Tezzeret, Cruel Machinist +287 R Riddlemaster Sphinx +288 C Pendulum of Patterns +289 R Tezzeret's Gatebreaker +290 U Tezzeret's Strider +291 M Liliana, the Necromancer +292 U Arisen Gorgon +293 R Gravewaker +294 R Liliana's Spoils +295 C Tattered Mummy +296 M Sarkhan, Dragonsoul +297 C Kargan Dragonrider +298 R Sarkhan's Dragonfire +299 U Sarkhan's Whelp +300 R Shivan Dragon +301 M Vivien of the Arkbow +302 R Aggressive Mammoth +303 R Skalla Wolf +304 C Ursine Champion +305 U Vivien's Jaguar +306 M Nexus of Fate +307 C Sun Sentinel +308 U Air Elemental +309 C Befuddle +310 C Mist-Cloaked Herald +311 C Waterknot +312 C Grasping Scoundrel +313 C Radiating Lightning +314 C Llanowar Elves + +[tokens] +b_1_1_bat_flying diff --git a/forge-gui/res/formats/Casual/Brawl.txt b/forge-gui/res/formats/Casual/Brawl.txt index e148b1808c2..84972f54ee9 100644 --- a/forge-gui/res/formats/Casual/Brawl.txt +++ b/forge-gui/res/formats/Casual/Brawl.txt @@ -3,5 +3,5 @@ Name:Brawl Order:101 Type:Casual Subtype:Commander -Sets:KLD, AER, AKH, W17, HOU, XLN, RIX, DOM +Sets:KLD, AER, AKH, W17, HOU, XLN, RIX, DOM, M19 Banned:Baral, Chief of Compliance;Smuggler's Copter;Sorcerous Spyglass \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Extended/2013-07-19.txt b/forge-gui/res/formats/Historic/DCI/Extended/2013-07-19.txt new file mode 100644 index 00000000000..b38de6291b7 --- /dev/null +++ b/forge-gui/res/formats/Historic/DCI/Extended/2013-07-19.txt @@ -0,0 +1,8 @@ +[format] +Name:Extended +Type:Historic +Subtype:Extended +Effective:2013-07-19 +Retired:2013-10-08 +Sets:ZEN, WWK, ROE, M11, SOM, MBS, NPH, M12, ISD, DKA, AVR, M13, RTR, GTC, DGM, M14 +Banned:Jace, the Mind Sculptor; Mental Misstep; Ponder; Preordain; Stoneforge Mystic \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/1997-07-01.txt b/forge-gui/res/formats/Historic/DCI/Extended/Alpha/1997-07-01.txt deleted file mode 100644 index 365ca4809fb..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/1997-07-01.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Extended Alpha, Weatherlight -Type:Historic -Subtype:Extended -Effective:1997-07-01 -Sets:LEA -Banned:Ancestral Recall, Balance, Berserk, Black Lotus, Black Vise, Blaze of Glory, Braingeyser, Channel, Chaos Orb, Consecrate Land, Contract from Below, Copper Tablet, Counterspell, Cyclopean Tomb, Darkpact, Demonic Attorney, Demonic Tutor, Dwarven Demolition Team, Fastbond, Forcefield, Gauntlet of Might, Ice Storm, Invisibility, Jade Statue, Juggernaut, Lich, Mind Twist, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Psionic Blast, Regrowth, Sinkhole, Sol Ring, Time Vault, Time Walk, Timetwister, Two-Headed Giant of Foriys, Wheel of Fortune \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/1997-10-01.txt b/forge-gui/res/formats/Historic/DCI/Extended/Alpha/1997-10-01.txt deleted file mode 100644 index de82b4294d9..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/1997-10-01.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Extended Alpha, 10/01/97 -Type:Historic -Subtype:Extended -Effective:1997-10-01 -Sets:LEA -Banned:Ancestral Recall, Balance, Berserk, Black Lotus, Black Vise, Blaze of Glory, Braingeyser, Channel, Chaos Orb, Consecrate Land, Contract from Below, Copper Tablet, Counterspell, Cyclopean Tomb, Darkpact, Demonic Attorney, Demonic Tutor, Dwarven Demolition Team, Fastbond, Forcefield, Gauntlet of Might, Hypnotic Specter, Ice Storm, Invisibility, Jade Statue, Juggernaut, Lich, Mind Twist, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Psionic Blast, Regrowth, Sinkhole, Sol Ring, Time Vault, Time Walk, Timetwister, Two-Headed Giant of Foriys, Wheel of Fortune \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/1998-07-01.txt b/forge-gui/res/formats/Historic/DCI/Extended/Alpha/1998-07-01.txt deleted file mode 100644 index 9a232cf4a52..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/1998-07-01.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Extended Alpha, Exodus -Type:Historic -Subtype:Extended -Effective:1998-07-01 -Sets:LEA -Banned:Ancestral Recall, Balance, Berserk, Black Lotus, Black Vise, Blaze of Glory, Braingeyser, Channel, Chaos Orb, Consecrate Land, Contract from Below, Copper Tablet, Counterspell, Cyclopean Tomb, Darkpact, Demonic Attorney, Demonic Tutor, Dwarven Demolition Team, Fastbond, Forcefield, Gauntlet of Might, Hypnotic Specter, Ice Storm, Invisibility, Jade Statue, Lich, Mind Twist, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Psionic Blast, Regrowth, Sinkhole, Sol Ring, Time Vault, Time Walk, Timetwister, Two-Headed Giant of Foriys, Wheel of Fortune \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/1999-01-01.txt b/forge-gui/res/formats/Historic/DCI/Extended/Alpha/1999-01-01.txt deleted file mode 100644 index 8c5aa52f503..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/1999-01-01.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Extended Alpha, 01/01/99 -Type:Historic -Subtype:Extended -Effective:1999-01-01 -Sets:LEA -Banned:Ancestral Recall, Balance, Berserk, Black Lotus, Black Vise, Blaze of Glory, Channel, Chaos Orb, Consecrate Land, Contract from Below, Copper Tablet, Counterspell, Cyclopean Tomb, Darkpact, Demonic Attorney, Demonic Tutor, Dwarven Demolition Team, Fastbond, Forcefield, Gauntlet of Might, Hypnotic Specter, Ice Storm, Invisibility, Jade Statue, Lich, Mind Twist, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Psionic Blast, Regrowth, Sinkhole, Sol Ring, Time Vault, Time Walk, Timetwister, Two-Headed Giant of Foriys, Wheel of Fortune \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/1999-06-01.txt b/forge-gui/res/formats/Historic/DCI/Extended/Alpha/1999-06-01.txt deleted file mode 100644 index 7ab00e6a927..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/1999-06-01.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Extended Alpha, Classic Sixth Edition -Type:Historic -Subtype:Extended -Effective:1999-06-01 -Sets:LEA -Banned:Ancestral Recall, Balance, Berserk, Black Lotus, Black Vise, Blaze of Glory, Channel, Chaos Orb, Consecrate Land, Contract from Below, Copper Tablet, Cyclopean Tomb, Darkpact, Demonic Attorney, Demonic Tutor, Dwarven Demolition Team, Fastbond, Forcefield, Gauntlet of Might, Hypnotic Specter, Ice Storm, Invisibility, Jade Statue, Lich, Mind Twist, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Psionic Blast, Regrowth, Sinkhole, Sol Ring, Time Vault, Time Walk, Timetwister, Two-Headed Giant of Foriys, Wheel of Fortune \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/1999-10-01.txt b/forge-gui/res/formats/Historic/DCI/Extended/Alpha/1999-10-01.txt deleted file mode 100644 index 4335bba203e..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/1999-10-01.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Extended Alpha, 10/01/99 -Type:Historic -Subtype:Extended -Effective:1999-10-01 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Balance, Basalt Monolith, Berserk, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Celestial Prism, Chaos Orb, Chaoslace, Channel, Clone, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Creature Bond, Cyclopean Tomb, Darkpact, Deathlace, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dragon Whelp, Dwarven Demolition Team, Earth Elemental, Earthbind, Farmstead, Fastbond, Forcefield, Fork, Gaea's Liege, Gauntlet of Might, Goblin Balloon Brigade, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Holy Armor, Hypnotic Specter, Ice Storm, Invisibility, Jade Statue, Juggernaut, Jump, Kormus Bell, Kudzu, Lance, Lich, Lifelace, Lightning Bolt, Living Wall, Mahamoti Djinn, Mind Twist, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nettling Imp, Northern Paladin, Power Leak, Power Surge, Psionic Blast, Purelace, Red Elemental Blast, Red Ward, Regrowth, Resurrection, Roc of Kher Ridges, Rock Hydra, Royal Assassin, Sacrifice, Savannah Lions, Scavenging Ghoul, Sedge Troll, Sengir Vampire, Serra Angel, Simulacrum, Sinkhole, Siren's Call, Sol Ring, Sunglasses of Urza, Thoughtlace, Timber Wolves, Time Vault, Time Walk, Timetwister, Tunnel, Twiddle, Two-Headed Giant of Foriys, Uthden Troll, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Ice, Wall of Water, Wall of Wood, Water Elemental, Web, Wheel of Fortune, White Ward, Will-o'-the-Wisp \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2000-04-01.txt b/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2000-04-01.txt deleted file mode 100644 index bbf5103425f..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2000-04-01.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Extended Alpha, 04/01/00 -Type:Historic -Subtype:Extended -Effective:2000-04-01 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Balance, Basalt Monolith, Berserk, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Celestial Prism, Chaos Orb, Chaoslace, Channel, Clone, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Creature Bond, Cyclopean Tomb, Dark Ritual, Darkpact, Deathlace, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dragon Whelp, Dwarven Demolition Team, Earth Elemental, Earthbind, Farmstead, Fastbond, Forcefield, Fork, Gaea's Liege, Gauntlet of Might, Goblin Balloon Brigade, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Holy Armor, Hypnotic Specter, Ice Storm, Invisibility, Jade Statue, Juggernaut, Jump, Kormus Bell, Kudzu, Lance, Lich, Lifelace, Lightning Bolt, Living Wall, Mahamoti Djinn, Mana Vault, Mind Twist, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nettling Imp, Northern Paladin, Power Leak, Power Surge, Psionic Blast, Purelace, Red Elemental Blast, Red Ward, Regrowth, Resurrection, Roc of Kher Ridges, Rock Hydra, Royal Assassin, Sacrifice, Savannah Lions, Scavenging Ghoul, Sedge Troll, Sengir Vampire, Serra Angel, Simulacrum, Sinkhole, Siren's Call, Sol Ring, Sunglasses of Urza, Thoughtlace, Timber Wolves, Time Vault, Time Walk, Timetwister, Tunnel, Twiddle, Two-Headed Giant of Foriys, Uthden Troll, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Ice, Wall of Water, Wall of Wood, Water Elemental, Web, Wheel of Fortune, White Ward, Will-o'-the-Wisp \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2001-05-01.txt b/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2001-05-01.txt deleted file mode 100644 index 799f1f3248a..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2001-05-01.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Extended Alpha, Seventh Edition -Type:Historic -Subtype:Extended -Effective:2001-05-01 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Balance, Basalt Monolith, Berserk, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Celestial Prism, Chaos Orb, Chaoslace, Channel, Clone, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Creature Bond, Cyclopean Tomb, Dark Ritual, Darkpact, Deathlace, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dragon Whelp, Dwarven Demolition Team, Earth Elemental, Earthbind, Farmstead, Fastbond, Forcefield, Fork, Gaea's Liege, Gauntlet of Might, Goblin Balloon Brigade, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Holy Armor, Hypnotic Specter, Ice Storm, Invisibility, Jade Statue, Juggernaut, Jump, Kormus Bell, Kudzu, Lance, Lich, Lifelace, Lightning Bolt, Living Wall, Mana Vault, Mind Twist, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nettling Imp, Power Leak, Power Surge, Psionic Blast, Purelace, Red Elemental Blast, Red Ward, Regrowth, Resurrection, Roc of Kher Ridges, Rock Hydra, Royal Assassin, Sacrifice, Savannah Lions, Scavenging Ghoul, Sedge Troll, Sengir Vampire, Simulacrum, Sinkhole, Siren's Call, Sol Ring, Sunglasses of Urza, Thoughtlace, Timber Wolves, Time Vault, Time Walk, Timetwister, Tunnel, Two-Headed Giant of Foriys, Uthden Troll, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Ice, Wall of Water, Wall of Wood, Water Elemental, Web, Wheel of Fortune, White Ward, Will-o'-the-Wisp \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2002-03-01.txt b/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2002-03-01.txt deleted file mode 100644 index 736e4b35cba..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2002-03-01.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Extended Alpha, Torment -Type:Historic -Subtype:Extended -Effective:2002-03-01 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Balance, Basalt Monolith, Berserk, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Celestial Prism, Chaos Orb, Chaoslace, Channel, Clone, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Creature Bond, Cyclopean Tomb, Dark Ritual, Darkpact, Deathlace, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dragon Whelp, Dwarven Demolition Team, Earth Elemental, Earthbind, Farmstead, Fastbond, Forcefield, Fork, Gaea's Liege, Gauntlet of Might, Goblin Balloon Brigade, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Holy Armor, Hypnotic Specter, Ice Storm, Invisibility, Jade Statue, Juggernaut, Jump, Kormus Bell, Kudzu, Lance, Lich, Lifelace, Lightning Bolt, Living Wall, Mana Vault, Mind Twist, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nettling Imp, Power Leak, Power Surge, Psionic Blast, Purelace, Red Elemental Blast, Red Ward, Regrowth, Resurrection, Roc of Kher Ridges, Rock Hydra, Royal Assassin, Sacrifice, Savannah Lions, Scavenging Ghoul, Sedge Troll, Simulacrum, Sinkhole, Siren's Call, Sol Ring, Sunglasses of Urza, Thoughtlace, Timber Wolves, Time Vault, Time Walk, Timetwister, Tunnel, Two-Headed Giant of Foriys, Uthden Troll, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Ice, Wall of Water, Wall of Wood, Water Elemental, Web, Wheel of Fortune, White Ward, Will-o'-the-Wisp \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2002-11-01.txt b/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2002-11-01.txt deleted file mode 100644 index c3d1549949f..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2002-11-01.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Extended Alpha, Onslaught -Type:Historic -Subtype:Extended -Effective:2002-11-01 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Animate Wall, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Celestial Prism, Chaos Orb, Chaoslace, Channel, Clockwork Beast, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Craw Wurm, Creature Bond, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Death Ward, Deathgrip, Deathlace, Demonic Attorney, Demonic Hordes, Demonic Tutor, Disintegrate, Dragon Whelp, Drain Life, Drain Power, Dwarven Demolition Team, Dwarven Warriors, Earth Elemental, Earthbind, Evil Presence, Farmstead, Fastbond, Feedback, Fireball, Force of Nature, Forcefield, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Gloom, Goblin Balloon Brigade, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Helm of Chatzuk, Holy Armor, Hurloon Minotaur, Hypnotic Specter, Ice Storm, Icy Manipulator, Instill Energy, Invisibility, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Jade Statue, Juggernaut, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Wall, Lord of the Pit, Magical Hack, Mana Flare, Mana Vault, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Paralyze, Pearled Unicorn, Personal Incarnation, Phantasmal Forces, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Surge, Psionic Blast, Purelace, Red Elemental Blast, Red Ward, Regrowth, Resurrection, Righteousness, Roc of Kher Ridges, Rock Hydra, Royal Assassin, Sacrifice, Savannah, Savannah Lions, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Stasis, Stone Giant, Sunglasses of Urza, Swords to Plowshares, Taiga, Thoughtlace, Timber Wolves, Time Vault, Time Walk, Timetwister, Tsunami, Tundra, Tunnel, Two-Headed Giant of Foriys, Underground Sea, Uthden Troll, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Brambles, Wall of Ice, Wall of Stone, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Knight, White Ward, Will-o'-the-Wisp, Winter Orb \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2003-03-01.txt b/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2003-03-01.txt deleted file mode 100644 index 24062cae91d..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2003-03-01.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Extended Alpha, Legions -Type:Historic -Subtype:Extended -Effective:2003-03-01 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Animate Wall, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Celestial Prism, Chaos Orb, Chaoslace, Channel, Clockwork Beast, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Craw Wurm, Creature Bond, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Death Ward, Deathgrip, Deathlace, Demonic Attorney, Demonic Hordes, Demonic Tutor, Disintegrate, Dragon Whelp, Drain Life, Drain Power, Dwarven Demolition Team, Dwarven Warriors, Earth Elemental, Earthbind, Evil Presence, Farmstead, Fastbond, Feedback, Fireball, Force of Nature, Forcefield, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Gloom, Goblin Balloon Brigade, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Helm of Chatzuk, Holy Armor, Hurloon Minotaur, Hypnotic Specter, Ice Storm, Icy Manipulator, Instill Energy, Invisibility, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Jade Statue, Juggernaut, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Wall, Lord of the Pit, Magical Hack, Mana Flare, Mana Vault, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Paralyze, Pearled Unicorn, Personal Incarnation, Phantasmal Forces, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Surge, Psionic Blast, Purelace, Red Elemental Blast, Red Ward, Regrowth, Resurrection, Righteousness, Roc of Kher Ridges, Rock Hydra, Royal Assassin, Sacrifice, Savannah, Savannah Lions, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Stasis, Stone Giant, Sunglasses of Urza, Swords to Plowshares, Taiga, Thoughtlace, Timber Wolves, Time Vault, Time Walk, Timetwister, Tsunami, Tundra, Tunnel, Two-Headed Giant of Foriys, Underground Sea, Uthden Troll, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Brambles, Wall of Ice, Wall of Stone, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Ward, Will-o'-the-Wisp, Winter Orb \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2003-09-01.txt b/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2003-09-01.txt deleted file mode 100644 index 8425f96c706..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2003-09-01.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Extended Alpha, Eighth Edition -Type:Historic -Subtype:Extended -Effective:2003-09-01 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Animate Wall, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Celestial Prism, Chaos Orb, Chaoslace, Channel, Clockwork Beast, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Creature Bond, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Death Ward, Deathgrip, Deathlace, Demonic Attorney, Demonic Hordes, Demonic Tutor, Disintegrate, Dragon Whelp, Drain Life, Drain Power, Dwarven Warriors, Earth Elemental, Earthbind, Evil Presence, Farmstead, Fastbond, Feedback, Fireball, Force of Nature, Forcefield, Fork, Frozen Shade, Gaea's Liege, Gauntlet of Might, Gloom, Goblin Balloon Brigade, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Helm of Chatzuk, Holy Armor, Hurloon Minotaur, Hypnotic Specter, Ice Storm, Icy Manipulator, Instill Energy, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Jade Statue, Juggernaut, Jump, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Wall, Lord of the Pit, Magical Hack, Mana Flare, Mana Vault, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Paralyze, Pearled Unicorn, Personal Incarnation, Phantasmal Forces, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Surge, Psionic Blast, Purelace, Red Elemental Blast, Red Ward, Regrowth, Resurrection, Righteousness, Roc of Kher Ridges, Rock Hydra, Sacrifice, Savannah, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Stasis, Stone Giant, Sunglasses of Urza, Swords to Plowshares, Taiga, Thoughtlace, Timber Wolves, Time Vault, Time Walk, Timetwister, Tsunami, Tundra, Tunnel, Two-Headed Giant of Foriys, Underground Sea, Uthden Troll, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Brambles, Wall of Ice, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Ward, Will-o'-the-Wisp, Winter Orb \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2003-10-20.txt b/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2003-10-20.txt deleted file mode 100644 index b11d1845881..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2003-10-20.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Extended Alpha, Mirrodin -Type:Historic -Subtype:Extended -Effective:2003-10-20 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Animate Wall, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Celestial Prism, Chaos Orb, Chaoslace, Channel, Clockwork Beast, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Creature Bond, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Death Ward, Deathgrip, Deathlace, Demonic Attorney, Demonic Hordes, Demonic Tutor, Disintegrate, Dragon Whelp, Drain Life, Drain Power, Dwarven Warriors, Earth Elemental, Earthbind, Evil Presence, Farmstead, Fastbond, Feedback, Fireball, Force of Nature, Forcefield, Fork, Frozen Shade, Gaea's Liege, Gauntlet of Might, Gloom, Goblin Balloon Brigade, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Helm of Chatzuk, Holy Armor, Hurloon Minotaur, Hypnotic Specter, Ice Storm, Instill Energy, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Jade Statue, Juggernaut, Jump, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Wall, Lord of the Pit, Magical Hack, Mana Flare, Mana Vault, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Paralyze, Pearled Unicorn, Personal Incarnation, Phantasmal Forces, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Surge, Psionic Blast, Purelace, Red Elemental Blast, Red Ward, Regrowth, Resurrection, Righteousness, Roc of Kher Ridges, Rock Hydra, Sacrifice, Savannah, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Stasis, Stone Giant, Sunglasses of Urza, Swords to Plowshares, Taiga, Thoughtlace, Timber Wolves, Time Vault, Time Walk, Timetwister, Tsunami, Tundra, Tunnel, Two-Headed Giant of Foriys, Underground Sea, Uthden Troll, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Brambles, Wall of Ice, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Ward, Will-o'-the-Wisp, Winter Orb \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2004-02-20.txt b/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2004-02-20.txt deleted file mode 100644 index 20062031011..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2004-02-20.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Extended Alpha, Darksteel -Type:Historic -Subtype:Extended -Effective:2004-02-20 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Animate Wall, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Celestial Prism, Chaos Orb, Chaoslace, Channel, Clockwork Beast, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Creature Bond, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Death Ward, Deathgrip, Deathlace, Demonic Attorney, Demonic Hordes, Demonic Tutor, Disintegrate, Dragon Whelp, Drain Life, Drain Power, Dwarven Warriors, Earth Elemental, Earthbind, Evil Presence, Farmstead, Fastbond, Feedback, Force of Nature, Forcefield, Fork, Frozen Shade, Gaea's Liege, Gauntlet of Might, Gloom, Goblin Balloon Brigade, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Helm of Chatzuk, Holy Armor, Hurloon Minotaur, Hypnotic Specter, Ice Storm, Instill Energy, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Jade Statue, Jump, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Wall, Lord of the Pit, Magical Hack, Mana Flare, Mana Vault, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Paralyze, Pearled Unicorn, Personal Incarnation, Phantasmal Forces, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Surge, Psionic Blast, Purelace, Red Elemental Blast, Red Ward, Regrowth, Resurrection, Righteousness, Roc of Kher Ridges, Rock Hydra, Sacrifice, Savannah, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Stasis, Stone Giant, Sunglasses of Urza, Swords to Plowshares, Taiga, Thoughtlace, Timber Wolves, Time Vault, Time Walk, Timetwister, Tsunami, Tundra, Tunnel, Two-Headed Giant of Foriys, Underground Sea, Uthden Troll, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Brambles, Wall of Ice, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Ward, Will-o'-the-Wisp, Winter Orb \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2005-08-20.txt b/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2005-08-20.txt deleted file mode 100644 index 03c85ca0d39..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2005-08-20.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Extended Alpha, Ninth Edition -Type:Historic -Subtype:Extended -Effective:2005-08-20 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Animate Wall, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Celestial Prism, Chaos Orb, Chaoslace, Channel, Clockwork Beast, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Creature Bond, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Death Ward, Deathgrip, Deathlace, Demonic Attorney, Demonic Hordes, Demonic Tutor, Disintegrate, Dragon Whelp, Drain Life, Drain Power, Dwarven Warriors, Earth Elemental, Earthbind, Evil Presence, Farmstead, Fastbond, Feedback, Forcefield, Fork, Frozen Shade, Gaea's Liege, Gauntlet of Might, Gloom, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Helm of Chatzuk, Holy Armor, Hurloon Minotaur, Ice Storm, Instill Energy, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Jump, Keldon Warlord, Kormus Bell, Kudzu, Lance, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Wall, Lord of the Pit, Magical Hack, Mana Flare, Mana Vault, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Paralyze, Pearled Unicorn, Personal Incarnation, Phantasmal Forces, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Surge, Psionic Blast, Purelace, Red Elemental Blast, Red Ward, Regrowth, Resurrection, Roc of Kher Ridges, Rock Hydra, Sacrifice, Savannah, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Stasis, Stone Giant, Sunglasses of Urza, Swords to Plowshares, Taiga, Thoughtlace, Timber Wolves, Time Vault, Time Walk, Timetwister, Tsunami, Tundra, Tunnel, Two-Headed Giant of Foriys, Underground Sea, Uthden Troll, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Brambles, Wall of Ice, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Wheel of Fortune, White Ward, Winter Orb \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2005-10-20.txt b/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2005-10-20.txt deleted file mode 100644 index 3a7b87c6035..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2005-10-20.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Extended Alpha, Ravnica: City of Guilds -Type:Historic -Subtype:Extended -Effective:2005-10-20 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Celestial Prism, Chaos Orb, Chaoslace, Channel, Clockwork Beast, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Creature Bond, Crusade, Cursed Land, Cyclopean Tomb, Dark Ritual, Dark Ritual, Darkpact, Death Ward, Deathgrip, Deathlace, Demonic Attorney, Demonic Hordes, Demonic Tutor, Disintegrate, Dragon Whelp, Drain Life, Drain Power, Dwarven Warriors, Earth Elemental, Earthbind, Evil Presence, Farmstead, Fastbond, Feedback, Forcefield, Fork, Frozen Shade, Gaea's Liege, Gauntlet of Might, Glasses of Urza, Gloom, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Helm of Chatzuk, The Hive, Holy Armor, Hurloon Minotaur, Ice Storm, Instill Energy, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Jade Monolith, Jump, Keldon Warlord, Kormus Bell, Kudzu, Lance, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Lord of the Pit, Magical Hack, Mana Flare, Mana Vault, Manabarbs, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Obsianus Golem, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Psionic Blast, Psychic Venom, Purelace, Red Elemental Blast, Red Ward, Regrowth, Resurrection, Roc of Kher Ridges, Rock Hydra, Sacrifice, Savannah, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Spell Blast, Stasis, Stone Giant, Sunglasses of Urza, Swords to Plowshares, Taiga, Thicket Basilisk, Thoughtlace, Timber Wolves, Time Vault, Time Walk, Timetwister, Tsunami, Tundra, Tunnel, Two-Headed Giant of Foriys, Underground Sea, Uthden Troll, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Brambles, Wall of Ice, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Wheel of Fortune, White Ward, Winter Orb, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2006-10-20.txt b/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2006-10-20.txt deleted file mode 100644 index fb95664f4fb..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2006-10-20.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Extended Alpha, Time Spiral -Type:Historic -Subtype:Extended -Effective:2006-10-20 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Celestial Prism, Chaos Orb, Chaoslace, Channel, Clockwork Beast, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Creature Bond, Crusade, Cursed Land, Cyclopean Tomb, Dark Ritual, Dark Ritual, Darkpact, Death Ward, Deathgrip, Deathlace, Demonic Attorney, Demonic Hordes, Demonic Tutor, Drain Life, Drain Power, Dwarven Warriors, Earth Elemental, Earthbind, Evil Presence, Farmstead, Fastbond, Feedback, Forcefield, Fork, Frozen Shade, Gauntlet of Might, Glasses of Urza, Gloom, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Helm of Chatzuk, The Hive, Holy Armor, Hurloon Minotaur, Ice Storm, Instill Energy, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Jade Monolith, Jump, Keldon Warlord, Kormus Bell, Kudzu, Lance, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Lord of the Pit, Magical Hack, Mana Flare, Mana Vault, Manabarbs, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Obsianus Golem, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Psychic Venom, Purelace, Red Elemental Blast, Red Ward, Regrowth, Roc of Kher Ridges, Rock Hydra, Sacrifice, Savannah, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Spell Blast, Stasis, Stone Giant, Sunglasses of Urza, Swords to Plowshares, Taiga, Thicket Basilisk, Thoughtlace, Timber Wolves, Time Vault, Time Walk, Timetwister, Tsunami, Tundra, Tunnel, Two-Headed Giant of Foriys, Underground Sea, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Brambles, Wall of Ice, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Wheel of Fortune, White Ward, Winter Orb, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2007-07-20.txt b/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2007-07-20.txt deleted file mode 100644 index 9fb989cfe36..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2007-07-20.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Extended Alpha, Tenth Edition -Type:Historic -Subtype:Extended -Effective:2007-07-20 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Celestial Prism, Chaos Orb, Chaoslace, Channel, Clockwork Beast, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Creature Bond, Crusade, Cursed Land, Cyclopean Tomb, Dark Ritual, Dark Ritual, Darkpact, Death Ward, Deathgrip, Deathlace, Demonic Attorney, Demonic Hordes, Demonic Tutor, Drain Life, Drain Power, Dwarven Warriors, Earthbind, Evil Presence, Farmstead, Fastbond, Feedback, Forcefield, Fork, Frozen Shade, Gauntlet of Might, Glasses of Urza, Gloom, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Helm of Chatzuk, Holy Armor, Hurloon Minotaur, Ice Storm, Instill Energy, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Jade Monolith, Jump, Keldon Warlord, Kormus Bell, Kudzu, Lance, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Magical Hack, Mana Flare, Mana Vault, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Obsianus Golem, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Psychic Venom, Purelace, Red Elemental Blast, Red Ward, Regrowth, Roc of Kher Ridges, Rock Hydra, Sacrifice, Savannah, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Spell Blast, Stasis, Stone Giant, Sunglasses of Urza, Swords to Plowshares, Taiga, Thicket Basilisk, Thoughtlace, Timber Wolves, Time Vault, Time Walk, Timetwister, Tsunami, Tundra, Tunnel, Two-Headed Giant of Foriys, Underground Sea, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Brambles, Wall of Ice, Wall of Water, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Wheel of Fortune, White Ward, Winter Orb, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2008-10-03.txt b/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2008-10-03.txt deleted file mode 100644 index 2a9f4c5c9e7..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2008-10-03.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Extended Alpha, Shards of Alara -Type:Historic -Subtype:Extended -Effective:2008-10-03 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Castle, Celestial Prism, Chaos Orb, Chaoslace, Channel, Clockwork Beast, Conservator, Contract from Below, Control Magic, Counterspell, Conversion, Copper Tablet, Copy Artifact, Creature Bond, Crusade, Cursed Land, Cyclopean Tomb, Dark Ritual, Dark Ritual, Darkpact, Death Ward, Deathgrip, Deathlace, Demonic Attorney, Demonic Hordes, Demonic Tutor, Drain Life, Drain Power, Dwarven Warriors, Earthbind, Earthquake, Elvish Archers, Evil Presence, Farmstead, Fastbond, Feedback, Fire Elemental, Fog, Forcefield, Fork, Frozen Shade, Gauntlet of Might, Glasses of Urza, Gloom, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Helm of Chatzuk, Holy Armor, Howl from Beyond, Hurloon Minotaur, Ice Storm, Instill Energy, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Jade Monolith, Jump, Keldon Warlord, Kormus Bell, Kudzu, Lance, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Magical Hack, Mana Flare, Mana Short, Mana Vault, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Psychic Venom, Purelace, Red Elemental Blast, Red Ward, Regrowth, Roc of Kher Ridges, Rock Hydra, Sacrifice, Savannah, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Stone Giant, Sunglasses of Urza, Swords to Plowshares, Taiga, Thicket Basilisk, Thoughtlace, Timber Wolves, Time Vault, Time Walk, Timetwister, Tranquility, Tsunami, Tundra, Tunnel, Two-Headed Giant of Foriys, Underground Sea, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Bone, Wall of Brambles, Wall of Ice, Wall of Water, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Wheel of Fortune, White Ward, Wild Growth, Winter Orb, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2009-07-17.txt b/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2009-07-17.txt deleted file mode 100644 index 432171218aa..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2009-07-17.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Extended Alpha, 2010 Core Set -Type:Historic -Subtype:Extended -Effective:2009-07-17 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Castle, Celestial Prism, Chaos Orb, Chaoslace, Channel, Clockwork Beast, Conservator, Contract from Below, Control Magic, Counterspell, Conversion, Copper Tablet, Copy Artifact, Creature Bond, Crusade, Cursed Land, Cyclopean Tomb, Dark Ritual, Dark Ritual, Darkpact, Death Ward, Deathgrip, Deathlace, Demonic Attorney, Demonic Hordes, Demonic Tutor, Drain Life, Drain Power, Dwarven Warriors, Earthbind, Elvish Archers, Evil Presence, Farmstead, Fastbond, Feedback, Fire Elemental, Fog, Forcefield, Fork, Frozen Shade, Gauntlet of Might, Glasses of Urza, Gloom, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Helm of Chatzuk, Holy Armor, Howl from Beyond, Hurloon Minotaur, Ice Storm, Instill Energy, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Jade Monolith, Keldon Warlord, Kormus Bell, Kudzu, Lance, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Living Artifact, Living Lands, Living Wall, Magical Hack, Mana Flare, Mana Short, Mana Vault, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Psychic Venom, Purelace, Red Elemental Blast, Red Ward, Regrowth, Roc of Kher Ridges, Rock Hydra, Sacrifice, Savannah, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Sunglasses of Urza, Swords to Plowshares, Taiga, Thicket Basilisk, Thoughtlace, Timber Wolves, Time Vault, Time Walk, Timetwister, Tranquility, Tsunami, Tundra, Tunnel, Two-Headed Giant of Foriys, Underground Sea, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Brambles, Wall of Ice, Wall of Water, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Wheel of Fortune, White Ward, Wild Growth, Winter Orb, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2009-10-02.txt b/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2009-10-02.txt deleted file mode 100644 index 7c4df9536a0..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2009-10-02.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Extended Alpha, Zendikar -Type:Historic -Subtype:Extended -Effective:2009-10-02 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Castle, Celestial Prism, Chaos Orb, Chaoslace, Channel, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: White, Clockwork Beast, Conservator, Contract from Below, Control Magic, Counterspell, Conversion, Copper Tablet, Copy Artifact, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Dark Ritual, Darkpact, Death Ward, Deathgrip, Deathlace, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Drain Life, Drain Power, Dwarven Demolition Team, Dwarven Warriors, Earthbind, Elvish Archers, Evil Presence, Farmstead, Fastbond, Feedback, Fire Elemental, Forcefield, Fork, Frozen Shade, Fungusaur, Gauntlet of Might, Glasses of Urza, Gloom, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Healing Salve, Helm of Chatzuk, Holy Armor, Howl from Beyond, Hurloon Minotaur, Ice Storm, Instill Energy, Invisibility, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Living Artifact, Living Lands, Living Wall, Magical Hack, Mana Flare, Mana Short, Mana Vault, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Psychic Venom, Purelace, Red Elemental Blast, Red Ward, Regrowth, Roc of Kher Ridges, Rock Hydra, Sacrifice, Savannah, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Steal Artifact, Sunglasses of Urza, Swords to Plowshares, Taiga, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Time Vault, Time Walk, Timetwister, Tranquility, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Brambles, Wall of Ice, Wall of Stone, Wall of Water, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Wheel of Fortune, White Ward, Wild Growth, Winter Orb, Wooden Sphere, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2010-07-01.txt b/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2010-07-01.txt deleted file mode 100644 index 7a369e78afa..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2010-07-01.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Extended Alpha, 07/01/10 -Type:Historic -Subtype:Extended -Effective:2010-07-01 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Castle, Celestial Prism, Chaos Orb, Chaoslace, Channel, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: Red, Circle of Protection: White, Clockwork Beast, Conservator, Contract from Below, Control Magic, Counterspell, Conversion, Copper Tablet, Copy Artifact, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Dark Ritual, Darkpact, Death Ward, Deathgrip, Deathlace, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disrupting Scepter, Drain Life, Drain Power, Dwarven Demolition Team, Dwarven Warriors, Earthbind, Elvish Archers, Evil Presence, Farmstead, Fastbond, Feedback, Fire Elemental, Flashfires, Flight, Force of Nature, Forcefield, Fork, Frozen Shade, Fungusaur, Gauntlet of Might, Glasses of Urza, Gloom, Goblin Balloon Brigade, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Healing Salve, Helm of Chatzuk, Holy Armor, Howl from Beyond, Hurloon Minotaur, Ice Storm, Instill Energy, Invisibility, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jade Statue, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Living Artifact, Living Lands, Living Wall, Magical Hack, Mana Flare, Mana Short, Mana Vault, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Psychic Venom, Purelace, Raise Dead, Red Elemental Blast, Red Ward, Regrowth, Reverse Damage, Roc of Kher Ridges, Rock Hydra, Sacrifice, Savannah, Savannah Lions, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Steal Artifact, Stone Rain, Stream of Life, Sunglasses of Urza, Swords to Plowshares, Taiga, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Time Vault, Time Walk, Timetwister, Tranquility, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Verduran Enchantress, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Brambles, Wall of Ice, Wall of Stone, Wall of Water, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Web, Wheel of Fortune, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Wooden Sphere, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2010-07-16.txt b/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2010-07-16.txt deleted file mode 100644 index 347af3b5cfa..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2010-07-16.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Extended Alpha, 2011 Core Set -Type:Historic -Subtype:Extended -Effective:2010-07-16 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Castle, Celestial Prism, Chaos Orb, Chaoslace, Channel, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: Red, Circle of Protection: White, Clockwork Beast, Conservator, Contract from Below, Control Magic, Counterspell, Conversion, Copper Tablet, Copy Artifact, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Dark Ritual, Darkpact, Death Ward, Deathgrip, Deathlace, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disrupting Scepter, Drain Life, Drain Power, Dwarven Demolition Team, Dwarven Warriors, Earthbind, Elvish Archers, Evil Presence, Farmstead, Fastbond, Feedback, Fire Elemental, Flashfires, Flight, Force of Nature, Forcefield, Fork, Frozen Shade, Fungusaur, Gauntlet of Might, Glasses of Urza, Gloom, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Healing Salve, Helm of Chatzuk, Holy Armor, Howl from Beyond, Hurloon Minotaur, Ice Storm, Instill Energy, Invisibility, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jade Statue, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Living Artifact, Living Lands, Living Wall, Magical Hack, Mana Flare, Mana Short, Mana Vault, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Psychic Venom, Purelace, Raise Dead, Red Elemental Blast, Red Ward, Regrowth, Reverse Damage, Roc of Kher Ridges, Rock Hydra, Sacrifice, Savannah, Savannah Lions, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Steal Artifact, Stone Rain, Stream of Life, Sunglasses of Urza, Swords to Plowshares, Taiga, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Time Vault, Time Walk, Timetwister, Tranquility, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Verduran Enchantress, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Brambles, Wall of Ice, Wall of Stone, Wall of Water, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Web, Wheel of Fortune, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Wooden Sphere, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2010-10-01.txt b/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2010-10-01.txt deleted file mode 100644 index 5c782fee968..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2010-10-01.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Extended Alpha, Scars of Mirrodin -Type:Historic -Subtype:Extended -Effective:2010-10-01 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Castle, Celestial Prism, Chaos Orb, Chaoslace, Channel, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: Red, Circle of Protection: White, Clockwork Beast, Consecrate Land, Conservator, Contract from Below, Control Magic, Counterspell, Conversion, Copper Tablet, Copy Artifact, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Dark Ritual, Darkpact, Death Ward, Deathgrip, Deathlace, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Disrupting Scepter, Drain Life, Drain Power, Dwarven Demolition Team, Dwarven Warriors, Earth Elemental, Earthbind, Elvish Archers, Evil Presence, Farmstead, Fastbond, Fear, Feedback, Fire Elemental, Flashfires, Flight, Force of Nature, Forcefield, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Glasses of Urza, Gloom, Goblin King, Granite Gargoyle, Gray Ogre, Green Ward, Grizzly Bears, Guardian Angel, Healing Salve, Helm of Chatzuk, Hill Giant, The Hive, Holy Armor, Howl from Beyond, Hurloon Minotaur, Hurricane, Ice Storm, Icy Manipulator, Instill Energy, Invisibility, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jade Statue, Jayemdae Tome, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Living Artifact, Living Lands, Living Wall, Lord of Atlantis, Lord of the Pit, Lure, Magical Hack, Mahamoti Djinn, Mana Flare, Mana Short, Mana Vault, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Artillery, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raise Dead, Red Elemental Blast, Red Ward, Regeneration, Regrowth, Resurrection, Reverse Damage, Roc of Kher Ridges, Rock Hydra, Sacrifice, Samite Healer, Savannah, Savannah Lions, Scathe Zombies, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Sengir Vampire, Shanodin Dryads, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Steal Artifact, Stone Rain, Stream of Life, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Time Vault, Time Walk, Timetwister, Tranquility, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Uthden Troll, Verduran Enchantress, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Air, Wall of Brambles, Wall of Ice, Wall of Stone, Wall of Swords, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Web, Wheel of Fortune, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Wooden Sphere, Wrath of God, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2011-07-15.txt b/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2011-07-15.txt deleted file mode 100644 index b14823c0931..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2011-07-15.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Extended Alpha, 2012 Core Set -Type:Historic -Subtype:Extended -Effective:2011-07-15 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Castle, Celestial Prism, Chaos Orb, Chaoslace, Channel, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: Red, Circle of Protection: White, Clockwork Beast, Consecrate Land, Conservator, Contract from Below, Control Magic, Counterspell, Conversion, Copper Tablet, Copy Artifact, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Dark Ritual, Darkpact, Death Ward, Deathgrip, Deathlace, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Disrupting Scepter, Drain Life, Drain Power, Dwarven Demolition Team, Dwarven Warriors, Earth Elemental, Earthbind, Elvish Archers, Evil Presence, Farmstead, Fastbond, Fear, Feedback, Fire Elemental, Flashfires, Force of Nature, Forcefield, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Glasses of Urza, Gloom, Goblin King, Granite Gargoyle, Gray Ogre, Green Ward, Grizzly Bears, Guardian Angel, Healing Salve, Helm of Chatzuk, Hill Giant, The Hive, Holy Armor, Howl from Beyond, Hurloon Minotaur, Hurricane, Ice Storm, Icy Manipulator, Instill Energy, Invisibility, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jade Statue, Jayemdae Tome, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Living Artifact, Living Lands, Living Wall, Lord of Atlantis, Lord of the Pit, Magical Hack, Mahamoti Djinn, Mana Flare, Mana Short, Mana Vault, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Artillery, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raise Dead, Red Elemental Blast, Red Ward, Regeneration, Regrowth, Resurrection, Reverse Damage, Roc of Kher Ridges, Rock Hydra, Sacrifice, Samite Healer, Savannah, Savannah Lions, Scathe Zombies, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Steal Artifact, Stone Rain, Stream of Life, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Time Vault, Time Walk, Timetwister, Tranquility, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Uthden Troll, Verduran Enchantress, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Air, Wall of Brambles, Wall of Ice, Wall of Stone, Wall of Swords, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Web, Wheel of Fortune, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Wooden Sphere, Wrath of God, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2012-07-13.txt b/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2012-07-13.txt deleted file mode 100644 index 254d732c58e..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2012-07-13.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Extended Alpha, 2013 Core Set -Type:Historic -Subtype:Extended -Effective:2012-07-13 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Castle, Celestial Prism, Chaos Orb, Chaoslace, Channel, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: Red, Circle of Protection: White, Clockwork Beast, Consecrate Land, Conservator, Contract from Below, Control Magic, Counterspell, Conversion, Copper Tablet, Copy Artifact, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Dark Ritual, Darkpact, Death Ward, Deathgrip, Deathlace, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Disrupting Scepter, Drain Life, Drain Power, Dwarven Demolition Team, Dwarven Warriors, Earth Elemental, Earthbind, Elvish Archers, Evil Presence, Farmstead, Fastbond, Fear, Feedback, Flashfires, Force of Nature, Forcefield, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Glasses of Urza, Gloom, Goblin King, Granite Gargoyle, Gray Ogre, Green Ward, Grizzly Bears, Guardian Angel, Healing Salve, Helm of Chatzuk, Hill Giant, The Hive, Holy Armor, Howl from Beyond, Hurloon Minotaur, Hurricane, Ice Storm, Icy Manipulator, Instill Energy, Invisibility, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jade Statue, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Living Artifact, Living Lands, Living Wall, Lord of Atlantis, Lord of the Pit, Magical Hack, Mahamoti Djinn, Mana Flare, Mana Short, Mana Vault, Meekstone, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Artillery, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raise Dead, Red Elemental Blast, Red Ward, Regeneration, Regrowth, Resurrection, Reverse Damage, Roc of Kher Ridges, Rock Hydra, Sacrifice, Samite Healer, Savannah, Savannah Lions, Scathe Zombies, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Steal Artifact, Stone Rain, Stream of Life, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Time Vault, Time Walk, Timetwister, Tranquility, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Uthden Troll, Verduran Enchantress, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Air, Wall of Brambles, Wall of Ice, Wall of Stone, Wall of Swords, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Web, Wheel of Fortune, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Wooden Sphere, Wrath of God, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2012-10-05.txt b/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2012-10-05.txt deleted file mode 100644 index 28b2749b700..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2012-10-05.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Extended Alpha, Return to Ravnica -Type:Historic -Subtype:Extended -Effective:2012-10-05 -Sets:LEA -Banned:Air Elemental, Ancestral Recall, Animate Artifact, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Bog Wraith, Braingeyser, Burrowing, Castle, Celestial Prism, Chaos Orb, Chaoslace, Channel, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: Red, Circle of Protection: White, Clockwork Beast, Consecrate Land, Conservator, Contract from Below, Control Magic, Counterspell, Conversion, Copper Tablet, Copy Artifact, Craw Wurm, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Dark Ritual, Darkpact, Death Ward, Deathgrip, Deathlace, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Disrupting Scepter, Dragon Whelp, Drain Life, Drain Power, Drudge Skeletons, Dwarven Demolition Team, Dwarven Warriors, Earth Elemental, Earthbind, Earthquake, Elvish Archers, Farmstead, Fastbond, Fear, Feedback, Flashfires, Force of Nature, Forcefield, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Glasses of Urza, Gloom, Goblin King, Granite Gargoyle, Gray Ogre, Green Ward, Grizzly Bears, Guardian Angel, Healing Salve, Helm of Chatzuk, Hill Giant, The Hive, Holy Armor, Holy Strength, Howl from Beyond, Howling Mine, Hurloon Minotaur, Hurricane, Hypnotic Specter, Ice Storm, Icy Manipulator, Instill Energy, Invisibility, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jade Statue, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Lord of Atlantis, Lord of the Pit, Magical Hack, Mahamoti Djinn, Mana Flare, Mana Short, Mana Vault, Meekstone, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Nightmare, Northern Paladin, Obsianus Golem, Orcish Artillery, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raise Dead, Red Elemental Blast, Red Ward, Regeneration, Regrowth, Resurrection, Reverse Damage, Righteousness, Roc of Kher Ridges, Rock Hydra, Rod of Ruin, Sacrifice, Samite Healer, Savannah, Savannah Lions, Scathe Zombies, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Shivan Dragon, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Steal Artifact, Stone Giant, Stone Rain, Stream of Life, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Time Vault, Time Walk, Timetwister, Tranquility, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Unholy Strength, Uthden Troll, Verduran Enchantress, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Air, Wall of Bone, Wall of Brambles, Wall of Ice, Wall of Stone, Wall of Swords, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Knight, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Wooden Sphere, Wrath of God, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2013-07-19.txt b/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2013-07-19.txt deleted file mode 100644 index 6f14717de50..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Extended/Alpha/2013-07-19.txt +++ /dev/null @@ -1,8 +0,0 @@ -[format] -Name:Extended Alpha -Type:Historic -Subtype:Extended -Effective:2013-07-19 -Retired:2013-10-08 -Sets:LEA -Banned:Air Elemental, Ancestral Recall, Animate Artifact, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blue Elemental Blast, Blue Ward, Bog Wraith, Braingeyser, Burrowing, Castle, Celestial Prism, Chaos Orb, Chaoslace, Channel, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: Red, Circle of Protection: White, Clockwork Beast, Consecrate Land, Conservator, Contract from Below, Control Magic, Counterspell, Conversion, Copper Tablet, Copy Artifact, Craw Wurm, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Dark Ritual, Darkpact, Death Ward, Deathgrip, Deathlace, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Disrupting Scepter, Dragon Whelp, Drain Life, Drain Power, Drudge Skeletons, Dwarven Demolition Team, Dwarven Warriors, Earth Elemental, Earthbind, Earthquake, Elvish Archers, Farmstead, Fastbond, Fear, Feedback, Flashfires, Force of Nature, Forcefield, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Glasses of Urza, Gloom, Goblin King, Granite Gargoyle, Gray Ogre, Green Ward, Grizzly Bears, Guardian Angel, Healing Salve, Helm of Chatzuk, Hill Giant, The Hive, Holy Armor, Howl from Beyond, Howling Mine, Hurloon Minotaur, Hurricane, Hypnotic Specter, Ice Storm, Icy Manipulator, Instill Energy, Invisibility, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jade Statue, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Living Artifact, Living Lands, Living Wall, Lord of Atlantis, Lord of the Pit, Magical Hack, Mahamoti Djinn, Mana Flare, Mana Short, Mana Vault, Meekstone, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Artillery, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raise Dead, Red Elemental Blast, Red Ward, Regeneration, Regrowth, Resurrection, Reverse Damage, Righteousness, Roc of Kher Ridges, Rock Hydra, Sacrifice, Samite Healer, Savannah, Savannah Lions, Scathe Zombies, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Stasis, Steal Artifact, Stone Giant, Stone Rain, Stream of Life, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Time Vault, Time Walk, Timetwister, Tranquility, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Uthden Troll, Verduran Enchantress, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Air, Wall of Bone, Wall of Brambles, Wall of Ice, Wall of Stone, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Wooden Sphere, Wrath of God, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Ice Age/1995-10-01.txt b/forge-gui/res/formats/Historic/DCI/Ice Age/1995-10-01.txt deleted file mode 100644 index ca6a0403026..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Ice Age/1995-10-01.txt +++ /dev/null @@ -1,8 +0,0 @@ -[format] -Name:Ice Age, 10/01/95 -Type:Historic -Subtype:Ice Age -Effective:1995-10-01 -Sets:ICE -Restricted:Zuran Orb -Banned:Amulet of Quoz \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Legacy/Alpha/1996-10-01.txt b/forge-gui/res/formats/Historic/DCI/Legacy/Alpha/1996-10-01.txt deleted file mode 100644 index 5308d82c348..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Legacy/Alpha/1996-10-01.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Type I.5 Alpha, 10/01/96 -Type:Historic -Subtype:Legacy -Effective:1996-10-01 -Sets:LEA -Banned:Ancestral Recall, Balance, Berserk, Black Lotus, Black Vise, Channel, Chaos Orb, Contract from Below, Copy Artifact, Darkpact, Demonic Attorney, Demonic Tutor, Fastbond, Fork, Mind Twist, Mox Emerald, Mox Pearl, Mox Ruby, Mox Sapphire, Mox Jet, Regrowth, Sol Ring, Time Walk, Timetwister, Wheel of Fortune \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Legacy/Alpha/1996-11-08.txt b/forge-gui/res/formats/Historic/DCI/Legacy/Alpha/1996-11-08.txt deleted file mode 100644 index db956fec2c3..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Legacy/Alpha/1996-11-08.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Type I.5 Alpha, 11/08/96 -Type:Historic -Subtype:Legacy -Effective:1996-11-08 -Sets:LEA -Banned:Ancestral Recall, Balance, Berserk, Black Lotus, Black Vise, Braingeyser, Channel, Chaos Orb, Contract from Below, Copy Artifact, Darkpact, Demonic Attorney, Demonic Tutor, Fastbond, Fork, Mind Twist, Mox Emerald, Mox Pearl, Mox Ruby, Mox Sapphire, Mox Jet, Regrowth, Sol Ring, Time Walk, Timetwister, Wheel of Fortune \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Legacy/Alpha/1997-04-01.txt b/forge-gui/res/formats/Historic/DCI/Legacy/Alpha/1997-04-01.txt deleted file mode 100644 index 8cfad5cd670..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Legacy/Alpha/1997-04-01.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Type I.5 Alpha, 04/01/97 -Type:Historic -Subtype:Legacy -Effective:1997-04-01 -Sets:LEA -Banned:Ancestral Recall, Balance, Berserk, Black Lotus, Braingeyser, Channel, Chaos Orb, Contract from Below, Copy Artifact, Darkpact, Demonic Attorney, Demonic Tutor, Fastbond, Fork, Mind Twist, Mox Emerald, Mox Pearl, Mox Ruby, Mox Sapphire, Mox Jet, Regrowth, Sol Ring, Time Walk, Timetwister, Wheel of Fortune \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Legacy/Alpha/1999-04-01.txt b/forge-gui/res/formats/Historic/DCI/Legacy/Alpha/1999-04-01.txt deleted file mode 100644 index fd1c54cff73..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Legacy/Alpha/1999-04-01.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Classic-Restricted Alpha, 04/01/99 -Type:Historic -Subtype:Legacy -Effective:1999-04-01 -Sets:LEA -Banned:Ancestral Recall, Balance, Berserk, Black Lotus, Braingeyser, Channel, Chaos Orb, Contract from Below, Darkpact, Demonic Attorney, Demonic Tutor, Fastbond, Fork, Mind Twist, Mox Emerald, Mox Pearl, Mox Ruby, Mox Sapphire, Mox Jet, Regrowth, Sol Ring, Time Walk, Timetwister, Wheel of Fortune \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Legacy/Alpha/1999-10-01.txt b/forge-gui/res/formats/Historic/DCI/Legacy/Alpha/1999-10-01.txt deleted file mode 100644 index fd4cdc53072..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Legacy/Alpha/1999-10-01.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Type 1.5 Alpha, 10/01/99 -Type:Historic -Subtype:Legacy -Effective:1999-10-01 -Sets:LEA -Banned:Ancestral Recall, Balance, Berserk, Black Lotus, Braingeyser, Channel, Chaos Orb, Contract from Below, Darkpact, Demonic Attorney, Demonic Tutor, Fastbond, Fork, Mana Vault, Mind Twist, Mox Emerald, Mox Pearl, Mox Ruby, Mox Sapphire, Mox Jet, Regrowth, Sol Ring, Time Walk, Timetwister, Wheel of Fortune \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Legacy/Alpha/2003-04-01.txt b/forge-gui/res/formats/Historic/DCI/Legacy/Alpha/2003-04-01.txt deleted file mode 100644 index e2df520cbed..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Legacy/Alpha/2003-04-01.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Type 1.5 Alpha, 04/01/03 -Type:Historic -Subtype:Legacy -Effective:2003-04-01 -Sets:LEA -Banned:Ancestral Recall, Balance, Black Lotus, Braingeyser, Channel, Chaos Orb, Contract from Below, Darkpact, Demonic Attorney, Demonic Tutor, Fastbond, Fork, Mana Vault, Mind Twist, Mox Emerald, Mox Pearl, Mox Ruby, Mox Sapphire, Mox Jet, Regrowth, Sol Ring, Time Walk, Timetwister, Wheel of Fortune \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Legacy/Alpha/2004-09-20.txt b/forge-gui/res/formats/Historic/DCI/Legacy/Alpha/2004-09-20.txt deleted file mode 100644 index 3d52b4c5a34..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Legacy/Alpha/2004-09-20.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:"Type 1.5" Alpha, 09/20/04 -Type:Historic -Subtype:Legacy -Effective:2004-09-20 -Sets:LEA -Banned:Ancestral Recall, Balance, Black Lotus, Black Vise, Channel, Chaos Orb, Contract from Below, Darkpact, Demonic Attorney, Demonic Tutor, Fastbond, Mana Vault, Mind Twist, Mox Emerald, Mox Pearl, Mox Ruby, Mox Sapphire, Mox Jet, Sol Ring, Time Walk, Timetwister, Wheel of Fortune \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Legacy/Alpha/2006-10-20.txt b/forge-gui/res/formats/Historic/DCI/Legacy/Alpha/2006-10-20.txt deleted file mode 100644 index e88cc8676ad..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Legacy/Alpha/2006-10-20.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Legacy Alpha, Time Spiral -Type:Historic -Subtype:Legacy -Effective:2006-10-20 -Sets:LEA -Banned:Ancestral Recall, Balance, Black Lotus, Black Vise, Channel, Chaos Orb, Contract from Below, Darkpact, Demonic Attorney, Demonic Tutor, Fastbond, Mana Vault, Mind Twist, Mox Emerald, Mox Pearl, Mox Ruby, Mox Sapphire, Mox Jet, Sol Ring, Time Walk, Timetwister, Wheel of Fortune \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Legacy/Alpha/2008-09-20.txt b/forge-gui/res/formats/Historic/DCI/Legacy/Alpha/2008-09-20.txt deleted file mode 100644 index 52561257f1a..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Legacy/Alpha/2008-09-20.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Legacy Alpha, 09/20/08 -Type:Historic -Subtype:Legacy -Effective:2008-09-20 -Sets:LEA -Banned:Ancestral Recall, Balance, Black Lotus, Black Vise, Channel, Chaos Orb, Contract from Below, Darkpact, Demonic Attorney, Demonic Tutor, Fastbond, Mana Vault, Mind Twist, Mox Emerald, Mox Pearl, Mox Ruby, Mox Sapphire, Mox Jet, Sol Ring, Time Vault, Time Walk, Timetwister, Wheel of Fortune \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Legacy/Alpha/2015-10-02.txt b/forge-gui/res/formats/Historic/DCI/Legacy/Alpha/2015-10-02.txt deleted file mode 100644 index 1f35bb8e782..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Legacy/Alpha/2015-10-02.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Legacy Alpha, Battle for Zendikar -Type:Historic -Subtype:Legacy -Effective:2015-10-02 -Sets:LEA -Banned:Ancestral Recall, Balance, Black Lotus, Channel, Chaos Orb, Contract from Below, Darkpact, Demonic Attorney, Demonic Tutor, Fastbond, Mana Vault, Mind Twist, Mox Emerald, Mox Pearl, Mox Ruby, Mox Sapphire, Mox Jet, Sol Ring, Time Vault, Time Walk, Timetwister, Wheel of Fortune \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Modern/Alpha/2011-07-15.txt b/forge-gui/res/formats/Historic/DCI/Modern/Alpha/2011-07-15.txt deleted file mode 100644 index 34a93191c6d..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Modern/Alpha/2011-07-15.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Modern Alpha, 2012 Core Set -Type:Historic -Subtype:Modern -Effective:2011-07-15 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Castle, Celestial Prism, Channel, Chaoslace, Chrome Mox, Clockwork Beast, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Creature Bond, Crusade, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Death Ward, Deathgrip, Deathlace, Demonic Attorney, Demonic Hordes, Demonic Tutor, Drain Life, Drain Power, Dwarven Warriors, Earthbind, Elvish Archers, Farmstead, Fastbond, Feedback, Fire Elemental, Forcefield, Fork, Frozen Shade, Gauntlet of Might, Glasses of Urza, Gloom, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Helm of Chatzuk, Holy Armor, Howl from Beyond, Hurloon Minotaur, Ice Storm, Instill Energy, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Jade Monolith, Keldon Warlord, Kormus Bell, Kudzu, Lance, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Living Artifact, Living Lands, Living Wall, Magical Hack, Mana Flare, Mana Short, Mana Vault, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Psychic Venom, Purelace, Red Elemental Blast, Red Ward, Regrowth, Roc of Kher Keep, Rock Hydra, Sacrifice, Savannah, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, soul Net, Spell Blast, Stasis, Sunglasses of Urza, Swords to Plowshares, Taiga, Thicket Basilisk, Thoughtlace, Timber Wolves, Time Vault, Time Walk, Timetwister, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Two-Headed Giant of Foriys, Underground Sea, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Brambles, Wall of Ice, Wall of Water, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Wheel of Fortune, White Ward, Wild Growth, Winter Orb, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Modern/Alpha/2012-07-13.txt b/forge-gui/res/formats/Historic/DCI/Modern/Alpha/2012-07-13.txt deleted file mode 100644 index c9369acd300..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Modern/Alpha/2012-07-13.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Modern Alpha, 2013 Core Set -Type:Historic -Subtype:Modern -Effective:2012-07-13 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Castle, Celestial Prism, Channel, Chaoslace, Chrome Mox, Clockwork Beast, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Creature Bond, Crusade, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Death Ward, Deathgrip, Deathlace, Demonic Attorney, Demonic Hordes, Demonic Tutor, Drain Life, Drain Power, Dwarven Warriors, Earthbind, Elvish Archers, Farmstead, Fastbond, Feedback, Forcefield, Fork, Frozen Shade, Gauntlet of Might, Glasses of Urza, Gloom, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Helm of Chatzuk, Holy Armor, Howl from Beyond, Hurloon Minotaur, Ice Storm, Instill Energy, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Jade Monolith, Keldon Warlord, Kormus Bell, Kudzu, Lance, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Living Artifact, Living Lands, Living Wall, Magical Hack, Mana Flare, Mana Short, Mana Vault, Meekstone, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Psychic Venom, Purelace, Red Elemental Blast, Red Ward, Regrowth, Roc of Kher Keep, Rock Hydra, Sacrifice, Savannah, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, soul Net, Spell Blast, Stasis, Sunglasses of Urza, Swords to Plowshares, Taiga, Thicket Basilisk, Thoughtlace, Timber Wolves, Time Vault, Time Walk, Timetwister, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Two-Headed Giant of Foriys, Underground Sea, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Brambles, Wall of Ice, Wall of Water, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Wheel of Fortune, White Ward, Wild Growth, Winter Orb, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Modern/Alpha/2013-07-19.txt b/forge-gui/res/formats/Historic/DCI/Modern/Alpha/2013-07-19.txt deleted file mode 100644 index 278e3ddc499..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Modern/Alpha/2013-07-19.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Modern Alpha, 2014 Core Set -Type:Historic -Subtype:Modern -Effective:2013-07-19 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Castle, Celestial Prism, Channel, Chaoslace, Chrome Mox, Clockwork Beast, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Creature Bond, Crusade, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Death Ward, Deathgrip, Deathlace, Demonic Attorney, Demonic Hordes, Demonic Tutor, Drain Life, Drain Power, Dwarven Warriors, Earthbind, Elvish Archers, Farmstead, Fastbond, Feedback, Forcefield, Fork, Frozen Shade, Gauntlet of Might, Glasses of Urza, Gloom, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Helm of Chatzuk, Holy Armor, Howl from Beyond, Hurloon Minotaur, Ice Storm, Instill Energy, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Jade Monolith, Keldon Warlord, Kormus Bell, Kudzu, Lance, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Living Artifact, Living Lands, Living Wall, Magical Hack, Mana Flare, Mana Short, Mana Vault, Meekstone, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Psychic Venom, Purelace, Red Elemental Blast, Red Ward, Regrowth, Roc of Kher Keep, Rock Hydra, Sacrifice, Savannah, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, soul Net, Stasis, Sunglasses of Urza, Swords to Plowshares, Taiga, Thicket Basilisk, Thoughtlace, Timber Wolves, Time Vault, Time Walk, Timetwister, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Two-Headed Giant of Foriys, Underground Sea, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Brambles, Wall of Ice, Wall of Water, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Wheel of Fortune, White Ward, Wild Growth, Winter Orb, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/1996-10-01.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/1996-10-01.txt deleted file mode 100644 index e268f2400c4..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/1996-10-01.txt +++ /dev/null @@ -1,8 +0,0 @@ -[format] -Name:Type II Alpha, 10/01/96 -Type:Historic -Subtype:Standard -Effective:1996-10-01 -Sets:LEA -Restricted:Balance, Black Vise -Banned:Ancestral Recall, Badlands, Basalt Monolith, Bayou, Berserk, Black Lotus, Blaze of Glory, Braingeyser, Camouflage, Channel, Chaos Orb, Clone, Consecrate Land, Contract from Below, Copper Tablet, Copy Artifact, Cyclopean Tomb, Darkpact, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dwarven Demolition Team, Earthbind, False Orders, Farmstead, Fastbond, Fog, Forcefield, Fork, Gauntlet of Might, Granite Gargoyle, Guardian Angel, Ice Storm, Illusionary Mask, Invisibility, Jade Statue, Juggernaut, Kudzu, Lance, Lich, Living Wall, Mind Twist, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nettling Imp, Plateau, Psionic Blast, Raging River, Regrowth, Resurrection, Rock Hydra, Roc of Kher Ridges, Sacrifice, Savannah, Scrubland, Sedge Troll, Sinkhole, Sol Ring, Taiga, Timetwister, Time Vault, Time Walk, Tropical Island, Tundra, Two-Headed Giant of Foriys, Underground Sea, Vesuvan Doppelganger, Veteran Bodyguard, Wheel of Fortune, Word of Command \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/1996-11-08.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/1996-11-08.txt deleted file mode 100644 index 2a772666bad..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/1996-11-08.txt +++ /dev/null @@ -1,8 +0,0 @@ -[format] -Name:Type II Alpha, Mirage -Type:Historic -Subtype:Standard -Effective:1996-11-08 -Sets:LEA -Restricted:Balance, Black Vise -Banned:Ancestral Recall, Badlands, Basalt Monolith, Bayou, Berserk, Black Lotus, Blaze of Glory, Braingeyser, Camouflage, Channel, Chaos Orb, Clone, Consecrate Land, Contract from Below, Copper Tablet, Copy Artifact, Cyclopean Tomb, Darkpact, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dwarven Demolition Team, Earthbind, False Orders, Farmstead, Fastbond, Forcefield, Fork, Gauntlet of Might, Granite Gargoyle, Guardian Angel, Ice Storm, Illusionary Mask, Invisibility, Jade Statue, Juggernaut, Kudzu, Lance, Lich, Living Wall, Mind Twist, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nettling Imp, Plateau, Psionic Blast, Raging River, Regrowth, Resurrection, Rock Hydra, Roc of Kher Ridges, Sacrifice, Savannah, Scrubland, Sedge Troll, Sinkhole, Sol Ring, Taiga, Timetwister, Time Vault, Time Walk, Tropical Island, Tundra, Two-Headed Giant of Foriys, Underground Sea, Vesuvan Doppelganger, Veteran Bodyguard, Wheel of Fortune, Word of Command \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/1997-04-24.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/1997-04-24.txt deleted file mode 100644 index 2b95d989050..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/1997-04-24.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Type II Alpha, Fifth Edition -Type:Historic -Subtype:Standard -Effective:1997-04-24 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Badlands, Balance, Basalt Monolith, Bayou, Berserk, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Camouflage, Celestial Prism, Channel, Chaoslace, Chaos Orb, Clone, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Creature Bond, Cyclopean Tomb, Darkpact, Deathlace, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dragon Whelp, Dwarven Demolition Team, Earthbind, Earth Elemental, False Orders, Farmstead, Fastbond, Fire Elemental, Forcefield, Fork, Gaea's Liege, Gauntlet of Might, Goblin Balloon Brigade, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Holy Armor, Hypnotic Specter, Ice Storm, Icy Manipulator, Illusionary Mask, Invisibility, Ironclaw Orcs, Ironroot Treefolk, Jade Statue, Juggernaut, Jump, Kormus Bell, Kudzu, Lance, Lich, Lifelace, Lightning Bolt, Living Wall, Mahamoti Djinn, Mana Short, Mind Twist, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nettling Imp, Northern Paladin, Obsianus Golem, Orcish Oriflamme, Plateau, Power Leak, Power Surge, Psionic Blast, Purelace, Raging River, Red Elemental Blast, Red Ward, Regrowth, Resurrection, Rock Hydra, Roc of Kher Ridges, Royal Assassin, Sacrifice, Savannah, Savannah Lions, Scavenging Ghoul, Scrubland, Sedge Troll, Sengir Vampire, Serra Angel, Simulacrum, Sinkhole, Siren's Call, Sol Ring, Sunglasses of Urza, Swords to Plowshares, Taiga, Thoughtlace, Timber Wolves, Timetwister, Time Vault, Time Walk, Tropical Island, Tundra, Tunnel, Two-Headed Giant of Foriys, Underground Sea, Uthden Troll, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Water, Wall of Wood, Water Elemental, Web, Wheel of Fortune, White Ward, Will-o'-the-Wisp, Word of Command \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/1997-07-01.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/1997-07-01.txt deleted file mode 100644 index 57379da6d62..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/1997-07-01.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Weatherlight -Type:Historic -Subtype:Standard -Effective:1997-07-01 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Badlands, Balance, Basalt Monolith, Bayou, Berserk, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Camouflage, Celestial Prism, Channel, Chaoslace, Chaos Orb, Clone, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Creature Bond, Cyclopean Tomb, Darkpact, Deathlace, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dragon Whelp, Dwarven Demolition Team, Earthbind, Earth Elemental, False Orders, Farmstead, Fastbond, Fire Elemental, Forcefield, Fork, Gaea's Liege, Gauntlet of Might, Goblin Balloon Brigade, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Holy Armor, Hypnotic Specter, Ice Storm, Illusionary Mask, Invisibility, Ironclaw Orcs, Ironroot Treefolk, Jade Statue, Juggernaut, Jump, Kormus Bell, Kudzu, Lance, Lich, Lifelace, Lightning Bolt, Living Wall, Mahamoti Djinn, Mana Short, Mind Twist, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nettling Imp, Northern Paladin, Obsianus Golem, Orcish Oriflamme, Plateau, Power Leak, Power Surge, Psionic Blast, Purelace, Raging River, Red Elemental Blast, Red Ward, Regrowth, Resurrection, Rock Hydra, Roc of Kher Ridges, Royal Assassin, Sacrifice, Savannah, Savannah Lions, Scavenging Ghoul, Scrubland, Sedge Troll, Sengir Vampire, Serra Angel, Simulacrum, Sinkhole, Siren's Call, Sol Ring, Sunglasses of Urza, Taiga, Thoughtlace, Timber Wolves, Timetwister, Time Vault, Time Walk, Tropical Island, Tundra, Tunnel, Two-Headed Giant of Foriys, Underground Sea, Uthden Troll, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Water, Wall of Wood, Water Elemental, Web, Wheel of Fortune, White Ward, Will-o'-the-Wisp, Word of Command \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/1997-11-01.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/1997-11-01.txt deleted file mode 100644 index 98ed8bbfc0a..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/1997-11-01.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Tempest -Type:Historic -Subtype:Standard -Effective:1997-11-01 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Badlands, Balance, Basalt Monolith, Bayou, Berserk, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Camouflage, Celestial Prism, Channel, Chaoslace, Chaos Orb, Clone, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Creature Bond, Cyclopean Tomb, Darkpact, Deathlace, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dragon Whelp, Dwarven Demolition Team, Earthbind, Earth Elemental, Evil Presence, False Orders, Farmstead, Fastbond, Fire Elemental, Forcefield, Fork, Gaea's Liege, Gauntlet of Might, Goblin Balloon Brigade, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Holy Armor, Hypnotic Specter, Ice Storm, Icy Manipulator, Illusionary Mask, Invisibility, Ironclaw Orcs, Ironroot Treefolk, Jade Statue, Juggernaut, Jump, Kormus Bell, Kudzu, Lance, Lich, Lifelace, Lightning Bolt, Living Wall, Mahamoti Djinn, Mana Short, Mind Twist, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nettling Imp, Northern Paladin, Obsianus Golem, Plateau, Power Leak, Power Surge, Psionic Blast, Purelace, Raging River, Red Elemental Blast, Red Ward, Regrowth, Resurrection, Rock Hydra, Roc of Kher Ridges, Rod of Ruin, Royal Assassin, Sacrifice, Savannah, Savannah Lions, Scavenging Ghoul, Scrubland, Sedge Troll, Sengir Vampire, Serra Angel, Simulacrum, Sinkhole, Siren's Call, Sol Ring, Sunglasses of Urza, Swords to Plowshares, Taiga, Thoughtlace, Timber Wolves, Timetwister, Time Vault, Time Walk, Tropical Island, Tundra, Tunnel, Two-Headed Giant of Foriys, Underground Sea, Uthden Troll, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Ice, Wall of Water, Wall of Wood, Water Elemental, Web, Wheel of Fortune, White Ward, Will-o'-the-Wisp, Word of Command \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/1998-11-01.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/1998-11-01.txt deleted file mode 100644 index c30d11af8c8..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/1998-11-01.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Urza's Saga -Type:Historic -Subtype:Standard -Effective:1998-11-01 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Badlands, Balance, Basalt Monolith, Bayou, Berserk, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Camouflage, Celestial Prism, Channel, Chaoslace, Chaos Orb, Clone, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Creature Bond, Cyclopean Tomb, Darkpact, Deathlace, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dragon Whelp, Dwarven Demolition Team, Earthbind, Earth Elemental, False Orders, Farmstead, Fastbond, Fire Elemental, Forcefield, Fork, Gaea's Liege, Gauntlet of Might, Goblin Balloon Brigade, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Holy Armor, Hypnotic Specter, Ice Storm, Icy Manipulator, Illusionary Mask, Invisibility, Jade Statue, Juggernaut, Jump, Kormus Bell, Kudzu, Lance, Lich, Lifelace, Lightning Bolt, Living Wall, Mahamoti Djinn, Mana Short, Mind Twist, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nettling Imp, Northern Paladin, Obsianus Golem, Plateau, Power Leak, Power Surge, Psionic Blast, Purelace, Raging River, Red Elemental Blast, Red Ward, Regrowth, Resurrection, Rock Hydra, Roc of Kher Ridges, Royal Assassin, Sacrifice, Savannah, Savannah Lions, Scavenging Ghoul, Scrubland, Sedge Troll, Sengir Vampire, Serra Angel, Simulacrum, Sinkhole, Siren's Call, Sol Ring, Sunglasses of Urza, Swords to Plowshares, Taiga, Thoughtlace, Timber Wolves, Timetwister, Time Vault, Time Walk, Tropical Island, Tundra, Tunnel, Two-Headed Giant of Foriys, Underground Sea, Uthden Troll, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Ice, Wall of Water, Wall of Wood, Water Elemental, Web, Wheel of Fortune, White Ward, Will-o'-the-Wisp, Word of Command \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/1999-06-01.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/1999-06-01.txt deleted file mode 100644 index 65fe312f307..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/1999-06-01.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Classic Sixth Edition -Type:Historic -Subtype:Standard -Effective:1999-06-01 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Animate Dead, Aspect of Wolf, Badlands, Bad Moon, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Camouflage, Celestial Prism, Channel, Chaoslace, Chaos Orb, Clockwork Beast, Clone, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Craw Wurm, Creature Bond, Cursed Land, Cyclopean Tomb, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Disintegrate, Dragon Whelp, Drain Life, Drain Power, Dwarven Demolition Team, Dwarven Warriors, Earthbind, Earth Elemental, Evil Presence, False Orders, Farmstead, Fastbond, Feedback, Fireball, Forcefield, Force of Nature, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Glasses of Urza, Gloom, Goblin Balloon Brigade, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Helm of Chatzuk, Hill Giant, The Hive, Holy Armor, Holy Strength, Hurloon Minotaur, Hypnotic Specter, Ice Storm, Icy Manipulator, Illusionary Mask, Instill Energy, Invisibility, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Jade Monolith, Jade Statue, Juggernaut, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Lord of the Pit, Magical Hack, Mahamoti Djinn, Mana Flare, Mana Vault, Manabarbs, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Psionic Blast, Psychic Venom, Purelace, Raging River, Red Elemental Blast, Red Ward, Regrowth, Resurrection, Righteousness, Rock Hydra, Roc of Kher Ridges, Royal Assassin, Sacrifice, Savannah, Savannah Lions, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Sengir Vampire, Serra Angel, Shivan Dragon, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Spell Blast, Stasis, Steal Artifact, Stone Giant, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Timber Wolves, Timetwister, Time Vault, Time Walk, Tropical Island, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Unholy Strength, Uthden Troll, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Bone, Wall of Brambles, Wall of Ice, Wall of Stone, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Knight, White Ward, Will-o'-the-Wisp, Winter Orb, Word of Command, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2001-05-01.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2001-05-01.txt deleted file mode 100644 index 89fe6fcc75e..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2001-05-01.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Seventh Edition -Type:Historic -Subtype:Standard -Effective:2001-05-01 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Badlands, Bad Moon, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Camouflage, Celestial Prism, Channel, Chaoslace, Chaos Orb, Clockwork Beast, Clone, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Craw Wurm, Creature Bond, Crusade, Cursed Land, Cyclopean Tomb, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Disintegrate, Dragon Whelp, Drain Life, Drain Power, Dwarven Demolition Team, Dwarven Warriors, Earthbind, Earth Elemental, Evil Presence, False Orders, Farmstead, Fastbond, Feedback, Fireball, Firebreathing, Flashfires, Forcefield, Force of Nature, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Glasses of Urza, Gloom, Goblin Balloon Brigade, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Helm of Chatzuk, Hill Giant, The Hive, Holy Armor, Hurloon Minotaur, Hypnotic Specter, Ice Storm, Icy Manipulator, Illusionary Mask, Instill Energy, Invisibility, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Jade Monolith, Jade Statue, Juggernaut, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Lord of the Pit, Magical Hack, Mana Flare, Mana Vault, Manabarbs, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Obsianus Golem, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Psionic Blast, Psychic Venom, Purelace, Raging River, Red Elemental Blast, Red Ward, Regrowth, Resurrection, Righteousness, Rock Hydra, Roc of Kher Ridges, Royal Assassin, Sacrifice, Savannah, Savannah Lions, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Sengir Vampire, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Spell Blast, Stasis, Steal Artifact, Stone Giant, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Timber Wolves, Timetwister, Time Vault, Time Walk, Tropical Island, Tsunami, Tundra, Tunnel, Two-Headed Giant of Foriys, Underground Sea, Unholy Strength, Uthden Troll, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Brambles, Wall of Ice, Wall of Stone, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Knight, White Ward, Will-o'-the-Wisp, Winter Orb, Word of Command, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2001-11-01.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2001-11-01.txt deleted file mode 100644 index a0e0ebfcf39..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2001-11-01.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Odyssey -Type:Historic -Subtype:Standard -Effective:2001-11-01 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Badlands, Bad Moon, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Camouflage, Celestial Prism, Channel, Chaoslace, Chaos Orb, Clockwork Beast, Clone, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Craw Wurm, Creature Bond, Crusade, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Disintegrate, Dragon Whelp, Drain Life, Drain Power, Dwarven Demolition Team, Dwarven Warriors, Earthbind, Earth Elemental, Evil Presence, False Orders, Farmstead, Fastbond, Feedback, Fireball, Firebreathing, Flashfires, Forcefield, Force of Nature, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Glasses of Urza, Gloom, Goblin Balloon Brigade, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Helm of Chatzuk, Hill Giant, The Hive, Holy Armor, Hurloon Minotaur, Hypnotic Specter, Ice Storm, Icy Manipulator, Illusionary Mask, Instill Energy, Invisibility, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Jade Monolith, Jade Statue, Juggernaut, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Lord of the Pit, Magical Hack, Mana Flare, Mana Vault, Manabarbs, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Obsianus Golem, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Psionic Blast, Psychic Venom, Purelace, Raging River, Red Elemental Blast, Red Ward, Regrowth, Resurrection, Righteousness, Rock Hydra, Roc of Kher Ridges, Royal Assassin, Sacrifice, Savannah, Savannah Lions, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Sengir Vampire, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Spell Blast, Stasis, Steal Artifact, Stone Giant, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Timber Wolves, Timetwister, Time Vault, Time Walk, Tropical Island, Tsunami, Tundra, Tunnel, Two-Headed Giant of Foriys, Underground Sea, Unholy Strength, Uthden Troll, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Brambles, Wall of Ice, Wall of Stone, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Knight, White Ward, Will-o'-the-Wisp, Winter Orb, Word of Command, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2002-03-01.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2002-03-01.txt deleted file mode 100644 index 2bf4761a98f..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2002-03-01.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Torment -Type:Historic -Subtype:Standard -Effective:2002-03-01 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Badlands, Bad Moon, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Camouflage, Celestial Prism, Channel, Chaoslace, Chaos Orb, Clockwork Beast, Clone, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Craw Wurm, Creature Bond, Crusade, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Disintegrate, Dragon Whelp, Drain Life, Drain Power, Dwarven Demolition Team, Dwarven Warriors, Earthbind, Earth Elemental, Evil Presence, False Orders, Farmstead, Fastbond, Feedback, Fireball, Firebreathing, Flashfires, Forcefield, Force of Nature, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Glasses of Urza, Gloom, Goblin Balloon Brigade, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, The Hive, Helm of Chatzuk, Hill Giant, Holy Armor, Hurloon Minotaur, Hypnotic Specter, Ice Storm, Icy Manipulator, Illusionary Mask, Instill Energy, Invisibility, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Jade Monolith, Jade Statue, Juggernaut, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Lord of the Pit, Magical Hack, Mana Flare, Mana Vault, Manabarbs, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Obsianus Golem, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Psionic Blast, Psychic Venom, Purelace, Raging River, Red Elemental Blast, Red Ward, Regrowth, Resurrection, Righteousness, Rock Hydra, Roc of Kher Ridges, Royal Assassin, Sacrifice, Savannah, Savannah Lions, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Spell Blast, Stasis, Steal Artifact, Stone Giant, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Timber Wolves, Timetwister, Time Vault, Time Walk, Tropical Island, Tsunami, Tundra, Tunnel, Two-Headed Giant of Foriys, Underground Sea, Unholy Strength, Uthden Troll, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Brambles, Wall of Ice, Wall of Stone, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Knight, White Ward, Will-o'-the-Wisp, Winter Orb, Word of Command, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2002-11-01.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2002-11-01.txt deleted file mode 100644 index 9700678b040..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2002-11-01.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Onslaught -Type:Historic -Subtype:Standard -Effective:2002-11-01 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Badlands, Bad Moon, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Camouflage, Celestial Prism, Channel, Chaoslace, Chaos Orb, Clockwork Beast, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Craw Wurm, Creature Bond, Crusade, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Disintegrate, Dragon Whelp, Drain Life, Drain Power, Dwarven Demolition Team, Dwarven Warriors, Earthbind, Earth Elemental, Evil Presence, False Orders, Farmstead, Fastbond, Feedback, Fireball, Firebreathing, Flashfires, Forcefield, Force of Nature, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Glasses of Urza, Gloom, Goblin Balloon Brigade, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Helm of Chatzuk, Hill Giant, The Hive, Holy Armor, Hurloon Minotaur, Hypnotic Specter, Ice Storm, Icy Manipulator, Illusionary Mask, Instill Energy, Invisibility, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Jade Monolith, Jade Statue, Juggernaut, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Lord of the Pit, Magical Hack, Mana Flare, Mana Vault, Manabarbs, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Obsianus Golem, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Psionic Blast, Psychic Venom, Purelace, Raging River, Red Elemental Blast, Red Ward, Regrowth, Resurrection, Righteousness, Rock Hydra, Roc of Kher Ridges, Royal Assassin, Sacrifice, Savannah, Savannah Lions, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Spell Blast, Stasis, Steal Artifact, Stone Giant, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Timber Wolves, Timetwister, Time Vault, Time Walk, Tropical Island, Tsunami, Tundra, Tunnel, Two-Headed Giant of Foriys, Underground Sea, Unholy Strength, Uthden Troll, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Brambles, Wall of Ice, Wall of Stone, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Knight, White Ward, Will-o'-the-Wisp, Winter Orb, Word of Command, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2003-03-01.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2003-03-01.txt deleted file mode 100644 index 4820e8e9cd8..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2003-03-01.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Legions -Type:Historic -Subtype:Standard -Effective:2003-03-01 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Badlands, Bad Moon, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Camouflage, Celestial Prism, Channel, Chaoslace, Chaos Orb, Clockwork Beast, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Craw Wurm, Creature Bond, Crusade, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Disintegrate, Dragon Whelp, Drain Life, Drain Power, Dwarven Demolition Team, Dwarven Warriors, Earthbind, Earth Elemental, Evil Presence, False Orders, Farmstead, Fastbond, Feedback, Fireball, Firebreathing, Flashfires, Forcefield, Force of Nature, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Glasses of Urza, Gloom, Goblin Balloon Brigade, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Helm of Chatzuk, Hill Giant, The Hive, Holy Armor, Hurloon Minotaur, Hypnotic Specter, Ice Storm, Icy Manipulator, Illusionary Mask, Instill Energy, Invisibility, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Jade Monolith, Jade Statue, Juggernaut, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Lord of the Pit, Magical Hack, Mana Flare, Mana Vault, Manabarbs, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Obsianus Golem, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Psionic Blast, Psychic Venom, Purelace, Raging River, Red Elemental Blast, Red Ward, Regrowth, Resurrection, Righteousness, Rock Hydra, Roc of Kher Ridges, Royal Assassin, Sacrifice, Savannah, Savannah Lions, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Spell Blast, Stasis, Steal Artifact, Stone Giant, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Timber Wolves, Timetwister, Time Vault, Time Walk, Tropical Island, Tsunami, Tundra, Tunnel, Two-Headed Giant of Foriys, Underground Sea, Unholy Strength, Uthden Troll, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Brambles, Wall of Ice, Wall of Stone, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Ward, Will-o'-the-Wisp, Winter Orb, Word of Command, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2003-09-01.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2003-09-01.txt deleted file mode 100644 index 6fef52e2eb5..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2003-09-01.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Eighth Edition -Type:Historic -Subtype:Standard -Effective:2003-09-01 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Badlands, Bad Moon, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Camouflage, Castle, Celestial Prism, Channel, Chaoslace, Chaos Orb, Clockwork Beast, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Creature Bond, Crusade, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Dragon Whelp, Drain Life, Drain Power, Dwarven Warriors, Earthbind, Earth Elemental, Earthquake, Elvish Archers, Evil Presence, False Orders, Farmstead, Fastbond, Feedback, Fire Elemental, Fireball, Firebreathing, Fog, Forcefield, Force of Nature, Fork, Frozen Shade, Gaea's Liege, Gauntlet of Might, Glasses of Urza, Gloom, Goblin Balloon Brigade, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Helm of Chatzuk, The Hive, Holy Armor, Howl from Beyond, Hurloon Minotaur, Hurricane, Hypnotic Specter, Ice Storm, Icy Manipulator, Illusionary Mask, Instill Energy, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Jade Monolith, Jade Statue, Juggernaut, Jump, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Llanowar Elves, Lord of Atlantis, Lord of the Pit, Magical Hack, Mana Flare, Mana Short, Mana Vault, Manabarbs, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raging River, Red Elemental Blast, Red Ward, Regrowth, Resurrection, Reverse Damage, Righteousness, Rock Hydra, Roc of Kher Ridges, Sacrifice, Savannah, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Stone Giant, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Timber Wolves, Timetwister, Time Vault, Time Walk, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Uthden Troll, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Bone, Wall of Brambles, Wall of Fire, Wall of Ice, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Word of Command, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2003-10-20.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2003-10-20.txt deleted file mode 100644 index 64ee2ae14ad..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2003-10-20.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Mirrodin -Type:Historic -Subtype:Standard -Effective:2003-10-20 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Badlands, Bad Moon, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Camouflage, Castle, Celestial Prism, Channel, Chaoslace, Chaos Orb, Clockwork Beast, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Creature Bond, Crusade, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Dragon Whelp, Drain Life, Drain Power, Dwarven Warriors, Earthbind, Earth Elemental, Earthquake, Elvish Archers, Evil Presence, False Orders, Farmstead, Fastbond, Feedback, Fire Elemental, Fireball, Firebreathing, Fog, Forcefield, Force of Nature, Fork, Frozen Shade, Gaea's Liege, Gauntlet of Might, Glasses of Urza, Gloom, Goblin Balloon Brigade, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Helm of Chatzuk, The Hive, Holy Armor, Howl from Beyond, Hurloon Minotaur, Hurricane, Hypnotic Specter, Ice Storm, Illusionary Mask, Instill Energy, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Jade Monolith, Jade Statue, Juggernaut, Jump, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Llanowar Elves, Lord of Atlantis, Lord of the Pit, Magical Hack, Mana Flare, Mana Short, Mana Vault, Manabarbs, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raging River, Red Elemental Blast, Red Ward, Regrowth, Resurrection, Reverse Damage, Righteousness, Rock Hydra, Roc of Kher Ridges, Sacrifice, Savannah, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Sengir Vampire, Shanodin Dryads, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Stone Giant, Sunglasses of Urza, Swords to Plowshares, Taiga, Thicket Basilisk, Thoughtlace, Timber Wolves, Timetwister, Time Vault, Time Walk, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Uthden Troll, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Bone, Wall of Brambles, Wall of Fire, Wall of Ice, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Word of Command, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2004-02-20.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2004-02-20.txt deleted file mode 100644 index f42c627ec73..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2004-02-20.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Darksteel -Type:Historic -Subtype:Standard -Effective:2004-02-20 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Badlands, Bad Moon, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Camouflage, Castle, Celestial Prism, Channel, Chaoslace, Chaos Orb, Clockwork Beast, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Creature Bond, Crusade, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Dragon Whelp, Drain Life, Drain Power, Dwarven Warriors, Earthbind, Earth Elemental, Earthquake, Elvish Archers, Evil Presence, False Orders, Farmstead, Fastbond, Feedback, Fire Elemental, Firebreathing, Fog, Forcefield, Force of Nature, Fork, Frozen Shade, Gaea's Liege, Gauntlet of Might, Glasses of Urza, Gloom, Goblin Balloon Brigade, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Helm of Chatzuk, The Hive, Holy Armor, Howl from Beyond, Hurloon Minotaur, Hurricane, Hypnotic Specter, Ice Storm, Illusionary Mask, Instill Energy, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Jade Monolith, Jade Statue, Jump, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Llanowar Elves, Lord of Atlantis, Lord of the Pit, Magical Hack, Mana Flare, Mana Short, Mana Vault, Manabarbs, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raging River, Red Elemental Blast, Red Ward, Regrowth, Resurrection, Reverse Damage, Righteousness, Rock Hydra, Roc of Kher Ridges, Sacrifice, Savannah, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Sengir Vampire, Shanodin Dryads, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Stone Giant, Sunglasses of Urza, Swords to Plowshares, Taiga, Thicket Basilisk, Thoughtlace, Timber Wolves, Timetwister, Time Vault, Time Walk, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Uthden Troll, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Bone, Wall of Brambles, Wall of Fire, Wall of Ice, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Word of Command, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2004-10-20.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2004-10-20.txt deleted file mode 100644 index c4c6fedbaaf..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2004-10-20.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Champions of Kamigawa -Type:Historic -Subtype:Standard -Effective:2004-10-20 -Sets:LEA -Banned:Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Badlands, Bad Moon, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Camouflage, Castle, Celestial Prism, Channel, Chaoslace, Chaos Orb, Clockwork Beast, Clone, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Creature Bond, Crusade, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Dragon Whelp, Drain Life, Drain Power, Dwarven Warriors, Earthbind, Earth Elemental, Earthquake, Elvish Archers, Evil Presence, False Orders, Farmstead, Fastbond, Feedback, Fire Elemental, Firebreathing, Fog, Forcefield, Force of Nature, Fork, Frozen Shade, Gaea's Liege, Gauntlet of Might, Glasses of Urza, Gloom, Goblin Balloon Brigade, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Helm of Chatzuk, The Hive, Holy Armor, Howl from Beyond, Hurloon Minotaur, Hurricane, Hypnotic Specter, Ice Storm, Illusionary Mask, Instill Energy, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Jade Monolith, Jade Statue, Jump, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Llanowar Elves, Lord of Atlantis, Lord of the Pit, Magical Hack, Mana Flare, Mana Short, Mana Vault, Manabarbs, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raging River, Red Elemental Blast, Red Ward, Regrowth, Resurrection, Reverse Damage, Righteousness, Rock Hydra, Roc of Kher Ridges, Sacrifice, Savannah, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Sengir Vampire, Shanodin Dryads, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Stone Giant, Sunglasses of Urza, Swords to Plowshares, Taiga, Thicket Basilisk, Thoughtlace, Timber Wolves, Timetwister, Time Vault, Time Walk, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Uthden Troll, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Bone, Wall of Brambles, Wall of Fire, Wall of Ice, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Knight, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Word of Command, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2005-08-20.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2005-08-20.txt deleted file mode 100644 index 3c259fb6307..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2005-08-20.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Ninth Edition -Type:Historic -Subtype:Standard -Effective:2005-08-20 -Sets:LEA -Banned:Abyssal Specter, Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Badlands, Bad Moon, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Birds of Paradise, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Camouflage, Castle, Celestial Prism, Channel, Chaoslace, Chaos Orb, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: White, Clockwork Beast, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Dragon Whelp, Drain Life, Drain Power, Dwarven Demolition Team, Dwarven Warriors, Earthbind, Earth Elemental, Earthquake, Elvish Archers, Evil Presence, False Orders, Farmstead, Fastbond, Feedback, Fire Elemental, Fog, Forcefield, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Glasses of Urza, Gloom, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Healing Salve, Helm of Chatzuk, The Hive, Holy Armor, Howl from Beyond, Hurloon Minotaur, Hurricane, Ice Storm, Illusionary Mask, Instill Energy, Invisibility, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jayemdae Tome, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Lord of Atlantis, Lord of the Pit, Magical Hack, Mana Flare, Mana Short, Mana Vault, Manabarbs, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raging River, Red Elemental Blast, Red Ward, Regrowth, Resurrection, Rock Hydra, Roc of Kher Ridges, Sacrifice, Savannah, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Steal Artifact, Stone Giant, Sunglasses of Urza, Swords to Plowshares, Taiga, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Timetwister, Time Vault, Time Walk, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Unsummon, Uthden Troll, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Air, Wall of Bone, Wall of Brambles, Wall of Fire, Wall of Ice, Wall of Stone, Wall of Swords, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Wheel of Fortune, White Knight, White Ward, Wild Growth, Winter Orb, Wooden Sphere, Word of Command, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2005-10-20.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2005-10-20.txt deleted file mode 100644 index 32d53eba197..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2005-10-20.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Ravnica: City of Guilds -Type:Historic -Subtype:Standard -Effective:2005-10-20 -Sets:LEA -Banned:Abyssal Specter, Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Badlands, Bad Moon, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Camouflage, Castle, Celestial Prism, Channel, Chaoslace, Chaos Orb, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: White, Clockwork Beast, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Dragon Whelp, Drain Life, Drain Power, Dwarven Demolition Team, Dwarven Warriors, Earthbind, Earth Elemental, Earthquake, Elvish Archers, Evil Presence, False Orders, Farmstead, Fastbond, Feedback, Fire Elemental, Fireball, Fog, Forcefield, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Glasses of Urza, Gloom, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Healing Salve, Helm of Chatzuk, The Hive, Holy Armor, Howl from Beyond, Hurloon Minotaur, Hurricane, Ice Storm, Illusionary Mask, Instill Energy, Invisibility, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jayemdae Tome, Juggernaut, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Lord of Atlantis, Lord of the Pit, Magical Hack, Mana Flare, Mana Short, Mana Vault, Manabarbs, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raging River, Red Elemental Blast, Red Ward, Regrowth, Resurrection, Rock Hydra, Roc of Kher Ridges, Sacrifice, Savannah, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Steal Artifact, Stone Giant, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Timetwister, Time Vault, Time Walk, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Unsummon, Uthden Troll, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Air, Wall of Bone, Wall of Brambles, Wall of Fire, Wall of Ice, Wall of Stone, Wall of Swords, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Wheel of Fortune, White Knight, White Ward, Wild Growth, Winter Orb, Wooden Sphere, Word of Command, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2006-10-20.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2006-10-20.txt deleted file mode 100644 index d5701222be8..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2006-10-20.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Time Spiral -Type:Historic -Subtype:Standard -Effective:2006-10-20 -Sets:LEA -Banned:Abyssal Specter, Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Camouflage, Castle, Celestial Prism, Channel, Chaoslace, Chaos Orb, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: White, Clockwork Beast, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Drain Life, Drain Power, Dwarven Demolition Team, Dwarven Warriors, Earthbind, Earth Elemental, Earthquake, Elvish Archers, Evil Presence, False Orders, Farmstead, Fastbond, Feedback, Fire Elemental, Fireball, Fog, Forcefield, Fork, Frozen Shade, Fungusaur, Gauntlet of Might, Glasses of Urza, Gloom, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Healing Salve, Helm of Chatzuk, The Hive, Holy Armor, Howl from Beyond, Hurloon Minotaur, Hurricane, Ice Storm, Illusionary Mask, Instill Energy, Invisibility, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jayemdae Tome, Juggernaut, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Lord of Atlantis, Lord of the Pit, Lure, Magical Hack, Mana Flare, Mana Short, Mana Vault, Manabarbs, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Psychic Venom, Purelace, Raging River, Red Elemental Blast, Red Ward, Regrowth, Rock Hydra, Roc of Kher Ridges, Sacrifice, Savannah, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Steal Artifact, Stone Giant, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Timetwister, Time Vault, Time Walk, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Unsummon, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Air, Wall of Bone, Wall of Brambles, Wall of Fire, Wall of Ice, Wall of Stone, Wall of Swords, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Wheel of Fortune, White Knight, White Ward, Wild Growth, Winter Orb, Wooden Sphere, Word of Command, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2007-07-20.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2007-07-20.txt deleted file mode 100644 index 53d7a4ea2f1..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2007-07-20.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Tenth Edition -Type:Historic -Subtype:Standard -Effective:2006-10-20 -Sets:LEA -Banned:Abyssal Specter, Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Camouflage, Castle, Celestial Prism, Channel, Chaoslace, Chaos Orb, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: Red, Circle of Protection: White, Clockwork Beast, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disrupting Scepter, Drain Life, Drain Power, Dwarven Demolition Team, Dwarven Warriors, Earthbind, Earthquake, Elvish Archers, Evil Presence, False Orders, Farmstead, Fastbond, Feedback, Fire Elemental, Fireball, Flashfires, Flight, Fog, Force of Nature, Forcefield, Fork, Frozen Shade, Fungusaur, Gauntlet of Might, Glasses of Urza, Gloom, Goblin Ballon Brigade, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Healing Salve, Helm of Chatzuk, Holy Armor, Howl from Beyond, Hurloon Minotaur, Ice Storm, Illusionary Mask, Instill Energy, Invisibility, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jade Statue, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Magical Hack, Mana Flare, Mana Short, Mana Vault, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Psychic Venom, Purelace, Raging River, Raise Dead, Red Elemental Blast, Red Ward, Regrowth, Reverse Damage, Rock Hydra, Roc of Kher Ridges, Sacrifice, Savannah, Savannah Lions, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Shatter, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Steal Artifact, Stone Giant, Stone Rain, Stream of Life, Sunglasses of Urza, Swords to Plowshares, Taiga, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Timetwister, Time Vault, Time Walk, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Verduran Enchantress, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Bone, Wall of Brambles, Wall of Ice, Wall of Stone, Wall of Water, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Knight, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Wooden Sphere, Word of Command, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2008-10-03.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2008-10-03.txt deleted file mode 100644 index b1a60eca972..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2008-10-03.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Shards of Alara -Type:Historic -Subtype:Standard -Effective:2008-10-03 -Sets:LEA -Banned:Abyssal Specter, Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Camouflage, Castle, Celestial Prism, Channel, Chaoslace, Chaos Orb, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: Red, Circle of Protection: White, Clockwork Beast, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Disrupting Scepter, Drain Life, Drain Power, Dragon Whelp, Dwarven Demolition Team, Dwarven Warriors, Earthbind, Earthquake, Elvish Archers, Evil Presence, False Orders, Farmstead, Fastbond, Feedback, Fire Elemental, Fireball, Flashfires, Flight, Fog, Force of Nature, Forcefield, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Glasses of Urza, Gloom, Goblin Ballon Brigade, Granite Gargoyle, Gray Ogre, Green Ward, Guardian Angel, Healing Salve, Helm of Chatzuk, Holy Armor, Howl from Beyond, Hurloon Minotaur, Ice Storm, Illusionary Mask, Instill Energy, Invisibility, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jade Statue, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Lord of Atlantis, Magical Hack, Mana Flare, Mana Short, Mana Vault, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raging River, Raise Dead, Red Elemental Blast, Red Ward, Regrowth, Resurrection, Reverse Damage, Rock Hydra, Roc of Kher Ridges, Sacrifice, Savannah, Savannah Lions, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Shatter, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Steal Artifact, Stone Giant, Stone Rain, Stream of Life, Sunglasses of Urza, Swords to Plowshares, Taiga, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Timetwister, Time Vault, Time Walk, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Uthden Troll, Verduran Enchantress, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Bone, Wall of Brambles, Wall of Ice, Wall of Stone, Wall of Water, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Knight, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Wooden Sphere, Word of Command, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2009-07-17.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2009-07-17.txt deleted file mode 100644 index 13978df711c..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2009-07-17.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Core Set 2010 -Type:Historic -Subtype:Standard -Effective:2009-07-17 -Sets:LEA -Banned:Abyssal Specter, Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Camouflage, Castle, Celestial Prism, Channel, Chaoslace, Chaos Orb, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: Red, Circle of Protection: White, Clockwork Beast, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Disrupting Scepter, Drain Life, Drain Power, Dwarven Demolition Team, Dwarven Warriors, Earth Elemental, Earthbind, Elvish Archers, Evil Presence, False Orders, Farmstead, Fastbond, Fear, Feedback, Fire Elemental, Flashfires, Flight, Force of Nature, Forcefield, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Glasses of Urza, Gloom, Goblin Ballon Brigade, Goblin King, Granite Gargoyle, Gray Ogre, Green Ward, Grizzly Bears, Guardian Angel, Healing Salve, Helm of Chatzuk, Hill Giant, The Hive, Holy Armor, Howl from Beyond, Hurloon Minotaur, Hurricane, Ice Storm, Icy Manipulator, Illusionary Mask, Instill Energy, Invisibility, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jade Statue, Jayemdae Tome, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Living Artifact, Living Lands, Living Wall, Lord of Atlantis, Lord of the Pit, Lure, Magical Hack, Mahamoti Djinn, Mana Flare, Mana Short, Mana Vault, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Artillery, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raging River, Raise Dead, Red Elemental Blast, Red Ward, Regeneration, Regrowth, Resurrection, Reverse Damage, Rock Hydra, Roc of Kher Ridges, Royal Assassin, Sacrifice, Samite Healer, Savannah, Savannah Lions, Scathe Zombies, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Sengir Vampire, Shanodin Dryads, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Steal Artifact, Stone Rain, Stream of Life, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Timetwister, Time Vault, Time Walk, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Uthden Troll, Verduran Enchantress, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Air, Wall of Brambles, Wall of Ice, Wall of Stone, Wall of Swords, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Web, Wheel of Fortune, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Wooden Sphere, Word of Command, Wrath of God, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2010-07-16.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2010-07-16.txt deleted file mode 100644 index 441cc31da6c..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2010-07-16.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, 2011 Core Set -Type:Historic -Subtype:Standard -Effective:2010-07-16 -Sets:LEA -Banned:Abyssal Specter, Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Braingeyser, Burrowing, Camouflage, Castle, Celestial Prism, Channel, Chaoslace, Chaos Orb, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: Red, Circle of Protection: White, Clockwork Beast, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Disrupting Scepter, Drain Life, Drain Power, Dwarven Demolition Team, Dwarven Warriors, Earth Elemental, Earthbind, Elvish Archers, Evil Presence, False Orders, Farmstead, Fastbond, Fear, Feedback, Fire Elemental, Flashfires, Flight, Force of Nature, Forcefield, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Glasses of Urza, Gloom, Goblin King, Granite Gargoyle, Gray Ogre, Green Ward, Grizzly Bears, Guardian Angel, Healing Salve, Helm of Chatzuk, Hill Giant, The Hive, Holy Armor, Howl from Beyond, Hurloon Minotaur, Hurricane, Ice Storm, Icy Manipulator, Illusionary Mask, Instill Energy, Invisibility, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jade Statue, Jayemdae Tome, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Living Artifact, Living Lands, Living Wall, Lord of Atlantis, Lord of the Pit, Lure, Magical Hack, Mahamoti Djinn, Mana Flare, Mana Short, Mana Vault, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Artillery, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raging River, Raise Dead, Red Elemental Blast, Red Ward, Regeneration, Regrowth, Resurrection, Reverse Damage, Rock Hydra, Roc of Kher Ridges, Sacrifice, Samite Healer, Savannah, Savannah Lions, Scathe Zombies, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Sengir Vampire, Shanodin Dryads, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Steal Artifact, Stone Rain, Stream of Life, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Timetwister, Time Vault, Time Walk, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Uthden Troll, Verduran Enchantress, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Air, Wall of Brambles, Wall of Ice, Wall of Stone, Wall of Swords, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Web, Wheel of Fortune, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Wooden Sphere, Word of Command, Wrath of God, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2010-10-01.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2010-10-01.txt deleted file mode 100644 index f36437e11aa..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2010-10-01.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Scars of Mirrodin -Type:Historic -Subtype:Standard -Effective:2010-10-01 -Sets:LEA -Banned:Abyssal Specter, Air Elemental, Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Bog Wraith, Braingeyser, Burrowing, Camouflage, Castle, Celestial Prism, Channel, Chaoslace, Chaos Orb, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: Red, Circle of Protection: White, Clockwork Beast, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Craw Wurm, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Disrupting Scepter, Dragon Whelp, Drain Life, Drain Power, Drudge Skeletons, Dwarven Demolition Team, Dwarven Warriors, Earth Elemental, Earthbind, Earthquake, Elvish Archers, Evil Presence, False Orders, Farmstead, Fastbond, Fear, Feedback, Fire Elemental, Firebreathing, Flashfires, Flight, Force of Nature, Forcefield, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Glasses of Urza, Gloom, Goblin King, Granite Gargoyle, Gray Ogre, Green Ward, Grizzly Bears, Guardian Angel, Healing Salve, Helm of Chatzuk, Hill Giant, The Hive, Holy Armor, Howl from Beyond, Howling Mine, Hurloon Minotaur, Hurricane, Hypnotic Specter, Ice Storm, Icy Manipulator, Illusionary Mask, Instill Energy, Invisibility, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jade Statue, Jayemdae Tome, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Living Artifact, Living Lands, Living Wall, Lord of Atlantis, Lord of the Pit, Lure, Magical Hack, Mahamoti Djinn, Mana Flare, Mana Short, Mana Vault, Manabarbs, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Nightmare, Northern Paladin, Obsianus Golem, Orcish Artillery, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raging River, Raise Dead, Red Elemental Blast, Red Ward, Regeneration, Regrowth, Resurrection, Reverse Damage, Righteousness, Rock Hydra, Roc of Kher Ridges, Rod of Ruin, Sacrifice, Samite Healer, Savannah, Savannah Lions, Scathe Zombies, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Sengir Vampire, Shanodin Dryads, Shivan Dragon, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Steal Artifact, Stone Giant, Stone Rain, Stream of Life, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Timetwister, Time Vault, Time Walk, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Uthden Troll, Verduran Enchantress, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Air, Wall of Bone, Wall of Brambles, Wall of Fire, Wall of Ice, Wall of Stone, Wall of Swords, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Wooden Sphere, Word of Command, Wrath of God, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2011-07-15.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2011-07-15.txt deleted file mode 100644 index 1214614bd90..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2011-07-15.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, 2012 Core Set -Type:Historic -Subtype:Standard -Effective:2011-07-15 -Sets:LEA -Banned:Abyssal Specter, Air Elemental, Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Bog Wraith, Braingeyser, Burrowing, Camouflage, Castle, Celestial Prism, Channel, Chaoslace, Chaos Orb, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: Red, Circle of Protection: White, Clockwork Beast, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Craw Wurm, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Disrupting Scepter, Dragon Whelp, Drain Life, Drain Power, Drudge Skeletons, Dwarven Demolition Team, Dwarven Warriors, Earth Elemental, Earthbind, Earthquake, Elvish Archers, Evil Presence, False Orders, Farmstead, Fastbond, Fear, Feedback, Fire Elemental, Flashfires, Force of Nature, Forcefield, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Glasses of Urza, Gloom, Goblin King, Granite Gargoyle, Gray Ogre, Green Ward, Grizzly Bears, Guardian Angel, Healing Salve, Helm of Chatzuk, Hill Giant, The Hive, Holy Armor, Howl from Beyond, Howling Mine, Hurloon Minotaur, Hurricane, Hypnotic Specter, Ice Storm, Icy Manipulator, Illusionary Mask, Instill Energy, Invisibility, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jade Statue, Jayemdae Tome, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Living Artifact, Living Lands, Living Wall, Lord of Atlantis, Lord of the Pit, Magical Hack, Mahamoti Djinn, Mana Flare, Mana Short, Mana Vault, Manabarbs, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Nightmare, Northern Paladin, Obsianus Golem, Orcish Artillery, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raging River, Raise Dead, Red Elemental Blast, Red Ward, Regeneration, Regrowth, Resurrection, Reverse Damage, Righteousness, Rock Hydra, Roc of Kher Ridges, Rod of Ruin, Sacrifice, Samite Healer, Savannah, Savannah Lions, Scathe Zombies, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Shivan Dragon, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Steal Artifact, Stone Giant, Stone Rain, Stream of Life, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Timetwister, Time Vault, Time Walk, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Uthden Troll, Verduran Enchantress, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Air, Wall of Bone, Wall of Brambles, Wall of Fire, Wall of Ice, Wall of Stone, Wall of Swords, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Wooden Sphere, Word of Command, Wrath of God, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2011-09-30.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2011-09-30.txt deleted file mode 100644 index f31c382a113..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2011-09-30.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Innistrad -Type:Historic -Subtype:Standard -Effective:2011-09-30 -Sets:LEA -Banned:Abyssal Specter, Air Elemental, Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Bog Wraith, Braingeyser, Burrowing, Camouflage, Castle, Celestial Prism, Channel, Chaoslace, Chaos Orb, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: Red, Circle of Protection: White, Clockwork Beast, Clone, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Craw Wurm, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Disrupting Scepter, Dragon Whelp, Drain Life, Drain Power, Drudge Skeletons, Dwarven Demolition Team, Dwarven Warriors, Earth Elemental, Earthbind, Earthquake, Elvish Archers, False Orders, Farmstead, Fastbond, Fear, Feedback, Fire Elemental, Flashfires, Force of Nature, Forcefield, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Giant Growth, Glasses of Urza, Gloom, Goblin Balloon Brigade, Goblin King, Granite Gargoyle, Gray Ogre, Green Ward, Grizzly Bears, Guardian Angel, Healing Salve, Helm of Chatzuk, Hill Giant, The Hive, Holy Armor, Holy Strength, Howl from Beyond, Howling Mine, Hurloon Minotaur, Hurricane, Hypnotic Specter, Ice Storm, Icy Manipulator, Illusionary Mask, Instill Energy, Invisibility, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jade Statue, Jayemdae Tome, Juggernaut, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Lord of Atlantis, Lord of the Pit, Magical Hack, Mahamoti Djinn, Mana Flare, Mana Short, Mana Vault, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Nightmare, Northern Paladin, Obsianus Golem, Orcish Artillery, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raging River, Raise Dead, Red Elemental Blast, Red Ward, Regeneration, Regrowth, Resurrection, Reverse Damage, Righteousness, Rock Hydra, Roc of Kher Ridges, Rod of Ruin, Sacrifice, Samite Healer, Savannah, Savannah Lions, Scathe Zombies, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Shivan Dragon, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Steal Artifact, Stone Giant, Stone Rain, Stream of Life, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Timetwister, Time Vault, Time Walk, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Unholy Strength, Uthden Troll, Verduran Enchantress, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Air, Wall of Bone, Wall of Brambles, Wall of Fire, Wall of Ice, Wall of Stone, Wall of Swords, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Knight, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Wooden Sphere, Word of Command, Wrath of God, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2012-07-13.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2012-07-13.txt deleted file mode 100644 index 6fe6ae8e8e9..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2012-07-13.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, 2013 Core Set -Type:Historic -Subtype:Standard -Effective:2012-07-13 -Sets:LEA -Banned:Abyssal Specter, Air Elemental, Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Bog Wraith, Braingeyser, Burrowing, Camouflage, Castle, Celestial Prism, Channel, Chaoslace, Chaos Orb, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: Red, Circle of Protection: White, Clockwork Beast, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Craw Wurm, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Disrupting Scepter, Dragon Whelp, Drain Life, Drain Power, Drudge Skeletons, Dwarven Demolition Team, Dwarven Warriors, Earth Elemental, Earthbind, Earthquake, Elvish Archers, False Orders, Farmstead, Fastbond, Fear, Feedback, Flashfires, Force of Nature, Forcefield, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Giant Growth, Glasses of Urza, Gloom, Goblin Balloon Brigade, Goblin King, Granite Gargoyle, Gray Ogre, Green Ward, Grizzly Bears, Guardian Angel, Healing Salve, Helm of Chatzuk, Hill Giant, The Hive, Holy Armor, Holy Strength, Howl from Beyond, Howling Mine, Hurloon Minotaur, Hurricane, Hypnotic Specter, Ice Storm, Icy Manipulator, Illusionary Mask, Instill Energy, Invisibility, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jade Statue, Juggernaut, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Lord of Atlantis, Lord of the Pit, Magical Hack, Mahamoti Djinn, Mana Flare, Mana Short, Mana Vault, Meekstone, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Nightmare, Northern Paladin, Obsianus Golem, Orcish Artillery, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raging River, Raise Dead, Red Elemental Blast, Red Ward, Regeneration, Regrowth, Resurrection, Reverse Damage, Righteousness, Rock Hydra, Roc of Kher Ridges, Rod of Ruin, Sacrifice, Samite Healer, Savannah, Savannah Lions, Scathe Zombies, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Shivan Dragon, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Steal Artifact, Stone Giant, Stone Rain, Stream of Life, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Timetwister, Time Vault, Time Walk, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Unholy Strength, Uthden Troll, Verduran Enchantress, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Air, Wall of Bone, Wall of Brambles, Wall of Ice, Wall of Stone, Wall of Swords, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Knight, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Wooden Sphere, Word of Command, Wrath of God, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2012-10-05.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2012-10-05.txt deleted file mode 100644 index a7bbcbb01db..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2012-10-05.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Return to Ravnica -Type:Historic -Subtype:Standard -Effective:2012-10-05 -Sets:LEA -Banned:Abyssal Specter, Air Elemental, Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Birds of Paradise, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Bog Wraith, Braingeyser, Burrowing, Camouflage, Castle, Celestial Prism, Channel, Chaoslace, Chaos Orb, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: Red, Circle of Protection: White, Clockwork Beast, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Craw Wurm, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Disrupting Scepter, Dragon Whelp, Drain Life, Drain Power, Drudge Skeletons, Dwarven Demolition Team, Dwarven Warriors, Earth Elemental, Earthbind, Earthquake, Elvish Archers, Evil Presence, False Orders, Farmstead, Fastbond, Fear, Feedback, Fireball, Firebreathing, Flashfires, Flight, Force of Nature, Forcefield, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Giant Spider, Glasses of Urza, Gloom, Goblin Balloon Brigade, Goblin King, Granite Gargoyle, Gray Ogre, Green Ward, Grizzly Bears, Guardian Angel, Healing Salve, Helm of Chatzuk, Hill Giant, The Hive, Holy Armor, Holy Strength, Howl from Beyond, Howling Mine, Hurloon Minotaur, Hurricane, Hypnotic Specter, Ice Storm, Icy Manipulator, Illusionary Mask, Instill Energy, Invisibility, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jade Statue, Juggernaut, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Llanowar Elves, Lord of Atlantis, Lord of the Pit, Lure, Magical Hack, Mahamoti Djinn, Mana Flare, Mana Short, Mana Vault, Manabarbs, Meekstone, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Nightmare, Northern Paladin, Obsianus Golem, Orcish Artillery, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raging River, Raise Dead, Red Elemental Blast, Red Ward, Regeneration, Regrowth, Resurrection, Reverse Damage, Righteousness, Rock Hydra, Roc of Kher Ridges, Rod of Ruin, Royal Assassin, Sacrifice, Samite Healer, Savannah, Savannah Lions, Scathe Zombies, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Sengir Vampire, Shanodin Dryads, Shatter, Shivan Dragon, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Steal Artifact, Stone Giant, Stone Rain, Stream of Life, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Timetwister, Time Vault, Time Walk, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Unholy Strength, Uthden Troll, Verduran Enchantress, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Air, Wall of Bone, Wall of Brambles, Wall of Ice, Wall of Stone, Wall of Swords, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Knight, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Wooden Sphere, Word of Command, Wrath of God, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2013-07-19.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2013-07-19.txt deleted file mode 100644 index f037984236b..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2013-07-19.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, 2014 Core Set -Type:Historic -Subtype:Standard -Effective:2013-07-19 -Sets:LEA -Banned:Abyssal Specter, Air Elemental, Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Birds of Paradise, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blue Elemental Blast, Blue Ward, Bog Wraith, Braingeyser, Burrowing, Camouflage, Castle, Celestial Prism, Channel, Chaoslace, Chaos Orb, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: Red, Circle of Protection: White, Clockwork Beast, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Craw Wurm, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Disrupting Scepter, Dragon Whelp, Drain Life, Drain Power, Drudge Skeletons, Dwarven Demolition Team, Dwarven Warriors, Earth Elemental, Earthbind, Earthquake, Elvish Archers, Evil Presence, False Orders, Farmstead, Fastbond, Fear, Feedback, Fireball, Firebreathing, Flashfires, Flight, Force of Nature, Forcefield, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Glasses of Urza, Gloom, Goblin Balloon Brigade, Goblin King, Granite Gargoyle, Gray Ogre, Green Ward, Grizzly Bears, Guardian Angel, Healing Salve, Helm of Chatzuk, Hill Giant, The Hive, Holy Armor, Holy Strength, Howl from Beyond, Howling Mine, Hurloon Minotaur, Hurricane, Hypnotic Specter, Ice Storm, Icy Manipulator, Illusionary Mask, Instill Energy, Invisibility, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jade Statue, Juggernaut, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Llanowar Elves, Lord of Atlantis, Lord of the Pit, Lure, Magical Hack, Mahamoti Djinn, Mana Flare, Mana Short, Mana Vault, Manabarbs, Meekstone, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Artillery, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raging River, Raise Dead, Red Elemental Blast, Red Ward, Regeneration, Regrowth, Resurrection, Reverse Damage, Righteousness, Rock Hydra, Roc of Kher Ridges, Royal Assassin, Sacrifice, Samite Healer, Savannah, Savannah Lions, Scathe Zombies, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Shatter, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Stasis, Steal Artifact, Stone Giant, Stone Rain, Stream of Life, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Timetwister, Time Vault, Time Walk, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Unholy Strength, Uthden Troll, Verduran Enchantress, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Air, Wall of Bone, Wall of Brambles, Wall of Ice, Wall of Stone, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Knight, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Wooden Sphere, Word of Command, Wrath of God, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2013-09-23.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2013-09-23.txt deleted file mode 100644 index 91012e68339..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2013-09-23.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Theros -Type:Historic -Subtype:Standard -Effective:2013-09-23 -Sets:LEA -Banned:Abyssal Specter, Air Elemental, Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Birds of Paradise, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blue Elemental Blast, Blue Ward, Bog Wraith, Braingeyser, Burrowing, Camouflage, Castle, Celestial Prism, Channel, Chaoslace, Chaos Orb, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: Red, Circle of Protection: White, Clockwork Beast, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Craw Wurm, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Disrupting Scepter, Dragon Whelp, Drain Life, Drain Power, Drudge Skeletons, Dwarven Demolition Team, Dwarven Warriors, Earth Elemental, Earthbind, Earthquake, Elvish Archers, Evil Presence, False Orders, Farmstead, Fastbond, Fear, Feedback, Fire Elemental, Fireball, Firebreathing, Flashfires, Flight, Force of Nature, Forcefield, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Glasses of Urza, Gloom, Goblin Balloon Brigade, Goblin King, Granite Gargoyle, Gray Ogre, Green Ward, Grizzly Bears, Guardian Angel, Healing Salve, Helm of Chatzuk, Hill Giant, The Hive, Holy Armor, Holy Strength, Howl from Beyond, Howling Mine, Hurloon Minotaur, Hurricane, Hypnotic Specter, Ice Storm, Icy Manipulator, Illusionary Mask, Instill Energy, Invisibility, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jade Statue, Jayemdae Tome, Juggernaut, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Llanowar Elves, Lord of Atlantis, Lord of the Pit, Lure, Magical Hack, Mahamoti Djinn, Mana Flare, Mana Short, Mana Vault, Manabarbs, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Artillery, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raging River, Raise Dead, Red Elemental Blast, Red Ward, Regeneration, Regrowth, Resurrection, Reverse Damage, Righteousness, Rock Hydra, Roc of Kher Ridges, Royal Assassin, Sacrifice, Samite Healer, Savannah, Savannah Lions, Scathe Zombies, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Shatter, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Stasis, Steal Artifact, Stone Giant, Stone Rain, Stream of Life, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Timetwister, Time Vault, Time Walk, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Unholy Strength, Unsummon, Uthden Troll, Verduran Enchantress, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Air, Wall of Bone, Wall of Brambles, Wall of Fire, Wall of Ice, Wall of Stone, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Knight, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Wooden Sphere, Word of Command, Wrath of God, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2014-07-18.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2014-07-18.txt deleted file mode 100644 index 96f313c4721..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2014-07-18.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, 2015 Core Set -Type:Historic -Subtype:Standard -Effective:2014-07-18 -Sets:LEA -Banned:Abyssal Specter, Air Elemental, Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Birds of Paradise, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blue Elemental Blast, Blue Ward, Bog Wraith, Braingeyser, Burrowing, Camouflage, Castle, Celestial Prism, Channel, Chaoslace, Chaos Orb, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: Red, Circle of Protection: White, Clockwork Beast, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Craw Wurm, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Disrupting Scepter, Dragon Whelp, Drain Life, Drain Power, Drudge Skeletons, Dwarven Demolition Team, Dwarven Warriors, Earth Elemental, Earthbind, Earthquake, Elvish Archers, Evil Presence, False Orders, Farmstead, Fastbond, Fear, Feedback, Fire Elemental, Fireball, Firebreathing, Flashfires, Flight, Force of Nature, Forcefield, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Glasses of Urza, Gloom, Goblin Balloon Brigade, Goblin King, Granite Gargoyle, Gray Ogre, Green Ward, Grizzly Bears, Guardian Angel, Healing Salve, Helm of Chatzuk, Hill Giant, The Hive, Holy Armor, Holy Strength, Howl from Beyond, Howling Mine, Hurloon Minotaur, Hurricane, Hypnotic Specter, Ice Storm, Icy Manipulator, Illusionary Mask, Instill Energy, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jade Statue, Jayemdae Tome, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Llanowar Elves, Lord of Atlantis, Lord of the Pit, Lure, Magical Hack, Mana Flare, Mana Short, Mana Vault, Manabarbs, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Artillery, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raging River, Raise Dead, Red Elemental Blast, Red Ward, Regeneration, Regrowth, Resurrection, Reverse Damage, Righteousness, Rock Hydra, Roc of Kher Ridges, Royal Assassin, Sacrifice, Samite Healer, Savannah, Savannah Lions, Scathe Zombies, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Shatter, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Stasis, Steal Artifact, Stone Giant, Stone Rain, Stream of Life, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Timetwister, Time Vault, Time Walk, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Unholy Strength, Unsummon, Uthden Troll, Verduran Enchantress, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Air, Wall of Bone, Wall of Brambles, Wall of Ice, Wall of Stone, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Knight, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Wooden Sphere, Word of Command, Wrath of God, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2014-09-26.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2014-09-26.txt deleted file mode 100644 index 2f9b2aa7802..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2014-09-26.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Khans of Tarkir -Type:Historic -Subtype:Standard -Effective:2014-09-26 -Sets:LEA -Banned:Abyssal Specter, Air Elemental, Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Birds of Paradise, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Bog Wraith, Braingeyser, Burrowing, Camouflage, Castle, Celestial Prism, Channel, Chaoslace, Chaos Orb, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: Red, Circle of Protection: White, Clockwork Beast, Clone, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Craw Wurm, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Disrupting Scepter, Dragon Whelp, Drain Life, Drain Power, Drudge Skeletons, Dwarven Demolition Team, Dwarven Warriors, Earth Elemental, Earthbind, Earthquake, Elvish Archers, Evil Presence, False Orders, Farmstead, Fastbond, Fear, Feedback, Fire Elemental, Fireball, Firebreathing, Flashfires, Flight, Fog, Force of Nature, Forcefield, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Giant Growth, Giant Spider, Glasses of Urza, Gloom, Goblin Balloon Brigade, Goblin King, Granite Gargoyle, Gray Ogre, Green Ward, Grizzly Bears, Guardian Angel, Healing Salve, Helm of Chatzuk, Hill Giant, The Hive, Holy Armor, Holy Strength, Howl from Beyond, Howling Mine, Hurloon Minotaur, Hurricane, Hypnotic Specter, Ice Storm, Icy Manipulator, Illusionary Mask, Instill Energy, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jade Statue, Jayemdae Tome, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Llanowar Elves, Lord of Atlantis, Lord of the Pit, Lure, Magical Hack, Mana Flare, Mana Short, Mana Vault, Manabarbs, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Artillery, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raging River, Raise Dead, Red Elemental Blast, Red Ward, Regeneration, Regrowth, Resurrection, Reverse Damage, Righteousness, Rock Hydra, Roc of Kher Ridges, Rod of Ruin, Royal Assassin, Sacrifice, Samite Healer, Savannah, Savannah Lions, Scathe Zombies, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Steal Artifact, Stone Giant, Stone Rain, Stream of Life, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Timetwister, Time Vault, Time Walk, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Unholy Strength, Unsummon, Uthden Troll, Verduran Enchantress, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Air, Wall of Bone, Wall of Brambles, Wall of Ice, Wall of Stone, Wall of Swords, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Knight, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Wooden Sphere, Word of Command, Wrath of God, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2015-07-17.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2015-07-17.txt deleted file mode 100644 index 28c0fe26266..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2015-07-17.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Magic Origins -Type:Historic -Subtype:Standard -Effective:2015-07-17 -Sets:LEA -Banned:Abyssal Specter, Air Elemental, Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Birds of Paradise, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Bog Wraith, Braingeyser, Burrowing, Camouflage, Castle, Celestial Prism, Channel, Chaoslace, Chaos Orb, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: Red, Circle of Protection: White, Clockwork Beast, Clone, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Craw Wurm, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Disrupting Scepter, Dragon Whelp, Drain Life, Drain Power, Drudge Skeletons, Dwarven Demolition Team, Dwarven Warriors, Earth Elemental, Earthbind, Earthquake, Elvish Archers, Evil Presence, False Orders, Farmstead, Fastbond, Fear, Feedback, Fire Elemental, Fireball, Firebreathing, Flashfires, Flight, Fog, Force of Nature, Forcefield, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Giant Growth, Giant Spider, Glasses of Urza, Gloom, Goblin Balloon Brigade, Goblin King, Granite Gargoyle, Gray Ogre, Green Ward, Grizzly Bears, Guardian Angel, Healing Salve, Helm of Chatzuk, Hill Giant, The Hive, Holy Armor, Holy Strength, Howl from Beyond, Howling Mine, Hurloon Minotaur, Hurricane, Hypnotic Specter, Ice Storm, Icy Manipulator, Illusionary Mask, Instill Energy, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jade Statue, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Llanowar Elves, Lord of Atlantis, Lord of the Pit, Lure, Magical Hack, Mana Flare, Mana Short, Mana Vault, Manabarbs, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Artillery, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raging River, Raise Dead, Red Elemental Blast, Red Ward, Regeneration, Regrowth, Resurrection, Reverse Damage, Righteousness, Rock Hydra, Roc of Kher Ridges, Rod of Ruin, Royal Assassin, Sacrifice, Samite Healer, Savannah, Savannah Lions, Scathe Zombies, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Steal Artifact, Stone Giant, Stone Rain, Stream of Life, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Timetwister, Time Vault, Time Walk, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Unholy Strength, Unsummon, Uthden Troll, Verduran Enchantress, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Air, Wall of Bone, Wall of Brambles, Wall of Ice, Wall of Stone, Wall of Swords, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Knight, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Wooden Sphere, Word of Command, Wrath of God, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2015-10-02.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2015-10-02.txt deleted file mode 100644 index 1e94048e0d5..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2015-10-02.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Battle for Zendikar -Type:Historic -Subtype:Standard -Effective:2015-10-02 -Sets:LEA -Banned:Abyssal Specter, Air Elemental, Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Birds of Paradise, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Bog Wraith, Braingeyser, Burrowing, Camouflage, Castle, Celestial Prism, Channel, Chaoslace, Chaos Orb, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: Red, Circle of Protection: White, Clockwork Beast, Clone, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Craw Wurm, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Disrupting Scepter, Dragon Whelp, Drain Life, Drain Power, Drudge Skeletons, Dwarven Demolition Team, Dwarven Warriors, Earth Elemental, Earthbind, Earthquake, Elvish Archers, Evil Presence, False Orders, Farmstead, Fastbond, Fear, Feedback, Fire Elemental, Fireball, Firebreathing, Flashfires, Flight, Fog, Force of Nature, Forcefield, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Giant Growth, Giant Spider, Glasses of Urza, Gloom, Goblin Balloon Brigade, Goblin King, Granite Gargoyle, Gray Ogre, Green Ward, Grizzly Bears, Guardian Angel, Healing Salve, Helm of Chatzuk, Hill Giant, The Hive, Holy Armor, Holy Strength, Howl from Beyond, Howling Mine, Hurloon Minotaur, Hurricane, Hypnotic Specter, Ice Storm, Icy Manipulator, Illusionary Mask, Instill Energy, Invisibility, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jade Statue, Juggernaut, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Llanowar Elves, Lord of Atlantis, Lord of the Pit, Lure, Magical Hack, Mana Flare, Mana Short, Mana Vault, Manabarbs, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Artillery, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raging River, Raise Dead, Red Elemental Blast, Red Ward, Regeneration, Regrowth, Resurrection, Reverse Damage, Righteousness, Rock Hydra, Roc of Kher Ridges, Rod of Ruin, Royal Assassin, Sacrifice, Samite Healer, Savannah, Savannah Lions, Scathe Zombies, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Steal Artifact, Stone Giant, Stone Rain, Stream of Life, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Timetwister, Time Vault, Time Walk, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Unholy Strength, Unsummon, Uthden Troll, Verduran Enchantress, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Air, Wall of Bone, Wall of Brambles, Wall of Fire, Wall of Ice, Wall of Stone, Wall of Swords, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Knight, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Wooden Sphere, Word of Command, Wrath of God, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2016-01-20.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2016-01-20.txt deleted file mode 100644 index 1e94048e0d5..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2016-01-20.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Battle for Zendikar -Type:Historic -Subtype:Standard -Effective:2015-10-02 -Sets:LEA -Banned:Abyssal Specter, Air Elemental, Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Birds of Paradise, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Bog Wraith, Braingeyser, Burrowing, Camouflage, Castle, Celestial Prism, Channel, Chaoslace, Chaos Orb, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: Red, Circle of Protection: White, Clockwork Beast, Clone, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Craw Wurm, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Disrupting Scepter, Dragon Whelp, Drain Life, Drain Power, Drudge Skeletons, Dwarven Demolition Team, Dwarven Warriors, Earth Elemental, Earthbind, Earthquake, Elvish Archers, Evil Presence, False Orders, Farmstead, Fastbond, Fear, Feedback, Fire Elemental, Fireball, Firebreathing, Flashfires, Flight, Fog, Force of Nature, Forcefield, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Giant Growth, Giant Spider, Glasses of Urza, Gloom, Goblin Balloon Brigade, Goblin King, Granite Gargoyle, Gray Ogre, Green Ward, Grizzly Bears, Guardian Angel, Healing Salve, Helm of Chatzuk, Hill Giant, The Hive, Holy Armor, Holy Strength, Howl from Beyond, Howling Mine, Hurloon Minotaur, Hurricane, Hypnotic Specter, Ice Storm, Icy Manipulator, Illusionary Mask, Instill Energy, Invisibility, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jade Statue, Juggernaut, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Llanowar Elves, Lord of Atlantis, Lord of the Pit, Lure, Magical Hack, Mana Flare, Mana Short, Mana Vault, Manabarbs, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Artillery, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raging River, Raise Dead, Red Elemental Blast, Red Ward, Regeneration, Regrowth, Resurrection, Reverse Damage, Righteousness, Rock Hydra, Roc of Kher Ridges, Rod of Ruin, Royal Assassin, Sacrifice, Samite Healer, Savannah, Savannah Lions, Scathe Zombies, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Steal Artifact, Stone Giant, Stone Rain, Stream of Life, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Timetwister, Time Vault, Time Walk, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Unholy Strength, Unsummon, Uthden Troll, Verduran Enchantress, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Air, Wall of Bone, Wall of Brambles, Wall of Fire, Wall of Ice, Wall of Stone, Wall of Swords, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Knight, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Wooden Sphere, Word of Command, Wrath of God, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2016-04-08.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2016-04-08.txt deleted file mode 100644 index 72f315f5c12..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2016-04-08.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Shadows over Innistrad -Type:Historic -Subtype:Standard -Effective:2016-04-30 -Sets:LEA -Banned:Abyssal Specter, Air Elemental, Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Birds of Paradise, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Bog Wraith, Braingeyser, Burrowing, Camouflage, Castle, Celestial Prism, Channel, Chaoslace, Chaos Orb, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: Red, Circle of Protection: White, Clockwork Beast, Clone, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Craw Wurm, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Disrupting Scepter, Dragon Whelp, Drain Life, Drain Power, Drudge Skeletons, Dwarven Demolition Team, Dwarven Warriors, Earth Elemental, Earthbind, Earthquake, Elvish Archers, Evil Presence, False Orders, Farmstead, Fastbond, Fear, Feedback, Fire Elemental, Fireball, Firebreathing, Flashfires, Flight, Fog, Force of Nature, Forcefield, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Giant Growth, Giant Spider, Glasses of Urza, Gloom, Goblin Balloon Brigade, Goblin King, Granite Gargoyle, Gray Ogre, Green Ward, Grizzly Bears, Guardian Angel, Healing Salve, Helm of Chatzuk, Hill Giant, The Hive, Holy Armor, Holy Strength, Howl from Beyond, Howling Mine, Hurloon Minotaur, Hurricane, Hypnotic Specter, Ice Storm, Icy Manipulator, Illusionary Mask, Instill Energy, Invisibility, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jade Statue, Juggernaut, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Llanowar Elves, Lord of Atlantis, Lord of the Pit, Lure, Magical Hack, Mana Flare, Mana Short, Mana Vault, Manabarbs, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Artillery, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raging River, Raise Dead, Red Elemental Blast, Red Ward, Regeneration, Regrowth, Resurrection, Reverse Damage, Righteousness, Rock Hydra, Roc of Kher Ridges, Rod of Ruin, Royal Assassin, Sacrifice, Samite Healer, Savannah, Savannah Lions, Scathe Zombies, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Steal Artifact, Stone Giant, Stone Rain, Stream of Life, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Timetwister, Time Vault, Time Walk, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Unholy Strength, Unsummon, Uthden Troll, Verduran Enchantress, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Air, Wall of Bone, Wall of Brambles, Wall of Fire, Wall of Ice, Wall of Stone, Wall of Swords, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Knight, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Wooden Sphere, Word of Command, Wrath of God, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2016-09-30.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2016-09-30.txt deleted file mode 100644 index 2659bf74d27..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2016-09-30.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Kaladesh -Type:Historic -Subtype:Standard -Effective:2016-09-30 -Sets:LEA -Banned:Abyssal Specter, Air Elemental, Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Birds of Paradise, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Bog Wraith, Braingeyser, Burrowing, Camouflage, Castle, Celestial Prism, Channel, Chaoslace, Chaos Orb, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: Red, Circle of Protection: White, Clockwork Beast, Clone, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Craw Wurm, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Disrupting Scepter, Dragon Whelp, Drain Life, Drain Power, Drudge Skeletons, Dwarven Demolition Team, Dwarven Warriors, Earth Elemental, Earthbind, Earthquake, Elvish Archers, Evil Presence, False Orders, Farmstead, Fastbond, Fear, Feedback, Fire Elemental, Fireball, Firebreathing, Flashfires, Flight, Fog, Force of Nature, Forcefield, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Giant Growth, Giant Spider, Glasses of Urza, Gloom, Goblin Balloon Brigade, Goblin King, Granite Gargoyle, Gray Ogre, Green Ward, Grizzly Bears, Guardian Angel, Healing Salve, Helm of Chatzuk, Hill Giant, The Hive, Holy Armor, Holy Strength, Howl from Beyond, Howling Mine, Hurloon Minotaur, Hurricane, Hypnotic Specter, Ice Storm, Icy Manipulator, Illusionary Mask, Instill Energy, Invisibility, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jade Statue, Jayemdae Tome, Juggernaut, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Llanowar Elves, Lord of Atlantis, Lord of the Pit, Lure, Magical Hack, Mahamoti Djinn, Mana Flare, Mana Short, Mana Vault, Manabarbs, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Artillery, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raging River, Raise Dead, Red Elemental Blast, Red Ward, Regeneration, Regrowth, Resurrection, Reverse Damage, Righteousness, Rock Hydra, Roc of Kher Ridges, Rod of Ruin, Royal Assassin, Sacrifice, Samite Healer, Savannah, Savannah Lions, Scathe Zombies, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Shatter, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Steal Artifact, Stone Giant, Stone Rain, Stream of Life, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Timetwister, Time Vault, Time Walk, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Unholy Strength, Unsummon, Uthden Troll, Verduran Enchantress, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Air, Wall of Bone, Wall of Brambles, Wall of Fire, Wall of Ice, Wall of Stone, Wall of Swords, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Knight, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Wooden Sphere, Word of Command, Wrath of God, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2017-04-28.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2017-04-28.txt deleted file mode 100644 index 87d74695a93..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2017-04-28.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Amonkhet -Type:Historic -Subtype:Standard -Effective:2017-04-28 -Sets:LEA -Banned:Abyssal Specter, Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Birds of Paradise, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Bog Wraith, Braingeyser, Burrowing, Camouflage, Castle, Celestial Prism, Channel, Chaoslace, Chaos Orb, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: Red, Circle of Protection: White, Clockwork Beast, Clone, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Craw Wurm, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Disrupting Scepter, Dragon Whelp, Drain Life, Drain Power, Drudge Skeletons, Dwarven Demolition Team, Dwarven Warriors, Earth Elemental, Earthbind, Earthquake, Elvish Archers, Evil Presence, False Orders, Farmstead, Fastbond, Fear, Feedback, Fire Elemental, Fireball, Firebreathing, Flashfires, Flight, Fog, Force of Nature, Forcefield, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Giant Growth, Glasses of Urza, Gloom, Goblin Balloon Brigade, Goblin King, Granite Gargoyle, Gray Ogre, Green Ward, Grizzly Bears, Guardian Angel, Healing Salve, Helm of Chatzuk, Hill Giant, The Hive, Holy Armor, Holy Strength, Howl from Beyond, Howling Mine, Hurloon Minotaur, Hurricane, Hypnotic Specter, Ice Storm, Icy Manipulator, Illusionary Mask, Instill Energy, Invisibility, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jade Statue, Jayemdae Tome, Juggernaut, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Llanowar Elves, Lord of Atlantis, Lord of the Pit, Lure, Magical Hack, Mahamoti Djinn, Mana Flare, Mana Short, Mana Vault, Manabarbs, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Artillery, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raging River, Red Elemental Blast, Red Ward, Regeneration, Regrowth, Resurrection, Reverse Damage, Righteousness, Rock Hydra, Roc of Kher Ridges, Rod of Ruin, Royal Assassin, Sacrifice, Samite Healer, Savannah, Savannah Lions, Scathe Zombies, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Shatter, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Steal Artifact, Stone Giant, Stone Rain, Stream of Life, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Timetwister, Time Vault, Time Walk, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Unholy Strength, Unsummon, Uthden Troll, Verduran Enchantress, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Air, Wall of Bone, Wall of Brambles, Wall of Fire, Wall of Ice, Wall of Stone, Wall of Swords, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Knight, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Wooden Sphere, Word of Command, Wrath of God, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2017-07-14.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2017-07-14.txt deleted file mode 100644 index fc7bd3a5f2c..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2017-07-14.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Hour of Devastation -Type:Historic -Subtype:Standard -Effective:2017-07-14 -Sets:LEA -Banned:Abyssal Specter, Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Birds of Paradise, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Bog Wraith, Braingeyser, Burrowing, Camouflage, Castle, Celestial Prism, Channel, Chaoslace, Chaos Orb, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: Red, Circle of Protection: White, Clockwork Beast, Clone, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Craw Wurm, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Disrupting Scepter, Dragon Whelp, Drain Life, Drain Power, Drudge Skeletons, Dwarven Demolition Team, Dwarven Warriors, Earth Elemental, Earthbind, Earthquake, Elvish Archers, Evil Presence, False Orders, Farmstead, Fastbond, Fear, Feedback, Fire Elemental, Fireball, Firebreathing, Flashfires, Flight, Fog, Force of Nature, Forcefield, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Giant Growth, Glasses of Urza, Gloom, Goblin Balloon Brigade, Goblin King, Granite Gargoyle, Gray Ogre, Green Ward, Grizzly Bears, Guardian Angel, Healing Salve, Helm of Chatzuk, Hill Giant, The Hive, Holy Armor, Holy Strength, Howl from Beyond, Howling Mine, Hurloon Minotaur, Hurricane, Hypnotic Specter, Ice Storm, Icy Manipulator, Illusionary Mask, Instill Energy, Invisibility, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jade Statue, Jayemdae Tome, Juggernaut, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Llanowar Elves, Lord of Atlantis, Lord of the Pit, Lure, Magical Hack, Mahamoti Djinn, Mana Flare, Mana Short, Mana Vault, Manabarbs, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Artillery, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raging River, Red Elemental Blast, Red Ward, Regeneration, Regrowth, Resurrection, Reverse Damage, Righteousness, Rock Hydra, Roc of Kher Ridges, Rod of Ruin, Royal Assassin, Sacrifice, Samite Healer, Savannah, Savannah Lions, Scathe Zombies, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Shatter, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Steal Artifact, Stone Giant, Stone Rain, Stream of Life, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Timetwister, Time Vault, Time Walk, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Unholy Strength, Uthden Troll, Verduran Enchantress, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Air, Wall of Bone, Wall of Brambles, Wall of Fire, Wall of Ice, Wall of Stone, Wall of Swords, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Knight, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Wooden Sphere, Word of Command, Wrath of God, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2017-09-29.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2017-09-29.txt deleted file mode 100644 index 59340ee3980..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2017-09-29.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Ixalan -Type:Historic -Subtype:Standard -Effective:2017-09-29 -Sets:LEA -Banned:Abyssal Specter, Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Birds of Paradise, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Bog Wraith, Braingeyser, Burrowing, Camouflage, Castle, Celestial Prism, Channel, Chaoslace, Chaos Orb, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: Red, Circle of Protection: White, Clockwork Beast, Clone, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Craw Wurm, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Disrupting Scepter, Dragon Whelp, Drain Life, Drain Power, Drudge Skeletons, Dwarven Demolition Team, Dwarven Warriors, Earth Elemental, Earthbind, Earthquake, Elvish Archers, Evil Presence, False Orders, Farmstead, Fastbond, Fear, Feedback, Fire Elemental, Fireball, Firebreathing, Flashfires, Flight, Fog, Force of Nature, Forcefield, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Giant Growth, Glasses of Urza, Gloom, Goblin Balloon Brigade, Goblin King, Granite Gargoyle, Gray Ogre, Green Ward, Grizzly Bears, Guardian Angel, Healing Salve, Helm of Chatzuk, Hill Giant, The Hive, Holy Armor, Holy Strength, Howl from Beyond, Howling Mine, Hurloon Minotaur, Hurricane, Hypnotic Specter, Ice Storm, Icy Manipulator, Illusionary Mask, Instill Energy, Invisibility, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jade Statue, Jayemdae Tome, Juggernaut, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Llanowar Elves, Lord of Atlantis, Lord of the Pit, Lure, Magical Hack, Mahamoti Djinn, Mana Flare, Mana Short, Mana Vault, Manabarbs, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Artillery, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raging River, Red Elemental Blast, Red Ward, Regeneration, Regrowth, Resurrection, Reverse Damage, Righteousness, Rock Hydra, Roc of Kher Ridges, Rod of Ruin, Royal Assassin, Sacrifice, Samite Healer, Savannah, Savannah Lions, Scathe Zombies, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shatter, Shanodin Dryads, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Steal Artifact, Stone Giant, Stone Rain, Stream of Life, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Timetwister, Time Vault, Time Walk, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Unholy Strength, Uthden Troll, Verduran Enchantress, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Air, Wall of Bone, Wall of Brambles, Wall of Fire, Wall of Ice, Wall of Stone, Wall of Swords, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Knight, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Wooden Sphere, Word of Command, Wrath of God, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2018-01-19.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2018-01-19.txt deleted file mode 100644 index 295cb4815eb..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2018-01-19.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Rivals of Ixalan -Type:Historic -Subtype:Standard -Effective:2018-01-19 -Sets:LEA -Banned:Abyssal Specter, Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Birds of Paradise, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Bog Wraith, Braingeyser, Burrowing, Camouflage, Castle, Celestial Prism, Channel, Chaoslace, Chaos Orb, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: Red, Circle of Protection: White, Clockwork Beast, Clone, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Craw Wurm, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Disrupting Scepter, Dragon Whelp, Drain Life, Drain Power, Drudge Skeletons, Dwarven Demolition Team, Dwarven Warriors, Earth Elemental, Earthbind, Earthquake, Elvish Archers, Evil Presence, False Orders, Farmstead, Fastbond, Fear, Feedback, Fire Elemental, Fireball, Firebreathing, Flashfires, Flight, Fog, Force of Nature, Forcefield, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Giant Growth, Glasses of Urza, Gloom, Goblin Balloon Brigade, Goblin King, Granite Gargoyle, Gray Ogre, Green Ward, Grizzly Bears, Guardian Angel, Healing Salve, Helm of Chatzuk, Hill Giant, The Hive, Holy Armor, Holy Strength, Howl from Beyond, Howling Mine, Hurloon Minotaur, Hurricane, Hypnotic Specter, Ice Storm, Icy Manipulator, Illusionary Mask, Instill Energy, Invisibility, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jade Statue, Jayemdae Tome, Juggernaut, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Llanowar Elves, Lord of Atlantis, Lord of the Pit, Lure, Magical Hack, Mahamoti Djinn, Mana Flare, Mana Short, Mana Vault, Manabarbs, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Artillery, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raging River, Red Elemental Blast, Red Ward, Regeneration, Regrowth, Resurrection, Reverse Damage, Righteousness, Rock Hydra, Roc of Kher Ridges, Rod of Ruin, Royal Assassin, Sacrifice, Samite Healer, Savannah, Savannah Lions, Scathe Zombies, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Steal Artifact, Stone Giant, Stone Rain, Stream of Life, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Timetwister, Time Vault, Time Walk, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Unholy Strength, Uthden Troll, Verduran Enchantress, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Air, Wall of Bone, Wall of Brambles, Wall of Fire, Wall of Ice, Wall of Stone, Wall of Swords, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Knight, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Wooden Sphere, Word of Command, Wrath of God, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2018-04-27.txt b/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2018-04-27.txt deleted file mode 100644 index 9f51a8dee95..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Standard/Alpha/2018-04-27.txt +++ /dev/null @@ -1,7 +0,0 @@ -[format] -Name:Standard Alpha, Dominaria -Type:Historic -Subtype:Standard -Effective:2018-04-27 -Sets:LEA -Banned:Abyssal Specter, Ancestral Recall, Animate Artifact, Animate Dead, Animate Wall, Ankh of Mishra, Armageddon, Aspect of Wolf, Bad Moon, Badlands, Balance, Basalt Monolith, Bayou, Benalish Hero, Berserk, Birds of Paradise, Black Knight, Black Lotus, Black Vise, Black Ward, Blaze of Glory, Blessing, Blue Elemental Blast, Blue Ward, Bog Wraith, Braingeyser, Burrowing, Camouflage, Castle, Celestial Prism, Channel, Chaoslace, Chaos Orb, Circle of Protection: Blue, Circle of Protection: Green, Circle of Protection: Red, Circle of Protection: White, Clockwork Beast, Clone, Cockatrice, Consecrate Land, Conservator, Contract from Below, Control Magic, Conversion, Copper Tablet, Copy Artifact, Counterspell, Craw Wurm, Creature Bond, Crusade, Crystal Rod, Cursed Land, Cyclopean Tomb, Dark Ritual, Darkpact, Deathgrip, Deathlace, Death Ward, Demonic Attorney, Demonic Hordes, Demonic Tutor, Dingus Egg, Disenchant, Disintegrate, Disrupting Scepter, Dragon Whelp, Drain Life, Drain Power, Drudge Skeletons, Dwarven Demolition Team, Dwarven Warriors, Earth Elemental, Earthbind, Earthquake, Elvish Archers, Evil Presence, False Orders, Farmstead, Fastbond, Fear, Feedback, Fireball, Firebreathing, Flashfires, Flight, Fog, Force of Nature, Forcefield, Fork, Frozen Shade, Fungusaur, Gaea's Liege, Gauntlet of Might, Giant Growth, Glasses of Urza, Gloom, Goblin Balloon Brigade, Goblin King, Granite Gargoyle, Gray Ogre, Green Ward, Grizzly Bears, Guardian Angel, Healing Salve, Helm of Chatzuk, Hill Giant, The Hive, Holy Armor, Holy Strength, Howl from Beyond, Howling Mine, Hurloon Minotaur, Hurricane, Hypnotic Specter, Ice Storm, Illusionary Mask, Instill Energy, Invisibility, Iron Star, Ironclaw Orcs, Ironroot Treefolk, Island Sanctuary, Ivory Cup, Jade Monolith, Jade Statue, Jayemdae Tome, Jump, Karma, Keldon Warlord, Kormus Bell, Kudzu, Lance, Ley Druid, Library of Leng, Lich, Lifeforce, Lifelace, Lifetap, Lightning Bolt, Living Artifact, Living Lands, Living Wall, Lord of Atlantis, Lord of the Pit, Lure, Magical Hack, Mahamoti Djinn, Mana Flare, Mana Short, Mana Vault, Manabarbs, Meekstone, Merfolk of the Pearl Trident, Mesa Pegasus, Mind Twist, Mons's Goblin Raiders, Mox Emerald, Mox Jet, Mox Pearl, Mox Ruby, Mox Sapphire, Natural Selection, Nether Shadow, Nettling Imp, Nevinyrral's Disk, Northern Paladin, Obsianus Golem, Orcish Artillery, Orcish Oriflamme, Paralyze, Pearled Unicorn, Personal Incarnation, Pestilence, Phantasmal Forces, Phantasmal Terrain, Phantom Monster, Pirate Ship, Plague Rats, Plateau, Power Leak, Power Sink, Power Surge, Prodigal Sorcerer, Psionic Blast, Psychic Venom, Purelace, Raging River, Red Elemental Blast, Red Ward, Regeneration, Regrowth, Resurrection, Reverse Damage, Righteousness, Rock Hydra, Roc of Kher Ridges, Rod of Ruin, Royal Assassin, Sacrifice, Samite Healer, Savannah, Savannah Lions, Scathe Zombies, Scavenging Ghoul, Scrubland, Scryb Sprites, Sea Serpent, Sedge Troll, Shanodin Dryads, Simulacrum, Sinkhole, Siren's Call, Sleight of Mind, Smoke, Sol Ring, Soul Net, Spell Blast, Stasis, Steal Artifact, Stone Giant, Stone Rain, Stream of Life, Sunglasses of Urza, Swords to Plowshares, Taiga, Terror, Thicket Basilisk, Thoughtlace, Throne of Bone, Timber Wolves, Timetwister, Time Vault, Time Walk, Tranquility, Tropical Island, Tsunami, Tundra, Tunnel, Twiddle, Two-Headed Giant of Foriys, Underground Sea, Unholy Strength, Uthden Troll, Verduran Enchantress, Vesuvan Doppelganger, Veteran Bodyguard, Volcanic Eruption, Wall of Air, Wall of Bone, Wall of Brambles, Wall of Fire, Wall of Ice, Wall of Stone, Wall of Swords, Wall of Water, Wall of Wood, Wanderlust, War Mammoth, Warp Artifact, Water Elemental, Weakness, Web, Wheel of Fortune, White Knight, White Ward, Wild Growth, Will-o'-the-Wisp, Winter Orb, Wooden Sphere, Word of Command, Wrath of God, Zombie Master \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Vintage/Alpha/1996-10-01.txt b/forge-gui/res/formats/Historic/DCI/Vintage/Alpha/1996-10-01.txt deleted file mode 100644 index 6041efff665..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Vintage/Alpha/1996-10-01.txt +++ /dev/null @@ -1,8 +0,0 @@ -[format] -Name:Type I Alpha, 10/01/96 -Type:Historic -Subtype:Vintage -Effective:1996-10-01 -Sets:LEA -Restricted:Ancestral Recall, Balance, Berserk, Black Lotus, Braingeyser, Copy Artifact, Demonic Tutor, Fastbond, Fork, Mox Emerald, Mox Pearl, Mox Ruby, Mox Sapphire, Mox Jet, Regrowth, Sol Ring, Timetwister, Time Walk, Wheel of Fortune -Banned:Channel, Chaos Orb, Contract from Below, Darkpact, Demonic Attorney, Mind Twist \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Vintage/Alpha/1997-07-01.txt b/forge-gui/res/formats/Historic/DCI/Vintage/Alpha/1997-07-01.txt deleted file mode 100644 index a67d4c2d457..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Vintage/Alpha/1997-07-01.txt +++ /dev/null @@ -1,8 +0,0 @@ -[format] -Name:Classic Alpha, 07/01/97 -Type:Historic -Subtype:Vintage -Effective:1997-07-01 -Sets:LEA -Restricted:Ancestral Recall, Balance, Berserk, Black Lotus, Black Vise, Braingeyser, Copy Artifact, Demonic Tutor, Fastbond, Fork, Mox Emerald, Mox Pearl, Mox Ruby, Mox Sapphire, Mox Jet, Regrowth, Sol Ring, Timetwister, Time Walk, Wheel of Fortune -Banned:Channel, Chaos Orb, Contract from Below, Darkpact, Demonic Attorney, Mind Twist \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Vintage/Alpha/1998-11-01.txt b/forge-gui/res/formats/Historic/DCI/Vintage/Alpha/1998-11-01.txt deleted file mode 100644 index a75f5a5cfe6..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Vintage/Alpha/1998-11-01.txt +++ /dev/null @@ -1,8 +0,0 @@ -[format] -Name:Classic Alpha, 11/01/98 -Type:Historic -Subtype:Vintage -Effective:1998-11-01 -Sets:LEA -Restricted:Ancestral Recall, Balance, Berserk, Black Lotus, Black Vise, Braingeyser, Demonic Tutor, Fastbond, Fork, Mox Emerald, Mox Pearl, Mox Ruby, Mox Sapphire, Mox Jet, Regrowth, Sol Ring, Timetwister, Time Walk, Wheel of Fortune -Banned:Channel, Chaos Orb, Contract from Below, Darkpact, Demonic Attorney, Mind Twist \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Vintage/Alpha/2000-10-01.txt b/forge-gui/res/formats/Historic/DCI/Vintage/Alpha/2000-10-01.txt deleted file mode 100644 index b75cf527269..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Vintage/Alpha/2000-10-01.txt +++ /dev/null @@ -1,8 +0,0 @@ -[format] -Name:Type 1 Alpha, 10/01/00 -Type:Historic -Subtype:Vintage -Effective:2000-10-01 -Sets:LEA -Restricted:Ancestral Recall, Balance, Berserk, Black Lotus, Black Vise, Braingeyser, Channel, Demonic Tutor, Fastbond, Fork, Mind Twist, Mox Emerald, Mox Pearl, Mox Ruby, Mox Sapphire, Mox Jet, Regrowth, Sol Ring, Timetwister, Time Walk, Wheel of Fortune -Banned:Chaos Orb, Contract from Below, Darkpact, Demonic Attorney \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Vintage/Alpha/2003-04-01.txt b/forge-gui/res/formats/Historic/DCI/Vintage/Alpha/2003-04-01.txt deleted file mode 100644 index 28d2a705231..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Vintage/Alpha/2003-04-01.txt +++ /dev/null @@ -1,8 +0,0 @@ -[format] -Name:Type 1 Alpha, 04/01/03 -Type:Historic -Subtype:Vintage -Effective:2003-04-01 -Sets:LEA -Restricted:Ancestral Recall, Balance, Black Lotus, Black Vise, Braingeyser, Channel, Demonic Tutor, Fastbond, Fork, Mind Twist, Mox Emerald, Mox Pearl, Mox Ruby, Mox Sapphire, Mox Jet, Regrowth, Sol Ring, Timetwister, Time Walk, Wheel of Fortune -Banned:Chaos Orb, Contract from Below, Darkpact, Demonic Attorney \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Vintage/Alpha/2004-09-20.txt b/forge-gui/res/formats/Historic/DCI/Vintage/Alpha/2004-09-20.txt deleted file mode 100644 index 36ef8ecd8dc..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Vintage/Alpha/2004-09-20.txt +++ /dev/null @@ -1,8 +0,0 @@ -[format] -Name:Vintage Alpha, 09/20/04 -Type:Historic -Subtype:Vintage -Effective:2004-09-20 -Sets:LEA -Restricted:Ancestral Recall, Balance, Black Lotus, Black Vise, Channel, Demonic Tutor, Fastbond, Mind Twist, Mox Emerald, Mox Pearl, Mox Ruby, Mox Sapphire, Mox Jet, Regrowth, Sol Ring, Timetwister, Time Walk, Wheel of Fortune -Banned:Chaos Orb, Contract from Below, Darkpact, Demonic Attorney \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Vintage/Alpha/2007-06-20.txt b/forge-gui/res/formats/Historic/DCI/Vintage/Alpha/2007-06-20.txt deleted file mode 100644 index ecd43df1fd6..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Vintage/Alpha/2007-06-20.txt +++ /dev/null @@ -1,8 +0,0 @@ -[format] -Name:Vintage Alpha, 06/20/06 -Type:Historic -Subtype:Vintage -Effective:2007-06-20 -Sets:LEA -Restricted:Ancestral Recall, Balance, Black Lotus, Channel, Demonic Tutor, Fastbond, Mox Emerald, Mox Pearl, Mox Ruby, Mox Sapphire, Mox Jet, Regrowth, Sol Ring, Timetwister, Time Walk, Wheel of Fortune -Banned:Chaos Orb, Contract from Below, Darkpact, Demonic Attorney \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Vintage/Alpha/2008-09-20.txt b/forge-gui/res/formats/Historic/DCI/Vintage/Alpha/2008-09-20.txt deleted file mode 100644 index fb1cc02616a..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Vintage/Alpha/2008-09-20.txt +++ /dev/null @@ -1,8 +0,0 @@ -[format] -Name:Vintage Alpha, 09/20/08 -Type:Historic -Subtype:Vintage -Effective:2008-09-20 -Sets:LEA -Restricted:Ancestral Recall, Balance, Black Lotus, Channel, Demonic Tutor, Fastbond, Mox Emerald, Mox Pearl, Mox Ruby, Mox Sapphire, Mox Jet, Regrowth, Sol Ring, Time Vault, Timetwister, Time Walk, Wheel of Fortune -Banned:Chaos Orb, Contract from Below, Darkpact, Demonic Attorney \ No newline at end of file diff --git a/forge-gui/res/formats/Historic/DCI/Vintage/Alpha/2013-05-03.txt b/forge-gui/res/formats/Historic/DCI/Vintage/Alpha/2013-05-03.txt deleted file mode 100644 index 2e3d6abb47c..00000000000 --- a/forge-gui/res/formats/Historic/DCI/Vintage/Alpha/2013-05-03.txt +++ /dev/null @@ -1,8 +0,0 @@ -[format] -Name:Vintage Alpha, Dragon's Maze -Type:Historic -Subtype:Vintage -Effective:2013-05-03 -Sets:LEA -Restricted:Ancestral Recall, Balance, Black Lotus, Channel, Demonic Tutor, Fastbond, Mox Emerald, Mox Pearl, Mox Ruby, Mox Sapphire, Mox Jet, Sol Ring, Time Vault, Timetwister, Time Walk, Wheel of Fortune -Banned:Chaos Orb, Contract from Below, Darkpact, Demonic Attorney \ No newline at end of file diff --git a/forge-gui/res/formats/Sanctioned/Modern.txt b/forge-gui/res/formats/Sanctioned/Modern.txt index 2c45138ec37..738145f390b 100644 --- a/forge-gui/res/formats/Sanctioned/Modern.txt +++ b/forge-gui/res/formats/Sanctioned/Modern.txt @@ -3,5 +3,5 @@ Name:Modern Order:102 Subtype:Modern Type:Sanctioned -Sets:8ED, MRD, DST, 5DN, CHK, BOK, SOK, 9ED, RAV, GPT, DIS, CSP, TSP, TSB, PLC, FUT, 10E, LRW, EVE, SHM, MOR, ALA, CFX, ARB, M10, ZEN, WWK, ROE, M11, SOM, MBS, NPH, M12, ISD, DKA, AVR, M13, RTR, GTC, DGM, M14, THS, BNG, JOU, M15, KTK, FRF, DTK, MM2, ORI, BFZ, OGW, SOI, EMN, KLD, AER, AKH, W17, HOU, XLN, RIX, DOM +Sets:8ED, MRD, DST, 5DN, CHK, BOK, SOK, 9ED, RAV, GPT, DIS, CSP, TSP, TSB, PLC, FUT, 10E, LRW, EVE, SHM, MOR, ALA, CFX, ARB, M10, ZEN, WWK, ROE, M11, SOM, MBS, NPH, M12, ISD, DKA, AVR, M13, RTR, GTC, DGM, M14, THS, BNG, JOU, M15, KTK, FRF, DTK, MM2, ORI, BFZ, OGW, SOI, EMN, KLD, AER, AKH, W17, HOU, XLN, RIX, DOM, M19 Banned:Ancient Den; Birthing Pod; Blazing Shoal; Chrome Mox; Cloudpost; Dark Depths; Deathrite Shaman; Dig Through Time; Dread Return; Eye of Ugin; Gitaxian Probe; Glimpse of Nature; Golgari Grave-Troll; Great Furnace; Green Sun's Zenith; Hypergenesis; Mental Misstep; Ponder; Preordain; Punishing Fire; Rite of Flame; Seat of the Synod; Second Sunrise; Seething Song; Sensei's Divining Top; Skullclamp; Splinter Twin; Stoneforge Mystic; Summer Bloom; Treasure Cruise; Tree of Tales; Umezawa's Jitte; Vault of Whispers diff --git a/forge-gui/res/formats/Sanctioned/Standard.txt b/forge-gui/res/formats/Sanctioned/Standard.txt index ddbd395bda1..6d8133d15d9 100644 --- a/forge-gui/res/formats/Sanctioned/Standard.txt +++ b/forge-gui/res/formats/Sanctioned/Standard.txt @@ -3,5 +3,5 @@ Name:Standard Order:101 Subtype:Standard Type:Sanctioned -Sets:KLD, AER, AKH, W17, HOU, XLN, RIX, DOM +Sets:KLD, AER, AKH, W17, HOU, XLN, RIX, DOM, M19 Banned: Attune with Aether; Rogue Refiner; Rampaging Ferocidon; Ramunap Ruins; Smuggler's Copter; Aetherworks Marvel; Felidar Guardian diff --git a/forge-gui/res/lists/TypeLists.txt b/forge-gui/res/lists/TypeLists.txt index 33857b9d908..34b360d6246 100644 --- a/forge-gui/res/lists/TypeLists.txt +++ b/forge-gui/res/lists/TypeLists.txt @@ -28,6 +28,7 @@ Assembly-Worker:Assembly-Workers Atog:Atogs Aurochs:Aurochs Avatar:Avatars +Azra:Azra Badger:Badgers Barbarian:Barbarians Basilisk:Basilisks @@ -71,6 +72,7 @@ Druid:Druids Dryad:Dryads Dwarf:Dwarves Efreet:Efreets +Egg:Eggs Elder:Elders Eldrazi:Eldrazi Elemental:Elementals @@ -270,6 +272,7 @@ Treasure Vehicle [WalkerTypes] Ajani +Aminatou Angrath Arlinn Ashiok @@ -279,6 +282,7 @@ Dack Daretti Domri Dovin +Estrid Elspeth Freyalise Garruk @@ -296,6 +300,7 @@ Narset Nissa Nixilis Ral +Rowan Saheeli Samut Sarkhan @@ -307,4 +312,8 @@ Tibalt Ugin Venser Vraska +Will +Windgrace Xenagos +Yanggu +Yanling diff --git a/forge-gui/res/lists/altwin-achievements.txt b/forge-gui/res/lists/altwin-achievements.txt index 5b04a34798c..0abdb1cc437 100644 --- a/forge-gui/res/lists/altwin-achievements.txt +++ b/forge-gui/res/lists/altwin-achievements.txt @@ -14,6 +14,7 @@ Helix Pinnacle|The Tower|The view from the top is great! Hellkite Tyrant|The Hoard|You made your bed of treasure, now lie in it! Laboratory Maniac|The Insanity|No more questions? I'm omniscient now! Lich's Mastery|The Absence of Lifeforce|Life's a lich, then you die. +Liliana's Contract|The Contractual Immortality|Never mind the small print. Mayael's Aria|The Gargantuan|Just my shadow weighs a ton! Maze's End|The Labyrinth|What? No bossfight? Mechanized Production|The Rise of Replicas|Welcome to the future of mass production! diff --git a/forge-gui/res/lists/booster-images.txt b/forge-gui/res/lists/booster-images.txt index 2dd9a3abd0d..48c8f261e7d 100644 --- a/forge-gui/res/lists/booster-images.txt +++ b/forge-gui/res/lists/booster-images.txt @@ -261,6 +261,11 @@ https://downloads.cardforge.org/images/products/boosters/M15_2.jpg https://downloads.cardforge.org/images/products/boosters/M15_3.jpg https://downloads.cardforge.org/images/products/boosters/M15_4.jpg https://downloads.cardforge.org/images/products/boosters/M15_5.jpg +https://downloads.cardforge.org/images/products/boosters/M19_1.jpg +https://downloads.cardforge.org/images/products/boosters/M19_2.jpg +https://downloads.cardforge.org/images/products/boosters/M19_3.jpg +https://downloads.cardforge.org/images/products/boosters/M19_4.jpg +https://downloads.cardforge.org/images/products/boosters/M19_5.jpg https://downloads.cardforge.org/images/products/boosters/MBS.png https://downloads.cardforge.org/images/products/boosters/MBS_1.jpg https://downloads.cardforge.org/images/products/boosters/MBS_2.jpg diff --git a/forge-gui/res/lists/boosterbox-images.txt b/forge-gui/res/lists/boosterbox-images.txt index db9f7e5c94f..6aab58512d5 100644 --- a/forge-gui/res/lists/boosterbox-images.txt +++ b/forge-gui/res/lists/boosterbox-images.txt @@ -60,6 +60,7 @@ https://downloads.cardforge.org/images/products/boosterboxes/M12.jpg https://downloads.cardforge.org/images/products/boosterboxes/M13.jpg https://downloads.cardforge.org/images/products/boosterboxes/M14.jpg https://downloads.cardforge.org/images/products/boosterboxes/M15.jpg +https://downloads.cardforge.org/images/products/boosterboxes/M19.jpg https://downloads.cardforge.org/images/products/boosterboxes/MBS.jpg https://downloads.cardforge.org/images/products/boosterboxes/MIR.jpg https://downloads.cardforge.org/images/products/boosterboxes/MM2.jpg diff --git a/forge-gui/res/lists/fatpack-images.txt b/forge-gui/res/lists/fatpack-images.txt index 7f970296c46..49fe30ba636 100644 --- a/forge-gui/res/lists/fatpack-images.txt +++ b/forge-gui/res/lists/fatpack-images.txt @@ -43,6 +43,7 @@ https://downloads.cardforge.org/images/products/fatpacks/M12.png https://downloads.cardforge.org/images/products/fatpacks/M13.jpg https://downloads.cardforge.org/images/products/fatpacks/M14.jpg https://downloads.cardforge.org/images/products/fatpacks/M15.jpg +https://downloads.cardforge.org/images/products/fatpacks/M19.jpg https://downloads.cardforge.org/images/products/fatpacks/MBS.jpg https://downloads.cardforge.org/images/products/fatpacks/MMQ.jpg https://downloads.cardforge.org/images/products/fatpacks/MOR.jpg diff --git a/forge-gui/res/lists/planeswalker-achievements.txt b/forge-gui/res/lists/planeswalker-achievements.txt index da2c1c2f2a9..c569542f319 100644 --- a/forge-gui/res/lists/planeswalker-achievements.txt +++ b/forge-gui/res/lists/planeswalker-achievements.txt @@ -2,9 +2,12 @@ Ajani Goldmane|Ajani's Avatar|Serra? Is that you? Ajani Steadfast|Ajani's Forcefield|Shields up! Ajani Unyielding|Ajani's Mentoring|Today's lesson: How to be strong. Ajani Vengeant|Ajani's Tantrum|Look Ma! No lands! +Ajani, Adversary of Tyrants|Ajani's House of Cats|Here, kitty, kitty, kitty... Ajani, Caller of the Pride|Ajani's Menagerie|You're a crazy cat lady now! Ajani, Mentor of Heroes|Ajani's Vitality|Do sta let! Ajani, Valiant Protector|Ajani's Valiant Smash|Sometimes, life can be brutal. +Ajani, Wise Counselor|Ajani's Mega-growth|Let's just pile these on... +Aminatou, the Fateshifter|Aminatou's Twist of Fate|Let's shuffle this a bit. Angrath, Minotaur Pirate|Angrath's Massacre|All we have to do is kill everyone who tries to steal Orazca from our grasp. Angrath, the Flame-Chained|Angrath's Torture|If you will not tell me where the Immortal Sun is, knight, then you will die. Arlinn, Embraced by the Moon|Arlinn's Hunt|Fair fight? What fair fight? @@ -26,6 +29,7 @@ Dovin Baan|Dovin's Static|Have you tried to turn it off and on again? Elspeth Tirel|Elspeth's Solitude|Tokens are my only friends... Elspeth, Knight-Errant|Elspeth's Endurance|Bant will prevail! Elspeth, Sun's Champion|Elspeth's Crusade|With Heliod on my side, I'm invincible! +Estrid, the Masked|Estrid's Replenishing Blast|Let the masquerade begin. Freyalise, Llanowar's Fury|Freyalise's Big Party|Let's celebrate each and every one of you! Garruk, the Veil-Cursed|Garruk's Graveyard|The dead shall help the living! Garruk Wildspeaker|Garruk's Overrun|I speak seven languages, including Wild! @@ -63,11 +67,15 @@ Liliana, Death's Majesty|Liliana's Wrath|Everybody died... except for those who Liliana, Death Wielder|Liliana's Mass Raise|Death is no excuse to stop working. Liliana, Defiant Necromancer|Liliana's Necromastery|Come join the Dark Side... Liliana, the Last Hope|Liliana's Army|The dead will always outnumber the living... +Liliana, the Necromancer|Liliana's Recycling|Old foes to new servants, and it's environmentally friendly! +Liliana, Untouched by Death|Liliana's Graveyard Party|What? I'm not touching you! +Lord Windgrace|Windgrace's Hunting Party|Let me show you a true cat-astrophe. Nahiri, the Harbinger|Nahiri's Mystery Guest|This should be your cue to run. Nahiri, the Lithomancer|Nahiri's Gift|I pulled it out! Now I'm a king! Narset Transcendent|Narset's One Rule|No spells for you! Nicol Bolas, God-Pharaoh|Bolas's Cleansing|Let's just tear this down and start again. Or... maybe tearing it down will suffice. Nicol Bolas, Planeswalker|Bolas's Ultimatum|Whatever you do, don't call him "Nicol"! +Nicol Bolas, the Arisen|Bolas's Mind Wipe|Anything Jace can do, I can do better. Nicol Bolas, the Deceiver|Bolas's Cunning Hit|I know exactly how to hurt you. Nissa Revane|Nissa's Summoning|The whole village is here! Nissa, Genesis Mage|Nissa's Genesis Wave|Let's see who shows up. @@ -81,9 +89,12 @@ Ob Nixilis of the Black Oath|Nixilis's Black Oath|We all have to bring sacrifice Ob Nixilis Reignited|Ob Nixilis's Torment|I'll give you dreams from beyond the underworld! Ral Zarek|Ral's Long Day|So much work, so much time! Saheeli Rai|Saheeli's Creativity|I love when all the pieces come together! +Saheeli, the Gifted|Saheeli's Doubling Season|Polished to mirror sheen. Samut, the Tested|Samut's Rapid Deployment|My friends will be here in a flash. Sarkhan Vol|Sarkhan's Dragons|Go forth, my minions! Sarkhan the Mad|Sarkhan's Beatdown|Tag! You're it! +Sarkhan, Dragonsoul|Sarkhan's Dragon Search|They can hide anywhere. +Sarkhan, Fireblood|Sarkhan's Call for Friends|My minions, meet the meat. Sarkhan, the Dragonspeaker|Sarkhan's Voices|Huh? What are you saying? Sarkhan Unbroken|Sarkhan's Dragonstorm|Skies full of dragons! Oh, what a glorious day! Sorin Markov|Sorin's Hypnosis|You're getting sleepy... very sleepy... @@ -98,11 +109,17 @@ Teferi, Timebender|Teferi's Time Warp|Let's do that again! Tezzeret the Schemer|Tezzeret's Assembly Line|Smashing, isn't it? Tezzeret the Seeker|Tezzeret's Robots|You can't stop the progress! Tezzeret, Agent of Bolas|Tezzeret's Drain|Technological superiority for the win! +Tezzeret, Artifice Master|Tezzeret's Planar Bridge|What's behind the door number one? +Tezzeret, Cruel Machinist|Tezzeret's Artificial Morph|Ixidor, Ugin... THIS is how you do it! Tezzeret, Master of Metal|Tezzeret's Confiscation|Your stuff will serve a grander design - mine. Tibalt, the Fiend-Blooded|Tibalt's Treason|My side is the winning side! Ugin, the Spirit Dragon|Ugin's Anti-Ultimatum|A ragtag band of misfits, brought from the future... Venser, the Sojourner|Venser's Oblivion|Let's just clean this up a bit... +Vivien of the Arkbow|Vivien's Overrun|No, never heard of a 'Garruk' -- why do you ask? +Vivien Reid|Vivien's Utter Pandemonium|They're so cute when they're stampeding. Vraska, Scheming Gorgon|Vraska's Stone Gaze|I think we could use a new figurehead! Vraska the Unseen|Vraska's Crew|Say hello to my little friends! Vraska, Relic Seeker|Vraska's Mark|Never play hide and seek with a Gorgon. Xenagos, the Reveler|Xenagos's Reveal|Mwahahaha! Now I'm a god! +Jiang Yanggu|Yanggu's Giant Growth|Now, Mowu! Fetch that tree! +Mu Yanling|Yanling's Time Manipulation|Sleep now, for three days and three nights. diff --git a/forge-gui/res/puzzle/PS_DOM4.pzl b/forge-gui/res/puzzle/PS_DOM4.pzl new file mode 100644 index 00000000000..9001e7b8b82 --- /dev/null +++ b/forge-gui/res/puzzle/PS_DOM4.pzl @@ -0,0 +1,18 @@ +[metadata] +Name:Possibility Storm - Dominaria #04 +URL:http://www.possibilitystorm.com/wp-content/uploads/2018/05/063.DOM4_.jpg +Goal:Win +Turns:1 +Difficulty:Rare +Description:Win this turn. Your opponent has a Crafty Cutpurse in hand and has enough open mana to cast it. +[state] +humanlife=20 +ailife=5 +turn=2 +aipersistentmana=U U U U +activeplayer=human +activephase=MAIN1 +humanhand=Voracious Vampire;Arcane Adaptation;Naban, Dean of Iteration;Deeproot Elite +humanbattlefield=Grand Warlord Radha;Forerunner of the Coalition;Forerunner of the Empire;Slimefoot, the Stowaway;Trespasser's Curse|EnchantingPlayer:AI;Sulfur Falls|Set:DOM;Sulfur Falls|Set:DOM;Sulfur Falls|Set:DOM;Sulfur Falls|Set:DOM;Blooming Marsh;Blooming Marsh;Blooming Marsh +aihand=Crafty Cutpurse +aibattlefield=Naban, Dean of Iteration;Academy Journeymage;Cold-Water Snapper diff --git a/forge-gui/res/puzzle/PS_DOM5.pzl b/forge-gui/res/puzzle/PS_DOM5.pzl new file mode 100644 index 00000000000..511e2d07900 --- /dev/null +++ b/forge-gui/res/puzzle/PS_DOM5.pzl @@ -0,0 +1,18 @@ +[metadata] +Name:Possibility Storm - Dominaria #05 +URL:http://www.possibilitystorm.com/wp-content/uploads/2018/05/064.DOM5_.jpg +Goal:Win +Turns:1 +Difficulty:Uncommon +Description:Win this turn. You have exiled Fatal Push and Mutiny with Karn. Assume any cards you could draw from your library are irrelevant. You already have the city's blessing at the start of the puzzle. +[state] +humanlife=20 +ailife=8 +turn=1 +activeplayer=human +activephase=MAIN1 +humanhand=Relic Runner;Garna, the Bloodflame;Forebear's Blade;Karn, Scion of Urza +humanlibrary=Song of Freyalise;Song of Freyalise;Song of Freyalise;Song of Freyalise;Song of Freyalise;Song of Freyalise;Song of Freyalise;Song of Freyalise;Song of Freyalise;Song of Freyalise +humanbattlefield=Karn, Scion of Urza|Counters:LOYALTY=2;Weldfast Wingsmith;Storm Fleet Swashbuckler;Reckless Fireweaver;Underhanded Designs;Sulfur Falls|Set:DOM;Sulfur Falls|Set:DOM;Sulfur Falls|Set:DOM;Canyon Slough;Canyon Slough;Canyon Slough +humanexile=Mutiny|Counters:SILVER=1;Fatal Push|Counters:SILVER=1 +aibattlefield=Aerial Responder;Aerial Responder;Bonded Horncrest diff --git a/forge-gui/res/puzzle/PS_DOM6.pzl b/forge-gui/res/puzzle/PS_DOM6.pzl new file mode 100644 index 00000000000..57f722223e1 --- /dev/null +++ b/forge-gui/res/puzzle/PS_DOM6.pzl @@ -0,0 +1,16 @@ +[metadata] +Name:Possibility Storm - Dominaria #06 +URL:http://www.possibilitystorm.com/wp-content/uploads/2018/06/065.DOM6_.jpg +Goal:Win +Turns:1 +Difficulty:Mythic +Description:Win this turn. +[state] +humanlife=20 +ailife=11 +turn=2 +activeplayer=human +activephase=MAIN1 +humanhand=Shivan Fire;Jaya's Immolating Inferno;Squee, the Immortal;Goblin Chainwhirler +humanbattlefield=Skirk Prospector|Set:DOM;Siege-Gang Commander|Set:DOM;t:Goblin,P:1,T:1,Cost:no cost,Color:R,Types:Creature-Goblin,Keywords:,Image:r_1_1_goblin_dom;t:Goblin,P:1,T:1,Cost:no cost,Color:R,Types:Creature-Goblin,Keywords:,Image:r_1_1_goblin_dom;t:Goblin,P:1,T:1,Cost:no cost,Color:R,Types:Creature-Goblin,Keywords:,Image:r_1_1_goblin_dom;t:Goblin,P:1,T:1,Cost:no cost,Color:R,Types:Creature-Goblin,Keywords:,Image:r_1_1_goblin_dom;Bloodstone Goblin;Mountain|Set:DOM;Mountain|Set:DOM;Mountain|Set:DOM;Mountain|Set:DOM;Mountain|Set:DOM +aibattlefield=Arvad the Cursed|Id:1;Short Sword|Attaching:1;Vona, Butcher of Magan;Dusk Legion Zealot;Hope of Ghirapur diff --git a/forge-gui/res/puzzle/PS_DOM7.pzl b/forge-gui/res/puzzle/PS_DOM7.pzl new file mode 100644 index 00000000000..89f2edc8138 --- /dev/null +++ b/forge-gui/res/puzzle/PS_DOM7.pzl @@ -0,0 +1,18 @@ +[metadata] +Name:Possibility Storm - Dominaria #07 +URL:http://www.possibilitystorm.com/wp-content/uploads/2018/06/066.-DOM7.jpg +Goal:Win +Turns:1 +Difficulty:Uncommon +Description:Win this turn. You just put Lore counters on your Sagas. Put their abilities on the stack and choose targets before doing anything else. +[state] +humanlife=20 +ailife=4 +turn=1 +activeplayer=human +activephase=DRAW +activephaseadvance=MAIN1 +humanhand=Shivan Fire;Kazarov, Sengir Pureblood;Dreamcaller Siren;Soul Salvage +humangraveyard=Thran Temporal Gateway;Neheb, the Worthy;Rona, Disciple of Gix +humanbattlefield=The Eldest Reborn|Counters:LORE=2;The First Eruption|Counters:LORE=1;Keldon Warcaller;Minotaur Sureshot;Frontline Devastator;Canyon Slough;Canyon Slough;Canyon Slough;Drowned Catacomb;Drowned Catacomb +aibattlefield=Cataclysmic Gearhulk|Set:KLD;Verdurous Gearhulk|Set:KLD|Counters:P1P1=2;Noxious Gearhulk|Set:KLD|Counters:P1P1=2 diff --git a/forge-gui/res/puzzle/PS_DOM8.pzl b/forge-gui/res/puzzle/PS_DOM8.pzl new file mode 100644 index 00000000000..07933035f0a --- /dev/null +++ b/forge-gui/res/puzzle/PS_DOM8.pzl @@ -0,0 +1,16 @@ +[metadata] +Name:Possibility Storm - Dominaria #08 +URL:http://www.possibilitystorm.com/wp-content/uploads/2018/06/067.-DOM8.jpg +Goal:Win +Turns:1 +Difficulty:Rare +Description:Win this turn. +[state] +humanlife=20 +ailife=20 +turn=1 +activeplayer=human +activephase=MAIN1 +humanhand=Fiery Intervention;Gift of Growth;Wizard's Lightning;Dreamcaller Siren +humanbattlefield=Cultivator of Blades;Combat Celebrant;Emberhorn Minotaur;Tetsuko Umezawa, Fugitive;Rhonas's Stalwart;Hinterland Harbor;Hinterland Harbor;Hinterland Harbor;Sulfur Falls;Sulfur Falls +aibattlefield=Grunn, the Lonely King|Counters:P1P1=5;Ghalta, Primal Hunger;Ancient Brontodon diff --git a/forge-gui/res/puzzle/PS_DOM9.pzl b/forge-gui/res/puzzle/PS_DOM9.pzl new file mode 100644 index 00000000000..099742f9755 --- /dev/null +++ b/forge-gui/res/puzzle/PS_DOM9.pzl @@ -0,0 +1,17 @@ +[metadata] +Name:Possibility Storm - Dominaria #09 +URL:http://www.possibilitystorm.com/wp-content/uploads/2018/06/068.-DOM9.jpg +Goal:Win +Turns:1 +Difficulty:Mythic +Description:Win this turn. Your opponent has access to 4 colorless mana, and you start with the City's Blessing. +[state] +humanlife=20 +ailife=2 +aipersistentmana=C C C C +turn=1 +activeplayer=human +activephase=MAIN1 +humanhand=Demystify;Ixalan's Binding;Nissa, Vital Force;Dive Down +humanbattlefield=Thrashing Brontodon|Id:999;Deep Freeze|Attaching:3;Slippery Scoundrel;Rhonas's Stalwart;Plains|Set:DOM;Hinterland Harbor;Hinterland Harbor;Hinterland Harbor;Glacial Fortress;Glacial Fortress;Glacial Fortress +aibattlefield=Evra, Halcyon Witness;Ninth Bridge Patrol|Counters:P1P1=1;Lyra Dawnbringer|Id:3;Cast Out|ExecuteScript:TrigExile->999 diff --git a/forge-gui/res/puzzle/PS_KTKT.pzl b/forge-gui/res/puzzle/PS_KTKT.pzl new file mode 100644 index 00000000000..946d65f28ea --- /dev/null +++ b/forge-gui/res/puzzle/PS_KTKT.pzl @@ -0,0 +1,16 @@ +[metadata] +Name:Possibility Storm - Khans of Tarkir Throwback Puzzle +URL:https://i2.wp.com/www.possibilitystorm.com/wp-content/uploads/2018/07/069.-KTK1-2.jpg +Goal:Win +Turns:1 +Difficulty:Uncommon +Description:Win this turn. You own both Satyr Wayfinders, but one is controlled by your opponent with Dragonlord Silumgar's ability. Start with no cards in either graveyard. +[state] +humanlife=20 +ailife=16 +turn=1 +activeplayer=human +activephase=MAIN1 +humanhand=Rite of Undoing;Silumgar Butcher;Sunbringer's Touch;Debilitating Injury +humanbattlefield=Dictate of Karametra;Polukranos, World Eater;Satyr Wayfinder;Rakshasa Vizier;Forest|Set:KTK;Forest|Set:KTK;Forest|Set:KTK;Island|Set:KTK;Island|Set:KTK;Swamp|Set:KTK;Swamp|Set:KTK;Satyr Wayfinder|Id:1 +aibattlefield=Silumgar Sorcerer;Palace Familiar;Vulturous Aven;Dragonlord Silumgar|ExecuteScript:TrigChange->1 diff --git a/forge-gui/res/puzzle/PS_M190.pzl b/forge-gui/res/puzzle/PS_M190.pzl new file mode 100644 index 00000000000..aa6144985c3 --- /dev/null +++ b/forge-gui/res/puzzle/PS_M190.pzl @@ -0,0 +1,16 @@ +[metadata] +Name:Possibility Storm - Magic Core Set 2019 #00 (Pre-release Puzzle) +URL:https://i0.wp.com/www.possibilitystorm.com/wp-content/uploads/2018/07/070.-M19001.jpg +Goal:Win +Turns:1 +Difficulty:Rare +Description:Win this turn. Start with no cards in either graveyard. Assume your opponent will not activate Razaketh's ability. +[state] +humanlife=20 +ailife=7 +turn=1 +activeplayer=human +activephase=MAIN1 +humanhand=Blossoming Defense;Storm Fleet Pyromancer;Pounce;Bloodrage Brawler;Ancient Animus +humanbattlefield=Yahenni, Undying Partisan;Isareth the Awakener;Bone Picker;Forest|Set:M19;Forest|Set:M19;Forest|Set:M19;Mountain|Set:M19;Mountain|Set:M19;Swamp|Set:M19;Swamp|Set:M19 +aibattlefield=Razaketh, the Foulblooded;Gigantosaurus diff --git a/forge-gui/res/puzzle/PS_M191.pzl b/forge-gui/res/puzzle/PS_M191.pzl new file mode 100644 index 00000000000..11e3715ce15 --- /dev/null +++ b/forge-gui/res/puzzle/PS_M191.pzl @@ -0,0 +1,16 @@ +[metadata] +Name:Possibility Storm - Magic Core Set 2019 #01 +URL:https://i1.wp.com/www.possibilitystorm.com/wp-content/uploads/2018/07/071.-M191.jpg +Goal:Win +Turns:1 +Difficulty:Uncommon +Description:Win this turn. Your Overwhelming Splendor is attached to your opponent. Start with no cards in either graveyard. +[state] +humanlife=20 +ailife=12 +turn=1 +activeplayer=human +activephase=MAIN1 +humanhand=Switcheroo;Atzocan Archer;Strider Harness;Recollect +humanbattlefield=Overwhelming Splendor|EnchantingPlayer:AI;Daybreak Chaplain;Aggressive Mammoth;Thrashing Brontodon;Sunpetal Grove;Sunpetal Grove;Sunpetal Grove;Sunpetal Grove;Hinterland Harbor;Hinterland Harbor;Hinterland Harbor;Hinterland Harbor +aibattlefield=Hungering Hydra|Id:1|Counters:P1P1=3;Oakenform|Attaching:1;Darigaaz Reincarnated|SummonSick;Glorybringer|SummonSick;Guttersnipe diff --git a/forge-gui/res/puzzle/PS_M192.pzl b/forge-gui/res/puzzle/PS_M192.pzl new file mode 100644 index 00000000000..49db17b8bfc --- /dev/null +++ b/forge-gui/res/puzzle/PS_M192.pzl @@ -0,0 +1,17 @@ +[metadata] +Name:Possibility Storm - Magic Core Set 2019 #02 +URL:https://i1.wp.com/www.possibilitystorm.com/wp-content/uploads/2018/07/072.-M192.jpg +Goal:Win +Turns:1 +Difficulty:Rare +Description:Win this turn. Start with Hidden Herbalists in your graveyard. Assume your opponent has no mana available. +[state] +humanlife=20 +ailife=9 +turn=1 +activeplayer=human +activephase=MAIN1 +humanhand=Cleansing Nova;Renegade Rallier;One With the Wind;Prey Upon +humangraveyard=Hidden Herbalists +humanbattlefield=Benalish Marshal;Valiant Knight;Leonin Warleader;Aerial Guide;Bishop of Rebirth;Sunpetal Grove;Sunpetal Grove;Sunpetal Grove;Sunpetal Grove;Hinterland Harbor;Hinterland Harbor;Hinterland Harbor;Hinterland Harbor +aibattlefield=Sandwurm Convergence;t:Wurm,P:5,T:5,Cost:no cost,Color:G,Types:Creature-Wurm,Keywords:Hexproof,Image:g_5_5_wurm_akh;Shalai, Voice of Plenty|Counters:P1P1=2;Baird, Steward of Argive|Counters:P1P1=2 diff --git a/forge-gui/res/puzzle/PS_M193.pzl b/forge-gui/res/puzzle/PS_M193.pzl new file mode 100644 index 00000000000..0cdf3dc29cd --- /dev/null +++ b/forge-gui/res/puzzle/PS_M193.pzl @@ -0,0 +1,15 @@ +[metadata] +Name:Possibility Storm - Magic Core Set 2019 #03 +URL:https://i2.wp.com/www.possibilitystorm.com/wp-content/uploads/2018/08/073.-M193-1.jpg +Goal:Win +Turns:1 +Difficulty:Rare +Description:Win this turn. +[state] +humanlife=20 +ailife=11 +activeplayer=human +activephase=MAIN1 +humanhand=Metamorphic Alteration;Metamorphic Alteration;Metamorphic Alteration;Strider Harness +humanbattlefield=Thallid Omnivore;Dragon Egg;Slither Blade;Powerstone Shard;Powerstone Shard;Spirebluff Canal;Spirebluff Canal;Spirebluff Canal;Swamp|Set:M19;Swamp|Set:M19;Swamp|Set:M19 +aibattlefield=Hungering Hydra|Counters:P1P1=6;Boggart Brute|Id:1;Cobbled Wings|Attaching:1 diff --git a/forge-gui/res/puzzle/PS_M194.pzl b/forge-gui/res/puzzle/PS_M194.pzl new file mode 100644 index 00000000000..f5530c2064a --- /dev/null +++ b/forge-gui/res/puzzle/PS_M194.pzl @@ -0,0 +1,18 @@ +[metadata] +Name:Possibility Storm - Magic Core Set 2019 #04 +URL:https://i0.wp.com/www.possibilitystorm.com/wp-content/uploads/2018/08/074.-M194.jpg +Goal:Win +Turns:1 +Difficulty:Mythic +Description:Win this turn. Start with no cards in either graveyard. Assume both libraries have many cards, and any drawn are not relevant. +[state] +humanlife=20 +ailife=20 +turn=1 +activeplayer=human +activephase=MAIN1 +humanhand=Sheltering Light;Titanic Growth;Journey to Eternity;Naturalize;Commit // Memory +humanlibrary=Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map +humanbattlefield=Panharmonicon;Desecrated Tomb;Ajani's Welcome;Torrential Gearhulk;Epicure of Blood;Spire of Industry;Spire of Industry;Spire of Industry;Spire of Industry;Swamp|Set:M19;Swamp|Set:M19;Swamp|Set:M19;Swamp|Set:M19;Swamp|Set:M19 +ailibrary=Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map;Treasure Map +aibattlefield=Open the Graves;Child of Night;Death Baron;Skeleton Archer diff --git a/forge-gui/res/puzzle/PS_M195.pzl b/forge-gui/res/puzzle/PS_M195.pzl new file mode 100644 index 00000000000..894190b54e5 --- /dev/null +++ b/forge-gui/res/puzzle/PS_M195.pzl @@ -0,0 +1,15 @@ +[metadata] +Name:Possibility Storm - Magic Core Set 2019 #05 +URL:https://i0.wp.com/www.possibilitystorm.com/wp-content/uploads/2018/08/075.-M195.jpg +Goal:Win +Turns:1 +Difficulty:Rare +Description:Win this turn. Remember that your solution must work for all possible blocking scenarios. +[state] +humanlife=20 +ailife=8 +activeplayer=human +activephase=MAIN1 +humanhand=Arcane Adaptation;Sun-Collared Raptor;Elvish Clancaller;Death Baron;Vizier of Many Faces +humanbattlefield=Forerunner of the Empire;Festering Mummy;Lurching Rotbeast;Ghirapur Guide;Cultivator of Blades;Fetid Pools;Fetid Pools;Fetid Pools;Sheltered Thicket;Sheltered Thicket;Sheltered Thicket +aibattlefield=Carrion Screecher;Glory-Bound Initiate;Benalish Marshal;Audacious Infiltrator;Marauding Boneslasher diff --git a/forge-gui/res/puzzle/PS_M196.pzl b/forge-gui/res/puzzle/PS_M196.pzl new file mode 100644 index 00000000000..fa3b2adffa8 --- /dev/null +++ b/forge-gui/res/puzzle/PS_M196.pzl @@ -0,0 +1,15 @@ +[metadata] +Name:Possibility Storm - Magic Core Set 2019 #06 +URL:https://i1.wp.com/www.possibilitystorm.com/wp-content/uploads/2018/08/076.-M196.jpg +Goal:Win +Turns:1 +Difficulty:Rare +Description:Win this turn. Remember that your solution must work for all possible blocking scenarios. +[state] +humanlife=20 +ailife=9 +activeplayer=human +activephase=MAIN1 +humanhand=Vizier of Many Faces;Thallid Omnivore;Lena, Selfless Champion;Sea Legs +humanbattlefield=Angel of Condemnation;Riddlemaster Sphinx;Majestic Myriarch;Poison-Tip Archer;Fetid Pools;Fetid Pools;Fetid Pools;Concealed Courtyard;Concealed Courtyard;Concealed Courtyard;Hinterland Harbor;Hinterland Harbor +aibattlefield=Tiana, Ship's Caretaker;Drake Haven;t:Drake,P:2,T:2,Cost:no cost,Color:U,Types:Creature-Drake,Keywords:Flying,Image:u_2_2_drake_akh;t:Drake,P:2,T:2,Cost:no cost,Color:U,Types:Creature-Drake,Keywords:Flying,Image:u_2_2_drake_akh;t:Drake,P:2,T:2,Cost:no cost,Color:U,Types:Creature-Drake,Keywords:Flying,Image:u_2_2_drake_akh; diff --git a/forge-gui/res/puzzle/PS_M197.pzl b/forge-gui/res/puzzle/PS_M197.pzl new file mode 100644 index 00000000000..84c6570b96f --- /dev/null +++ b/forge-gui/res/puzzle/PS_M197.pzl @@ -0,0 +1,15 @@ +[metadata] +Name:Possibility Storm - Magic Core Set 2019 #07 +URL:https://i1.wp.com/www.possibilitystorm.com/wp-content/uploads/2018/08/077.-M197.jpg +Goal:Win +Turns:1 +Difficulty:Uncommon +Description:Win this turn. Assume your opponent has no mana available. Remember that your solution must work for all possible blocking scenarios. +[state] +humanlife=20 +ailife=5 +activeplayer=human +activephase=MAIN1 +humanhand=Compulsory Rest;Academy Journeymage;Untamed Hunger;Act of Treason;Emergent Growth +humanbattlefield=Shield Mare;Surge Mare;Plague Mare;Lightning Mare;Vine Mare;Plains|Set:M19;Island|Set:M19;Swamp|Set:M19;Mountain|Set:M19;Forest|Set:M19;Unknown Shores +aibattlefield=Ghirapur Osprey;Ancient Crab;Wretched Camel;Thresher Lizard;Stalking Tiger diff --git a/forge-gui/res/puzzle/PS_M198.pzl b/forge-gui/res/puzzle/PS_M198.pzl new file mode 100644 index 00000000000..d921eb5d520 --- /dev/null +++ b/forge-gui/res/puzzle/PS_M198.pzl @@ -0,0 +1,16 @@ +[metadata] +Name:Possibility Storm - Magic Core Set 2019 #08 +URL:https://i1.wp.com/www.possibilitystorm.com/wp-content/uploads/2018/08/078.-M198.jpg +Goal:Win +Turns:1 +Difficulty:Rare +Description:Win this turn. Assume your opponent has no mana available. Remember that your solution must work for all possible blocking scenarios. +[state] +humanlife=20 +ailife=18 +turn=1 +activeplayer=human +activephase=MAIN1 +humanhand=Gift of Growth;Lifecraft Awakening;Phyrexian Scriptures;Stronghold Confessor;Soul-Scar Mage +humanbattlefield=Imminent Doom|Counters:DOOM=4;Hadana's Climb;Hallar, the Firefletcher|Counters:P1P1=2;Skyrider Patrol;Winding Constrictor;Hinterland Harbor;Hinterland Harbor;Hinterland Harbor;Hinterland Harbor;Forest;Forest;Forest;Canyon Slough;Canyon Slough;Canyon Slough +aibattlefield=Zetalpa, Primal Dawn;Narnam Renegade;Serra Disciple;Majestic Myriarch diff --git a/forge-gui/res/puzzle/PS_M199.pzl b/forge-gui/res/puzzle/PS_M199.pzl new file mode 100644 index 00000000000..6fd370a2d0d --- /dev/null +++ b/forge-gui/res/puzzle/PS_M199.pzl @@ -0,0 +1,19 @@ +[metadata] +Name:Possibility Storm - Magic Core Set 2019 #09 +URL:https://i0.wp.com/www.possibilitystorm.com/wp-content/uploads/2018/09/079.-M199-fixed.jpg +Goal:Win +Turns:1 +Difficulty:Mythic +Description:Win this turn. Each player has 39 cards left in their library. Assume any cards you could draw are irrelevant to the puzzle. Your opponent starts with two cards in hand, and can make 2 mana with Oasis Ritualist. Nezahal is enchanted with your opponent's Desert's Hold. +[state] +humanlife=1 +ailife=50 +turn=1 +activeplayer=human +activephase=MAIN1 +humanhand=Psychic Corrosion;Fateful Showdown;Metamorphic Alteration;Foundry Inspector;Paradoxical Outcome;Mox Amber;Aetherflux Reservoir;Abrade +humanlibrary=One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing +humanbattlefield=Sai, Master Thopterist;Cunning Survivor;Captain Lannery Storm;Mox Amber;Powerstone Shard;Powerstone Shard;Cultivator's Caravan;Spirebluff Canal;Spirebluff Canal;Spirebluff Canal +aihand=Wastes;Wastes +ailibrary=One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing;One with Nothing +aibattlefield=Perpetual Timepiece;Nezahal, Primal Tide|Id:2;Desert's Hold|Attaching:2;Ripjaw Raptor;Oasis Ritualist;Anointer Priest diff --git a/forge-gui/res/quest/precons/Ajani, Wise Counselor.dck b/forge-gui/res/quest/precons/Ajani, Wise Counselor.dck new file mode 100644 index 00000000000..a728faed738 --- /dev/null +++ b/forge-gui/res/quest/precons/Ajani, Wise Counselor.dck @@ -0,0 +1,36 @@ +[shop] +WinsToUnlock=0 +Credits=1099 +MinDifficulty=0 +MaxDifficulty=5 +[metadata] +Name=Ajani, Wise Counselor +Description=A veteran warrior of unmatched skill, Ajani protects the weak and mentors aspiring heroes. Gather battalions of small fighters, bolster their strength, and overwhelm your opponent. +Deck Type=constructed +Set=M19 +Image=ajani_wise_counselor.jpg +[Main] +2 Ajani's Influence|M19 +2 Ajani's Pridemate|M19 +1 Ajani, Wise Counselor+|M19 +2 Cavalry Drillmaster|M19 +3 Court Cleric|M19 +2 Dwarven Priest|M19 +2 Herald of Faith|M19 +1 Inspired Charge|M19 +1 Knight's Pledge|M19 +2 Luminous Bonds|M19 +1 Mentor of the Meek|M19 +1 Meteor Golem|M19 +1 Mighty Leap|M19 +2 Militia Bugler|M19 +2 Oreskos Swiftclaw|M19 +1 Pegasus Courser|M19 +7 Plains|M19|1 +6 Plains|M19|2 +6 Plains|M19|3 +6 Plains|M19|4 +1 Revitalize|M19 +3 Rustwing Falcon|M19 +1 Serra's Guardian|M19 +4 Silverbeak Griffin|M19 diff --git a/forge-gui/res/quest/precons/Core Set 2019 Welcome Deck BG.dck b/forge-gui/res/quest/precons/Core Set 2019 Welcome Deck BG.dck new file mode 100644 index 00000000000..fc921d481c6 --- /dev/null +++ b/forge-gui/res/quest/precons/Core Set 2019 Welcome Deck BG.dck @@ -0,0 +1,50 @@ +[shop] +WinsToUnlock=0 +Credits=999 +MinDifficulty=0 +MaxDifficulty=5 +[metadata] +Name=Core Set 2019 Welcome Deck (BG) +Description=As a black mage, you seek power at any price. Every advantage comes at a cost, and you will sacrifice whatever is necessary to control the forces of death and darkness. Boundless ambition drives you to victory! +Deck Type=constructed +Set=M19 +Image=m19_black.jpg +[Main] +1 Aggressive Mammoth|M19 +1 Bogstomper|M19 +1 Bristling Boar|M19 +1 Centaur Courser|M19 +1 Colossal Dreadmaw|M19 +1 Diregraf Ghoul|M19 +3 Forest|M19|1 +3 Forest|M19|2 +3 Forest|M19|3 +4 Forest|M19|4 +1 Ghastbark Twins|M19 +1 Giant Spider|M19 +1 Grasping Scoundrel|M19 +1 Gravedigger|M19 +1 Gravewaker|M19 +1 Highland Game|M19 +1 Infernal Scarring|M19 +1 Lich's Caress|M19 +2 Llanowar Elves|M19 +1 Murder|M19 +1 Oakenform|M19 +1 Plummet|M19 +1 Rabid Bite|M19 +1 Skeleton Archer|M19 +1 Skymarch Bloodletter|M19 +1 Sovereign's Bite|M19 +2 Strangling Spores|M19 +3 Swamp|M19|1 +3 Swamp|M19|2 +3 Swamp|M19|3 +4 Swamp|M19|4 +1 Tattered Mummy|M19 +1 Thornhide Wolves|M19 +2 Titanic Growth|M19 +1 Ursine Champion|M19 +1 Vampire Sovereign|M19 +2 Walking Corpse|M19 +1 Wall of Vines|M19 diff --git a/forge-gui/res/quest/precons/Core Set 2019 Welcome Deck BR.dck b/forge-gui/res/quest/precons/Core Set 2019 Welcome Deck BR.dck new file mode 100644 index 00000000000..4b48e562264 --- /dev/null +++ b/forge-gui/res/quest/precons/Core Set 2019 Welcome Deck BR.dck @@ -0,0 +1,49 @@ +[shop] +WinsToUnlock=0 +Credits=999 +MinDifficulty=0 +MaxDifficulty=5 +[metadata] +Name=Core Set 2019 Welcome Deck (BR) +Description=As a black mage, you seek power at any price. Every advantage comes at a cost, and you will sacrifice whatever is necessary to control the forces of death and darkness. Boundless ambition drives you to victory! +Deck Type=constructed +Set=M19 +Image=m19_black.jpg +[Main] +1 Bogstomper|M19 +1 Diregraf Ghoul|M19 +1 Electrify|M19 +1 Fiery Finish|M19 +1 Fire Elemental|M19 +1 Goblin Motivator|M19 +1 Grasping Scoundrel|M19 +1 Gravedigger|M19 +1 Gravewaker|M19 +2 Hostile Minotaur|M19 +1 Infernal Scarring|M19 +2 Kargan Dragonrider|M19 +1 Lich's Caress|M19 +1 Lightning Strike|M19 +3 Mountain|M19|1 +3 Mountain|M19|2 +3 Mountain|M19|3 +4 Mountain|M19|4 +1 Murder|M19 +2 Onakke Ogre|M19 +1 Radiating Lightning|M19 +1 Shivan Dragon|M19 +1 Shock|M19 +1 Skeleton Archer|M19 +1 Skymarch Bloodletter|M19 +1 Sovereign's Bite|M19 +1 Sparktongue Dragon|M19 +2 Strangling Spores|M19 +3 Swamp|M19|1 +3 Swamp|M19|2 +3 Swamp|M19|3 +4 Swamp|M19|4 +1 Tattered Mummy|M19 +1 Trumpet Blast|M19 +1 Vampire Sovereign|M19 +1 Volcanic Dragon|M19 +2 Walking Corpse|M19 diff --git a/forge-gui/res/quest/precons/Core Set 2019 Welcome Deck GU.dck b/forge-gui/res/quest/precons/Core Set 2019 Welcome Deck GU.dck new file mode 100644 index 00000000000..144ec65288b --- /dev/null +++ b/forge-gui/res/quest/precons/Core Set 2019 Welcome Deck GU.dck @@ -0,0 +1,48 @@ +[shop] +WinsToUnlock=0 +Credits=999 +MinDifficulty=0 +MaxDifficulty=5 +[metadata] +Name=Core Set 2019 Welcome Deck (GU) +Description=As a green mage, the natural world is at your command - and the power of life itself fuels your magic. Summon enormous beasts to trample your opponents on your way to victory! +Deck Type=constructed +Set=M19 +Image=m19_green.jpg +[Main] +1 Aggressive Mammoth|M19 +1 Air Elemental|M19 +1 Aven Wind Mage|M19 +1 Befuddle|M19 +1 Bristling Boar|M19 +1 Centaur Courser|M19 +1 Colossal Dreadmaw|M19 +2 Divination|M19 +3 Forest|M19|1 +3 Forest|M19|2 +3 Forest|M19|3 +4 Forest|M19|4 +1 Frilled Sea Serpent|M19 +1 Ghastbark Twins|M19 +1 Giant Spider|M19 +1 Highland Game|M19 +3 Island|M19|1 +3 Island|M19|2 +3 Island|M19|3 +4 Island|M19|4 +2 Llanowar Elves|M19 +1 Mist-Cloaked Herald|M19 +1 Oakenform|M19 +1 Plummet|M19 +1 Rabid Bite|M19 +1 Riddlemaster Sphinx|M19 +1 Sleep|M19 +2 Snapping Drake|M19 +1 Thornhide Wolves|M19 +2 Titanic Growth|M19 +2 Tolarian Scholar|M19 +1 Uncomfortable Chill|M19 +1 Ursine Champion|M19 +1 Wall of Mist|M19 +1 Wall of Vines|M19 +2 Waterknot|M19 diff --git a/forge-gui/res/quest/precons/Core Set 2019 Welcome Deck GW.dck b/forge-gui/res/quest/precons/Core Set 2019 Welcome Deck GW.dck new file mode 100644 index 00000000000..5db61aaf8be --- /dev/null +++ b/forge-gui/res/quest/precons/Core Set 2019 Welcome Deck GW.dck @@ -0,0 +1,51 @@ +[shop] +WinsToUnlock=0 +Credits=999 +MinDifficulty=0 +MaxDifficulty=5 +[metadata] +Name=Core Set 2019 Welcome Deck (GW) +Description=As a green mage, the natural world is at your command - and the power of life itself fuels your magic. Summon enormous beasts to trample your opponents on your way to victory! +Deck Type=constructed +Set=M19 +Image=m19_green.jpg +[Main] +1 Aggressive Mammoth|M19 +1 Bristling Boar|M19 +1 Centaur Courser|M19 +1 Colossal Dreadmaw|M19 +1 Dwarven Priest|M19 +3 Forest|M19|1 +3 Forest|M19|2 +3 Forest|M19|3 +4 Forest|M19|4 +1 Ghastbark Twins|M19 +1 Giant Spider|M19 +1 Herald of Faith|M19 +1 Highland Game|M19 +1 Inspired Charge|M19 +1 Knight's Pledge|M19 +2 Llanowar Elves|M19 +2 Loxodon Line Breaker|M19 +1 Luminous Bonds|M19 +1 Mighty Leap|M19 +1 Oakenform|M19 +1 Oreskos Swiftclaw|M19 +1 Pegasus Courser|M19 +3 Plains|M19|1 +3 Plains|M19|2 +3 Plains|M19|3 +4 Plains|M19|4 +1 Plummet|M19 +1 Rabid Bite|M19 +1 Revitalize|M19 +1 Rustwing Falcon|M19 +1 Serra's Guardian|M19 +1 Silverbeak Griffin|M19 +1 Star-Crowned Stag|M19 +1 Sun Sentinel|M19 +1 Take Vengeance|M19 +1 Thornhide Wolves|M19 +2 Titanic Growth|M19 +1 Ursine Champion|M19 +1 Wall of Vines|M19 diff --git a/forge-gui/res/quest/precons/Core Set 2019 Welcome Deck RG.dck b/forge-gui/res/quest/precons/Core Set 2019 Welcome Deck RG.dck new file mode 100644 index 00000000000..f0e086bf262 --- /dev/null +++ b/forge-gui/res/quest/precons/Core Set 2019 Welcome Deck RG.dck @@ -0,0 +1,49 @@ +[shop] +WinsToUnlock=0 +Credits=999 +MinDifficulty=0 +MaxDifficulty=5 +[metadata] +Name=Core Set 2019 Welcome Deck (RG) +Description=As a red mage, you live for freedom. You revel in the chaos of battle, where fire is your weapon and your inspiration - beautiful, powerful, impossible to control. Elemental fury fuels your victory! +Deck Type=constructed +Set=M19 +Image=m19_red.jpg +[Main] +1 Aggressive Mammoth|M19 +1 Bristling Boar|M19 +1 Centaur Courser|M19 +1 Colossal Dreadmaw|M19 +1 Electrify|M19 +1 Fiery Finish|M19 +1 Fire Elemental|M19 +3 Forest|M19|1 +3 Forest|M19|2 +3 Forest|M19|3 +4 Forest|M19|4 +1 Ghastbark Twins|M19 +1 Giant Spider|M19 +1 Goblin Motivator|M19 +1 Highland Game|M19 +2 Hostile Minotaur|M19 +2 Kargan Dragonrider|M19 +1 Lightning Strike|M19 +2 Llanowar Elves|M19 +3 Mountain|M19|1 +3 Mountain|M19|2 +3 Mountain|M19|3 +4 Mountain|M19|4 +1 Oakenform|M19 +2 Onakke Ogre|M19 +1 Plummet|M19 +1 Rabid Bite|M19 +1 Radiating Lightning|M19 +1 Shivan Dragon|M19 +1 Shock|M19 +1 Sparktongue Dragon|M19 +1 Thornhide Wolves|M19 +2 Titanic Growth|M19 +1 Trumpet Blast|M19 +1 Ursine Champion|M19 +1 Volcanic Dragon|M19 +1 Wall of Vines|M19 diff --git a/forge-gui/res/quest/precons/Core Set 2019 Welcome Deck RW.dck b/forge-gui/res/quest/precons/Core Set 2019 Welcome Deck RW.dck new file mode 100644 index 00000000000..edbfa460ff3 --- /dev/null +++ b/forge-gui/res/quest/precons/Core Set 2019 Welcome Deck RW.dck @@ -0,0 +1,50 @@ +[shop] +WinsToUnlock=0 +Credits=999 +MinDifficulty=0 +MaxDifficulty=5 +[metadata] +Name=Core Set 2019 Welcome Deck (RW) +Description=As a red mage, you live for freedom. You revel in the chaos of battle, where fire is your weapon and your inspiration - beautiful, powerful, impossible to control. Elemental fury fuels your victory! +Deck Type=constructed +Set=M19 +Image=m19_red.jpg +[Main] +1 Dwarven Priest|M19 +1 Electrify|M19 +1 Fiery Finish|M19 +1 Fire Elemental|M19 +1 Goblin Motivator|M19 +1 Herald of Faith|M19 +2 Hostile Minotaur|M19 +1 Inspired Charge|M19 +2 Kargan Dragonrider|M19 +1 Knight's Pledge|M19 +1 Lightning Strike|M19 +2 Loxodon Line Breaker|M19 +1 Luminous Bonds|M19 +1 Mighty Leap|M19 +3 Mountain|M19|1 +3 Mountain|M19|2 +3 Mountain|M19|3 +4 Mountain|M19|4 +2 Onakke Ogre|M19 +1 Oreskos Swiftclaw|M19 +1 Pegasus Courser|M19 +3 Plains|M19|1 +3 Plains|M19|2 +3 Plains|M19|3 +4 Plains|M19|4 +1 Radiating Lightning|M19 +1 Revitalize|M19 +1 Rustwing Falcon|M19 +1 Serra's Guardian|M19 +1 Shivan Dragon|M19 +1 Shock|M19 +1 Silverbeak Griffin|M19 +1 Sparktongue Dragon|M19 +1 Star-Crowned Stag|M19 +1 Sun Sentinel|M19 +1 Take Vengeance|M19 +1 Trumpet Blast|M19 +1 Volcanic Dragon|M19 diff --git a/forge-gui/res/quest/precons/Core Set 2019 Welcome Deck UB.dck b/forge-gui/res/quest/precons/Core Set 2019 Welcome Deck UB.dck new file mode 100644 index 00000000000..1bebbc81fda --- /dev/null +++ b/forge-gui/res/quest/precons/Core Set 2019 Welcome Deck UB.dck @@ -0,0 +1,48 @@ +[shop] +WinsToUnlock=0 +Credits=999 +MinDifficulty=0 +MaxDifficulty=5 +[metadata] +Name=Core Set 2019 Welcome Deck (UB) +Description=As a blue mage, your mind is your most powerful weapon. You control the battlefield through illusion, always thinking three steps ahead of your foe. Superior knowledge determines your victory! +Deck Type=constructed +Set=M19 +Image=m19_blue.jpg +[Main] +1 Air Elemental|M19 +1 Aven Wind Mage|M19 +1 Befuddle|M19 +1 Bogstomper|M19 +1 Diregraf Ghoul|M19 +2 Divination|M19 +1 Frilled Sea Serpent|M19 +1 Grasping Scoundrel|M19 +1 Gravedigger|M19 +1 Gravewaker|M19 +1 Infernal Scarring|M19 +3 Island|M19|1 +3 Island|M19|2 +3 Island|M19|3 +4 Island|M19|4 +1 Lich's Caress|M19 +1 Mist-Cloaked Herald|M19 +1 Murder|M19 +1 Riddlemaster Sphinx|M19 +1 Skeleton Archer|M19 +1 Skymarch Bloodletter|M19 +1 Sleep|M19 +2 Snapping Drake|M19 +1 Sovereign's Bite|M19 +2 Strangling Spores|M19 +3 Swamp|M19|1 +3 Swamp|M19|2 +3 Swamp|M19|3 +4 Swamp|M19|4 +1 Tattered Mummy|M19 +2 Tolarian Scholar|M19 +1 Uncomfortable Chill|M19 +1 Vampire Sovereign|M19 +2 Walking Corpse|M19 +1 Wall of Mist|M19 +2 Waterknot|M19 diff --git a/forge-gui/res/quest/precons/Core Set 2019 Welcome Deck UR.dck b/forge-gui/res/quest/precons/Core Set 2019 Welcome Deck UR.dck new file mode 100644 index 00000000000..b03d8c0b52b --- /dev/null +++ b/forge-gui/res/quest/precons/Core Set 2019 Welcome Deck UR.dck @@ -0,0 +1,47 @@ +[shop] +WinsToUnlock=0 +Credits=999 +MinDifficulty=0 +MaxDifficulty=5 +[metadata] +Name=Core Set 2019 Welcome Deck (UR) +Description=As a blue mage, your mind is your most powerful weapon. You control the battlefield through illusion, always thinking three steps ahead of your foe. Superior knowledge determines your victory! +Deck Type=constructed +Set=M19 +Image=m19_blue.jpg +[Main] +1 Air Elemental|M19 +1 Aven Wind Mage|M19 +1 Befuddle|M19 +2 Divination|M19 +1 Electrify|M19 +1 Fiery Finish|M19 +1 Fire Elemental|M19 +1 Frilled Sea Serpent|M19 +1 Goblin Motivator|M19 +2 Hostile Minotaur|M19 +3 Island|M19|1 +3 Island|M19|2 +3 Island|M19|3 +4 Island|M19|4 +2 Kargan Dragonrider|M19 +1 Lightning Strike|M19 +1 Mist-Cloaked Herald|M19 +3 Mountain|M19|1 +3 Mountain|M19|2 +3 Mountain|M19|3 +4 Mountain|M19|4 +2 Onakke Ogre|M19 +1 Radiating Lightning|M19 +1 Riddlemaster Sphinx|M19 +1 Shivan Dragon|M19 +1 Shock|M19 +1 Sleep|M19 +2 Snapping Drake|M19 +1 Sparktongue Dragon|M19 +2 Tolarian Scholar|M19 +1 Trumpet Blast|M19 +1 Uncomfortable Chill|M19 +1 Volcanic Dragon|M19 +1 Wall of Mist|M19 +2 Waterknot|M19 diff --git a/forge-gui/res/quest/precons/Core Set 2019 Welcome Deck WB.dck b/forge-gui/res/quest/precons/Core Set 2019 Welcome Deck WB.dck new file mode 100644 index 00000000000..802b53b330c --- /dev/null +++ b/forge-gui/res/quest/precons/Core Set 2019 Welcome Deck WB.dck @@ -0,0 +1,51 @@ +[shop] +WinsToUnlock=0 +Credits=999 +MinDifficulty=0 +MaxDifficulty=5 +[metadata] +Name=Core Set 2019 Welcome Deck (WB) +Description=As a white mage, you know that true strength lies in cooperation. You command disciplined armies, working as one to overwhelm your enemies. Unity of purpose brings you victory! +Deck Type=constructed +Set=M19 +Image=m19_white.jpg +[Main] +1 Bogstomper|M19 +1 Diregraf Ghoul|M19 +1 Dwarven Priest|M19 +1 Grasping Scoundrel|M19 +1 Gravedigger|M19 +1 Gravewaker|M19 +1 Herald of Faith|M19 +1 Infernal Scarring|M19 +1 Inspired Charge|M19 +1 Knight's Pledge|M19 +1 Lich's Caress|M19 +2 Loxodon Line Breaker|M19 +1 Luminous Bonds|M19 +1 Mighty Leap|M19 +1 Murder|M19 +1 Oreskos Swiftclaw|M19 +1 Pegasus Courser|M19 +3 Plains|M19|1 +3 Plains|M19|2 +3 Plains|M19|3 +4 Plains|M19|4 +1 Revitalize|M19 +1 Rustwing Falcon|M19 +1 Serra's Guardian|M19 +1 Silverbeak Griffin|M19 +1 Skeleton Archer|M19 +1 Skymarch Bloodletter|M19 +1 Sovereign's Bite|M19 +1 Star-Crowned Stag|M19 +2 Strangling Spores|M19 +1 Sun Sentinel|M19 +3 Swamp|M19|1 +3 Swamp|M19|2 +3 Swamp|M19|3 +4 Swamp|M19|4 +1 Take Vengeance|M19 +1 Tattered Mummy|M19 +1 Vampire Sovereign|M19 +2 Walking Corpse|M19 diff --git a/forge-gui/res/quest/precons/Core Set 2019 Welcome Deck WU.dck b/forge-gui/res/quest/precons/Core Set 2019 Welcome Deck WU.dck new file mode 100644 index 00000000000..1b8541c02c1 --- /dev/null +++ b/forge-gui/res/quest/precons/Core Set 2019 Welcome Deck WU.dck @@ -0,0 +1,49 @@ +[shop] +WinsToUnlock=0 +Credits=999 +MinDifficulty=0 +MaxDifficulty=5 +[metadata] +Name=Core Set 2019 Welcome Deck (WU) +Description=As a white mage, you know that true strength lies in cooperation. You command disciplined armies, working as one to overwhelm your enemies. Unity of purpose brings you victory! +Deck Type=constructed +Set=M19 +Image=m19_white.jpg +[Main] +1 Air Elemental|M19 +1 Aven Wind Mage|M19 +1 Befuddle|M19 +2 Divination|M19 +1 Dwarven Priest|M19 +1 Frilled Sea Serpent|M19 +1 Herald of Faith|M19 +1 Inspired Charge|M19 +3 Island|M19|1 +3 Island|M19|2 +3 Island|M19|3 +4 Island|M19|4 +1 Knight's Pledge|M19 +2 Loxodon Line Breaker|M19 +1 Luminous Bonds|M19 +1 Mighty Leap|M19 +1 Mist-Cloaked Herald|M19 +1 Oreskos Swiftclaw|M19 +1 Pegasus Courser|M19 +3 Plains|M19|1 +3 Plains|M19|2 +3 Plains|M19|3 +4 Plains|M19|4 +1 Revitalize|M19 +1 Riddlemaster Sphinx|M19 +1 Rustwing Falcon|M19 +1 Serra's Guardian|M19 +1 Silverbeak Griffin|M19 +1 Sleep|M19 +2 Snapping Drake|M19 +1 Star-Crowned Stag|M19 +1 Sun Sentinel|M19 +1 Take Vengeance|M19 +2 Tolarian Scholar|M19 +1 Uncomfortable Chill|M19 +1 Wall of Mist|M19 +2 Waterknot|M19 diff --git a/forge-gui/res/quest/precons/Jiang Yanggu.dck b/forge-gui/res/quest/precons/Jiang Yanggu.dck new file mode 100644 index 00000000000..28144d64605 --- /dev/null +++ b/forge-gui/res/quest/precons/Jiang Yanggu.dck @@ -0,0 +1,31 @@ +[shop] +WinsToUnlock=0 +Credits=1400 +MinDifficulty=0 +MaxDifficulty=5 +[metadata] +Name=Jiang Yanggu +Description=RG Yanggu deck +Deck Type=constructed +Set=GS1 +Image=jiang_yanggu.jpg +[main] +2 Giant Spider|GS1 +4 Timber Gorge|GS1 +9 Mountain|GS1 +12 Forest|GS1 +1 Jiang Yanggu|GS1 +2 Leopard-Spotted Jiao|GS1 +3 Feiyi Snake|GS1 +3 Sacred White Deer|GS1 +4 Reckless Pangolin|GS1 +3 Ferocious Zheng|GS1 +2 Fire-Omen Crane|GS1 +1 Screeching Phoenix|GS1 +2 Earthshaking Si|GS1 +2 Hardened-Scale Armor|GS1 +2 Breath of Fire|GS1 +2 Aggressive Instinct|GS1 +2 Confidence from Strength|GS1 +2 Journey for the Elixir|GS1 +2 Cleansing Screech|GS1 diff --git a/forge-gui/res/quest/precons/Liliana, the Necromancer.dck b/forge-gui/res/quest/precons/Liliana, the Necromancer.dck new file mode 100644 index 00000000000..8b4c729593b --- /dev/null +++ b/forge-gui/res/quest/precons/Liliana, the Necromancer.dck @@ -0,0 +1,36 @@ +[shop] +WinsToUnlock=0 +Credits=1099 +MinDifficulty=0 +MaxDifficulty=5 +[metadata] +Name=Liliana, the Necromancer +Description=Liliana has mastered death and bends it to her will, defying the laws of nature in pursuit of power. Use her skills to raise an army of undead and drain the lfie from your opponent. +Deck Type=constructed +Set=M19 +Image=liliana_the_necromancer.jpg +[Main] +2 Abnormal Endurance|M19 +3 Arisen Gorgon|M19 +2 Blood Divination|M19 +1 Demon of Catastrophes|M19 +2 Diregraf Ghoul|M19 +1 Gravedigger|M19 +1 Gravewaker|M19 +2 Lich's Caress|M19 +2 Liliana's Spoils|M19 +1 Liliana, the Necromancer+|M19 +1 Meteor Golem|M19 +2 Murder|M19 +1 Reassembling Skeleton|M19 +1 Skeleton Archer|M19 +2 Skymarch Bloodletter|M19 +1 Sovereign's Bite|M19 +1 Strangling Spores|M19 +7 Swamp|M19|1 +7 Swamp|M19|2 +6 Swamp|M19|3 +6 Swamp|M19|4 +4 Tattered Mummy|M19 +2 Vampire Sovereign|M19 +2 Walking Corpse|M19 diff --git a/forge-gui/res/quest/precons/Mu Yanling.dck b/forge-gui/res/quest/precons/Mu Yanling.dck new file mode 100644 index 00000000000..a44fca067ec --- /dev/null +++ b/forge-gui/res/quest/precons/Mu Yanling.dck @@ -0,0 +1,33 @@ +[shop] +WinsToUnlock=0 +Credits=1400 +MinDifficulty=0 +MaxDifficulty=5 +[metadata] +Name=Mu Yanling +Description=WU Yanling deck +Deck Type=constructed +Set=GS1 +Image=mu_yanling.jpg +[main] +2 Welkin Tern|GS1 +2 Brilliant Plan|GS1 +1 Cloak of Mists|GS1 +4 Meandering River|GS1 +9 Plains|GS1 +12 Island|GS1 +1 Mu Yanling|GS1 +2 Colorful Feiyi Sparrow|GS1 +2 Purple-Crystal Crab|GS1 +2 Vivid Flying Fish|GS1 +2 Heavenly Qilin|GS1 +2 Armored Whirl Turtle|GS1 +2 Nine-Tail White Fox|GS1 +2 Earth-Origin Yak|GS1 +3 Moon-Eating Dog|GS1 +2 Stormcloud Spirit|GS1 +1 Ancestor Dragon|GS1 +2 Qilin's Blessing|GS1 +2 Drown in Shapelessness|GS1 +3 Dragon's Presence|GS1 +2 Rhythmic Water Vortex|GS1 diff --git a/forge-gui/res/quest/precons/Sarkhan, Dragonsoul.dck b/forge-gui/res/quest/precons/Sarkhan, Dragonsoul.dck new file mode 100644 index 00000000000..5826e686a0e --- /dev/null +++ b/forge-gui/res/quest/precons/Sarkhan, Dragonsoul.dck @@ -0,0 +1,36 @@ +[shop] +WinsToUnlock=0 +Credits=1099 +MinDifficulty=0 +MaxDifficulty=5 +[metadata] +Name=Sarkhan, Dragonsoul +Description=Sarkhan worships and communes with dragons, taking on their power as his own. Mobilize his mighty draconic forces to incinerate your opponent's defenses and expose them to an aerial attack. +Deck Type=constructed +Set=M19 +Image=sarkhan_dragonsoul.jpg +[Main] +1 Act of Treason|M19 +1 Demanding Dragon|M19 +2 Electrify|M19 +1 Fiery Finish|M19 +2 Goblin Motivator|M19 +1 Hostile Minotaur|M19 +4 Kargan Dragonrider|M19 +2 Lightning Strike|M19 +1 Meteor Golem|M19 +7 Mountain|M19|1 +7 Mountain|M19|2 +6 Mountain|M19|3 +6 Mountain|M19|4 +2 Onakke Ogre|M19 +2 Sarkhan's Dragonfire|M19 +3 Sarkhan's Whelp|M19 +1 Sarkhan, Dragonsoul+|M19 +1 Shivan Dragon|M19 +2 Shock|M19 +2 Sparktongue Dragon|M19 +1 Thud|M19 +1 Trumpet Blast|M19 +2 Viashino Pyromancer|M19 +2 Volcanic Dragon|M19 diff --git a/forge-gui/res/quest/precons/Tezzeret, Cruel Machinist.dck b/forge-gui/res/quest/precons/Tezzeret, Cruel Machinist.dck new file mode 100644 index 00000000000..5bb7e70cbc6 --- /dev/null +++ b/forge-gui/res/quest/precons/Tezzeret, Cruel Machinist.dck @@ -0,0 +1,35 @@ +[shop] +WinsToUnlock=0 +Credits=1099 +MinDifficulty=0 +MaxDifficulty=5 +[metadata] +Name=Tezzeret, Cruel Machinist +Description=Tezzeret uses his ability to manipulate metal to fulfill his dark ambitions. Assemble a host of artifacts and turn them into deadly tools to engineer a cunning victory. +Deck Type=constructed +Set=M19 +Image=tezzeret_cruel_machinist.jpg +[Main] +1 Divination|M19 +3 Dwindle|M19 +1 Exclusion Mage|M19 +2 Field Creeper|M19 +2 Gearsmith Guardian|M19 +2 Gearsmith Prodigy|M19 +7 Island|M19|1 +7 Island|M19|2 +6 Island|M19|3 +6 Island|M19|4 +1 Manalith|M19 +2 Meteor Golem|M19 +1 One with the Machine|M19 +4 Pendulum of Patterns|M19 +1 Riddlemaster Sphinx|M19 +1 Scholar of Stars|M19 +2 Skilled Animator|M19 +2 Skyscanner|M19 +2 Snapping Drake|M19 +2 Tezzeret's Gatebreaker|M19 +3 Tezzeret's Strider|M19 +1 Tezzeret, Cruel Machinist+|M19 +1 Uncomfortable Chill|M19 diff --git a/forge-gui/res/quest/precons/Vivien of the Arkbow.dck b/forge-gui/res/quest/precons/Vivien of the Arkbow.dck new file mode 100644 index 00000000000..45afac30fb4 --- /dev/null +++ b/forge-gui/res/quest/precons/Vivien of the Arkbow.dck @@ -0,0 +1,36 @@ +[shop] +WinsToUnlock=0 +Credits=1099 +MinDifficulty=0 +MaxDifficulty=5 +[metadata] +Name=Vivien of the Arkbow +Description=Vivien is a keen naturalist-- her magical Arkbow preserves the essence of each creature she encounters, allowing her to summon them at need. Master the wilds and crush your opponents with massive creatures. +Deck Type=constructed +Set=M19 +Image=vivien_of_the_arkbow.jpg +[Main] +1 Aggressive Mammoth|M19 +2 Bristling Boar|M19 +2 Colossal Dreadmaw|M19 +1 Colossal Majesty|M19 +1 Declare Dominance|M19 +2 Druid of the Cowl|M19 +2 Elvish Rejuvenator|M19 +7 Forest|M19|1 +7 Forest|M19|2 +6 Forest|M19|3 +6 Forest|M19|4 +1 Ghastbark Twins|M19 +2 Meteor Golem|M19 +1 Oakenform|M19 +1 Pelakka Wurm|M19 +2 Plummet|M19 +2 Rabid Bite|M19 +1 Reclamation Sage|M19 +2 Skalla Wolf|M19 +1 Thornhide Wolves|M19 +2 Titanic Growth|M19 +4 Ursine Champion|M19 +1 Vivien of the Arkbow+|M19 +3 Vivien's Jaguar|M19 diff --git a/forge-gui/res/quest/world/lorwyn/challenges/Demeter.dck b/forge-gui/res/quest/world/lorwyn/challenges/Demeter.dck index 42f262e8f30..46cff21d887 100644 --- a/forge-gui/res/quest/world/lorwyn/challenges/Demeter.dck +++ b/forge-gui/res/quest/world/lorwyn/challenges/Demeter.dck @@ -7,7 +7,7 @@ Wins=35 Card Reward=15% duplicate card;3 rares;33% 1 green rare;33% 1 white rare; 33% Brushland|10E Credit Reward=400 HumanExtras= -AIExtras=Leaf-Crowned Elder|MOR +AIExtras=Leaf-Crowned Elder [metadata] Name=quest5002 diff --git a/forge-gui/res/quest/world/lorwyn/challenges/Dionysus.dck b/forge-gui/res/quest/world/lorwyn/challenges/Dionysus.dck index 7c02bf458e7..25865b1b0a3 100644 --- a/forge-gui/res/quest/world/lorwyn/challenges/Dionysus.dck +++ b/forge-gui/res/quest/world/lorwyn/challenges/Dionysus.dck @@ -7,7 +7,7 @@ Wins=25 Card Reward=3 rares;33% 1 white rare;33% Ajani Goldmane|LRW Credit Reward=200 HumanExtras= -AIExtras=Ajani Goldmane|LRW +AIExtras=Ajani Goldmane [metadata] Name=quest5005 diff --git a/forge-gui/res/quest/world/lorwyn/challenges/Hades.dck b/forge-gui/res/quest/world/lorwyn/challenges/Hades.dck index 0b7a9a8fb70..56d207ed881 100644 --- a/forge-gui/res/quest/world/lorwyn/challenges/Hades.dck +++ b/forge-gui/res/quest/world/lorwyn/challenges/Hades.dck @@ -7,7 +7,7 @@ Wins=40 Card Reward=33% duplicate card;3 rares;33% 1 black rare;33% 1 green rare; 33% Grave Pact|10E Credit Reward=500 HumanExtras= -AIExtras=Grave Pact|10E +AIExtras=Grave Pact [metadata] Name=quest5004 diff --git a/forge-gui/res/quest/world/lorwyn/challenges/Hera.dck b/forge-gui/res/quest/world/lorwyn/challenges/Hera.dck index 2d77de32b41..a801cd7498e 100644 --- a/forge-gui/res/quest/world/lorwyn/challenges/Hera.dck +++ b/forge-gui/res/quest/world/lorwyn/challenges/Hera.dck @@ -7,7 +7,7 @@ Wins=30 Card Reward=3 rares;33% 1 black rare;33% 1 red rare;33% Mutavault|MOR Credit Reward=250 HumanExtras= -AIExtras=Mutavault|MOR +AIExtras=Mutavault [metadata] Name=quest5008 diff --git a/forge-gui/res/quest/world/lorwyn/challenges/Hestia.dck b/forge-gui/res/quest/world/lorwyn/challenges/Hestia.dck index 9d6f865d127..0b7e74bd052 100644 --- a/forge-gui/res/quest/world/lorwyn/challenges/Hestia.dck +++ b/forge-gui/res/quest/world/lorwyn/challenges/Hestia.dck @@ -7,7 +7,7 @@ Wins=25 Card Reward=3 rares;33% 1 white rare;33% 1 green rare;33% Kitchen Finks|SHM Credit Reward=250 HumanExtras= -AIExtras=Heartmender|SHM +AIExtras=Heartmender [metadata] Name=quest5006 diff --git a/forge-gui/res/quest/world/lorwyn/challenges/Phoebes.dck b/forge-gui/res/quest/world/lorwyn/challenges/Phoebes.dck index ad28378bf9c..ba4c6286da9 100644 --- a/forge-gui/res/quest/world/lorwyn/challenges/Phoebes.dck +++ b/forge-gui/res/quest/world/lorwyn/challenges/Phoebes.dck @@ -7,7 +7,7 @@ Wins=30 Card Reward=3 rares;33% 1 black rare;33% 1 white rare;33% Thoughtseize|LRW Credit Reward=250 HumanExtras= -AIExtras=Glorious Anthem|10E +AIExtras=Glorious Anthem [metadata] Name=quest5009 diff --git a/forge-gui/res/quest/world/lorwyn/challenges/Poseidon.dck b/forge-gui/res/quest/world/lorwyn/challenges/Poseidon.dck index 638f54d2513..092f2837317 100644 --- a/forge-gui/res/quest/world/lorwyn/challenges/Poseidon.dck +++ b/forge-gui/res/quest/world/lorwyn/challenges/Poseidon.dck @@ -6,8 +6,8 @@ Repeat=true Wins=25 Card Reward=3 rares;33% 1 blue rare;33% 1 blue rare; 33% Mutavault|MOR Credit Reward=200 -HumanExtras=Cauldron of Souls|LRW -AIExtras=Jace Beleren|LRW +HumanExtras=Cauldron of Souls +AIExtras=Jace Beleren [metadata] Name=quest5003 diff --git a/forge-gui/res/quest/world/lorwyn/challenges/Tisiphone.dck b/forge-gui/res/quest/world/lorwyn/challenges/Tisiphone.dck index 489f9eeae0c..21fc79f5497 100644 --- a/forge-gui/res/quest/world/lorwyn/challenges/Tisiphone.dck +++ b/forge-gui/res/quest/world/lorwyn/challenges/Tisiphone.dck @@ -7,7 +7,7 @@ Wins=30 Card Reward=3 rares;33% 1 black rare;33% 1 red rare;33% Ashenmoor Liege|SHM Credit Reward=250 HumanExtras= -AIExtras=Liliana Vess|LRW +AIExtras=Liliana Vess [metadata] Name=quest5007 diff --git a/forge-gui/res/tokenscripts/b_1_1_bat_flying.txt b/forge-gui/res/tokenscripts/b_1_1_bat_flying.txt new file mode 100644 index 00000000000..e65eb72e78a --- /dev/null +++ b/forge-gui/res/tokenscripts/b_1_1_bat_flying.txt @@ -0,0 +1,7 @@ +Name:Bat +ManaCost:no cost +Types:Creature Bat +Colors:black +PT:1/1 +K:Flying +Oracle:Flying diff --git a/forge-gui/res/tokenscripts/bg_1_1_insect.txt b/forge-gui/res/tokenscripts/bg_1_1_insect.txt new file mode 100644 index 00000000000..844c2077172 --- /dev/null +++ b/forge-gui/res/tokenscripts/bg_1_1_insect.txt @@ -0,0 +1,6 @@ +Name:Insect +ManaCost:no cost +Types:Creature Insect +Colors:black,green +PT:1/1 +Oracle: diff --git a/forge-gui/res/tokenscripts/r_1_1_goblin.txt b/forge-gui/res/tokenscripts/r_1_1_goblin.txt new file mode 100644 index 00000000000..a3a9b86f144 --- /dev/null +++ b/forge-gui/res/tokenscripts/r_1_1_goblin.txt @@ -0,0 +1,6 @@ +Name:Goblin +ManaCost:no cost +Types:Creature Goblin +Colors:red +PT:1/1 +Oracle: diff --git a/forge-gui/res/tokenscripts/u_1_1_bird_illusion_flying.txt b/forge-gui/res/tokenscripts/u_1_1_bird_illusion_flying.txt new file mode 100644 index 00000000000..c9a001ee43c --- /dev/null +++ b/forge-gui/res/tokenscripts/u_1_1_bird_illusion_flying.txt @@ -0,0 +1,7 @@ +Name:Bird Illusion +ManaCost:no cost +Types:Creature Bird Illusion +Colors:blue +PT:1/1 +K:Flying +Oracle:Flying \ No newline at end of file diff --git a/forge-gui/res/tokenscripts/w_1_1_soldier_lifelink.txt b/forge-gui/res/tokenscripts/w_1_1_soldier_lifelink.txt new file mode 100644 index 00000000000..823cb42a3a8 --- /dev/null +++ b/forge-gui/res/tokenscripts/w_1_1_soldier_lifelink.txt @@ -0,0 +1,7 @@ +Name:Soldier +ManaCost:no cost +Types:Creature Soldier +Colors:white +PT:1/1 +K:Lifelink +Oracle:Lifelink \ No newline at end of file diff --git a/forge-gui/res/tokenscripts/wg_2_2_elf_knight_vigilance.txt b/forge-gui/res/tokenscripts/wg_2_2_elf_knight_vigilance.txt new file mode 100644 index 00000000000..eaaee6f4d5f --- /dev/null +++ b/forge-gui/res/tokenscripts/wg_2_2_elf_knight_vigilance.txt @@ -0,0 +1,7 @@ +Name:Elf Knight +ManaCost:no cost +Types:Creature Elf Knight +Colors:white,green +PT:2/2 +K:Vigilance +Oracle:Vigilance \ No newline at end of file diff --git a/forge-gui/src/main/java/forge/card/CardReaderExperiments.java b/forge-gui/src/main/java/forge/card/CardReaderExperiments.java index d0877b739d0..8e355bb9eaf 100644 --- a/forge-gui/src/main/java/forge/card/CardReaderExperiments.java +++ b/forge-gui/src/main/java/forge/card/CardReaderExperiments.java @@ -1,7 +1,6 @@ package forge.card; import forge.CardStorageReader; -import forge.card.CardRules; import forge.properties.ForgeConstants; import forge.util.FileUtil; diff --git a/forge-gui/src/main/java/forge/card/CardScriptInfo.java b/forge-gui/src/main/java/forge/card/CardScriptInfo.java index 549d262d1a9..233bdf96fac 100644 --- a/forge-gui/src/main/java/forge/card/CardScriptInfo.java +++ b/forge-gui/src/main/java/forge/card/CardScriptInfo.java @@ -72,7 +72,7 @@ public final class CardScriptInfo { String[] folders = { String.valueOf(filename.charAt(0)), "upcoming"}; for(String folder : folders){ - final File file = new File(ForgeConstants.CARD_DATA_DIR + filename.charAt(0) + File.separator + filename); + final File file = new File(ForgeConstants.CARD_DATA_DIR + folder + File.separator + filename); if (file.exists()) { script = new CardScriptInfo(FileUtil.readFileToString(file), file); allScripts.put(name, script); diff --git a/forge-gui/src/main/java/forge/card/CardScriptParser.java b/forge-gui/src/main/java/forge/card/CardScriptParser.java index 67917a28104..a62037712cc 100644 --- a/forge-gui/src/main/java/forge/card/CardScriptParser.java +++ b/forge-gui/src/main/java/forge/card/CardScriptParser.java @@ -399,8 +399,8 @@ public final class CardScriptParser { "Green", "nonWhite", "nonBlue", "nonBlack", "nonRed", "nonGreen", "Colorless", "nonColorless", "Multicolor", "nonMulticolor", "Monocolor", "nonMonocolor", "ChosenColor", "AllChosenColors", - "AnyChosenColor", "DoubleFaced", "Flip", "YouCtrl", "YouDontCtrl", - "OppCtrl", "ChosenCtrl", "DefenderCtrl", + "AnyChosenColor", "DoubleFaced", "Flip", "YouCtrl", "YourTeamCtrl", + "YouDontCtrl", "OppCtrl", "ChosenCtrl", "DefenderCtrl", "DefenderCtrlForRemembered", "DefendingPlayerCtrl", "EnchantedPlayerCtrl", "EnchantedControllerCtrl", "RememberedPlayer", "RememberedPlayerCtrl", diff --git a/forge-gui/src/main/java/forge/deck/ArchetypeDeckGenerator.java b/forge-gui/src/main/java/forge/deck/ArchetypeDeckGenerator.java new file mode 100644 index 00000000000..74aefb8da64 --- /dev/null +++ b/forge-gui/src/main/java/forge/deck/ArchetypeDeckGenerator.java @@ -0,0 +1,92 @@ +package forge.deck; + +import forge.card.CardEdition; +import forge.deck.io.Archetype; +import forge.game.GameFormat; +import forge.item.PaperCard; +import forge.model.FModel; +import org.apache.commons.lang3.tuple.Pair; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by maustin on 09/05/2017. + */ +public class ArchetypeDeckGenerator extends DeckProxy implements Comparable { + public static List getMatrixDecks(GameFormat format, boolean isForAi){ + final List decks = new ArrayList(); + for(Archetype archetype: CardArchetypeLDAGenerator.ldaArchetypes.get(format.getName())) { + decks.add(new ArchetypeDeckGenerator(archetype, format, isForAi)); + } + + return decks; + } + private final Archetype archetype; + private final int index; + private final GameFormat format; + private final boolean isForAi; + private PaperCard card; + + + private ArchetypeDeckGenerator(Archetype archetype0, GameFormat format0, boolean isForAi0) { + super(); + archetype = archetype0; + index = 0; + format=format0; + isForAi=isForAi0; + for(Pair cardPair : archetype.getCardProbabilities()){ + PaperCard candidate = FModel.getMagicDb().getCommonCards().getUniqueByName(cardPair.getLeft()); + if(!candidate.getRules().getType().isLand()){ + card = candidate; + break; + } + } + } + + public CardEdition getEdition() { + return CardEdition.UNKNOWN; + } + + + @Override + public String getName() { + return archetype.getName(); + } + + @Override + public String toString() { + return archetype.getName(); + } + + public Archetype getArchetype() { + return archetype; + } + + @Override + public int compareTo(final ArchetypeDeckGenerator d) { + return d.getArchetype().getDeckCount().compareTo(archetype.getDeckCount()); + } + + @Override + public Deck getDeck() { + + return DeckgenUtil.buildLDACArchetypeDeck(archetype,format,isForAi); + } + + @Override + public boolean isGeneratedDeck() { + return true; + } + + public String getImageKey(boolean altState) { +/* Predicate cardFilter = Predicates.and(format.getFilterPrinted(),PaperCard.Predicates.name(name)); + List cards=FModel.getMagicDb().getCommonCards().getAllCards(cardFilter); + return cards.get(cards.size()-1).getImageKey(altState);*/ + return card.getImageKey(altState); + } + + public PaperCard getPaperCard(){ + return card; + } +} diff --git a/forge-gui/src/main/java/forge/deck/CardArchetypeLDAGenerator.java b/forge-gui/src/main/java/forge/deck/CardArchetypeLDAGenerator.java index b71b9dee6ad..1d38d76c8ac 100644 --- a/forge-gui/src/main/java/forge/deck/CardArchetypeLDAGenerator.java +++ b/forge-gui/src/main/java/forge/deck/CardArchetypeLDAGenerator.java @@ -1,12 +1,11 @@ package forge.deck; import forge.StaticData; +import forge.deck.io.Archetype; import forge.deck.io.CardThemedLDAIO; -import forge.game.GameFormat; import forge.model.FModel; import org.apache.commons.lang3.tuple.Pair; -import java.io.File; import java.util.*; /** @@ -15,12 +14,15 @@ import java.util.*; public final class CardArchetypeLDAGenerator { public static Map>>>> ldaPools = new HashMap(); + public static Map> ldaArchetypes = new HashMap<>(); public static boolean initialize(){ List formatStrings = new ArrayList<>(); formatStrings.add(FModel.getFormats().getStandard().getName()); formatStrings.add(FModel.getFormats().getModern().getName()); + formatStrings.add("Legacy"); + formatStrings.add("Vintage"); for (String formatString : formatStrings){ if(!initializeFormat(formatString)){ @@ -33,10 +35,10 @@ public final class CardArchetypeLDAGenerator { /** Try to load matrix .dat files, otherwise check for deck folders and build .dat, otherwise return false **/ public static boolean initializeFormat(String format){ + List lda = CardThemedLDAIO.loadRawLDA(format); Map>>> formatMap = CardThemedLDAIO.loadLDA(format); if(formatMap==null) { try { - List>> lda = CardThemedLDAIO.loadRawLDA(format); formatMap = loadFormat(lda); CardThemedLDAIO.saveLDA(format, formatMap); }catch (Exception e){ @@ -45,17 +47,33 @@ public final class CardArchetypeLDAGenerator { } } ldaPools.put(format, formatMap); + ldaArchetypes.put(format, pruneArchetypes(lda)); return true; } - public static Map>>> loadFormat(List>> lda) throws Exception{ + public static List pruneArchetypes(List archetypes){ + List pruned = new ArrayList<>(); + float deckCount=0; + for(Archetype archetype : archetypes){ + deckCount = deckCount + archetype.getDeckCount(); + } + for(Archetype archetype : archetypes){ + float metaPercent = archetype.getDeckCount().floatValue()/deckCount; + if( metaPercent > 0.001 ){ + pruned.add(archetype); + } + } + return pruned; + } + + public static Map>>> loadFormat(List lda) throws Exception{ List>> topics = new ArrayList<>(); Set cards = new HashSet(); for (int t = 0; t < lda.size(); ++t) { List> topic = new ArrayList<>(); Set topicCards = new HashSet<>(); - List> highRankVocabs = lda.get(t); + List> highRankVocabs = lda.get(t).getCardProbabilities(); if (highRankVocabs.get(0).getRight()<=0.01d){ continue; } diff --git a/forge-gui/src/main/java/forge/deck/CardRelationMatrixGenerator.java b/forge-gui/src/main/java/forge/deck/CardRelationMatrixGenerator.java index 41de3695fcb..440b6d3950f 100644 --- a/forge-gui/src/main/java/forge/deck/CardRelationMatrixGenerator.java +++ b/forge-gui/src/main/java/forge/deck/CardRelationMatrixGenerator.java @@ -6,7 +6,6 @@ import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import forge.card.CardRules; import forge.card.CardRulesPredicates; -import forge.deck.io.CardThemedLDAIO; import forge.deck.io.CardThemedMatrixIO; import forge.deck.io.DeckStorage; import forge.game.GameFormat; diff --git a/forge-gui/src/main/java/forge/deck/DeckGeneratorTheme.java b/forge-gui/src/main/java/forge/deck/DeckGeneratorTheme.java index 7b49a832d34..f58b986ac60 100644 --- a/forge-gui/src/main/java/forge/deck/DeckGeneratorTheme.java +++ b/forge-gui/src/main/java/forge/deck/DeckGeneratorTheme.java @@ -17,7 +17,6 @@ */ package forge.deck; -import forge.deck.CardPool; import forge.deck.generation.DeckGeneratorBase; import forge.deck.generation.IDeckGenPool; import forge.properties.ForgeConstants; diff --git a/forge-gui/src/main/java/forge/deck/DeckImportController.java b/forge-gui/src/main/java/forge/deck/DeckImportController.java index beec7180558..217115efe5a 100644 --- a/forge-gui/src/main/java/forge/deck/DeckImportController.java +++ b/forge-gui/src/main/java/forge/deck/DeckImportController.java @@ -5,6 +5,7 @@ import java.util.ArrayList; import java.util.Calendar; import java.util.List; +import org.apache.commons.lang3.NotImplementedException; import org.apache.commons.lang3.StringUtils; import forge.interfaces.ICheckBox; @@ -71,22 +72,43 @@ public class DeckImportController { } final Deck result = new Deck(); - boolean isMain = true; + DeckSection deckSection = DeckSection.Main; + String section = ""; for (final DeckRecognizer.Token t : tokens) { final DeckRecognizer.TokenType type = t.getType(); - if ((type == DeckRecognizer.TokenType.SectionName) && t.getText().toLowerCase().contains("side")) { - isMain = false; + if (type == DeckRecognizer.TokenType.SectionName) { + section = t.getText().toLowerCase(); + // can't use wildcards in switch/case, so if/else it is + if (section.startsWith("main")) { + deckSection = DeckSection.Main; + } + else if (section.startsWith("side")) { + deckSection = DeckSection.Sideboard; + } + else if (section.startsWith("commander")) { + deckSection = DeckSection.Commander; + } + else if (section.startsWith("avatar")) { + deckSection = DeckSection.Avatar; + } + else if (section.startsWith("planes")) { + deckSection = DeckSection.Planes; + } + else if (section.startsWith("scheme")) { + deckSection = DeckSection.Schemes; + } + else if (section.startsWith("conspiracy")) { + deckSection = DeckSection.Conspiracy; + } + else { + throw new NotImplementedException("Unexpected section: %s", t.getText()); + } } if (type != DeckRecognizer.TokenType.KnownCard) { continue; } final PaperCard crd = t.getCard(); - if (isMain) { - result.getMain().add(crd, t.getNumber()); - } - else { - result.getOrCreate(DeckSection.Sideboard).add(crd, t.getNumber()); - } + result.getOrCreate(deckSection).add(crd, t.getNumber()); } return result; } diff --git a/forge-gui/src/main/java/forge/deck/DeckType.java b/forge-gui/src/main/java/forge/deck/DeckType.java index 072fbbb88d6..1d8f6995276 100644 --- a/forge-gui/src/main/java/forge/deck/DeckType.java +++ b/forge-gui/src/main/java/forge/deck/DeckType.java @@ -17,8 +17,10 @@ public enum DeckType { PRECONSTRUCTED_DECK("Preconstructed Decks"), QUEST_OPPONENT_DECK ("Quest Opponent Decks"), COLOR_DECK ("Random Color Decks"), - STANDARD_CARDGEN_DECK ("Random Standard Card-themed Decks"), - MODERN_CARDGEN_DECK ("Random Modern Card-themed Decks"), + STANDARD_CARDGEN_DECK ("Random Standard Archetype Decks"), + MODERN_CARDGEN_DECK ("Random Modern Archetype Decks"), + LEGACY_CARDGEN_DECK ("Random Legacy Archetype Decks"), + VINTAGE_CARDGEN_DECK ("Random Vintage Archetype Decks"), STANDARD_COLOR_DECK ("Random Standard Color Decks"), MODERN_COLOR_DECK ("Random Modern Color Decks"), THEME_DECK ("Random Theme Decks"), @@ -36,9 +38,11 @@ public enum DeckType { DeckType.PRECONSTRUCTED_DECK, DeckType.QUEST_OPPONENT_DECK, DeckType.COLOR_DECK, - DeckType.STANDARD_COLOR_DECK, DeckType.STANDARD_CARDGEN_DECK, DeckType.MODERN_CARDGEN_DECK, + DeckType.LEGACY_CARDGEN_DECK, + DeckType.VINTAGE_CARDGEN_DECK, + DeckType.STANDARD_COLOR_DECK, DeckType.MODERN_COLOR_DECK, DeckType.THEME_DECK, DeckType.RANDOM_DECK, diff --git a/forge-gui/src/main/java/forge/deck/DeckgenUtil.java b/forge-gui/src/main/java/forge/deck/DeckgenUtil.java index d3b2ce719f4..f1854cb2ea6 100644 --- a/forge-gui/src/main/java/forge/deck/DeckgenUtil.java +++ b/forge-gui/src/main/java/forge/deck/DeckgenUtil.java @@ -13,10 +13,12 @@ import forge.card.ColorSet; import forge.card.mana.ManaCost; import forge.card.mana.ManaCostShard; import forge.deck.generation.*; +import forge.deck.io.Archetype; import forge.game.GameFormat; import forge.game.GameType; import forge.item.PaperCard; import forge.itemmanager.IItemManager; +import forge.limited.ArchetypeDeckBuilder; import forge.limited.CardThemedCommanderDeckBuilder; import forge.limited.CardThemedConquestDeckBuilder; import forge.limited.CardThemedDeckBuilder; @@ -33,7 +35,6 @@ import forge.util.gui.SOptionPane; import forge.util.storage.IStorage; import org.apache.commons.lang3.tuple.Pair; -import java.awt.print.Paper; import java.util.*; /** @@ -70,48 +71,6 @@ public class DeckgenUtil { } } - /** - * Take two lists of cards with counts of each and combine the second into the first by adding a mean normalized fraction - * of the count in the second list to the first list. - * @param cards1 - * @param cards2 - */ - public static void combineDistances(List> cards1,List> cards2){ - Float secondListWeighting=0.4f; - Integer maxDistance=0; - for (Map.Entry pair1:cards1){ - maxDistance=maxDistance+pair1.getValue(); - } - maxDistance=maxDistance/cards1.size(); - Integer maxDistance2=0; - for (Map.Entry pair2:cards2){ - maxDistance2=maxDistance2+pair2.getValue(); - } - maxDistance2=maxDistance2/cards2.size(); - for (Map.Entry pair2:cards2){ - boolean isCardPresent=false; - for (Map.Entry pair1:cards1){ - if (pair1.getKey().equals(pair2.getKey())){ - pair1.setValue(pair1.getValue()+new Float((pair2.getValue()*secondListWeighting*maxDistance/maxDistance2)).intValue()); - isCardPresent=true; - break; - } - } - if(!isCardPresent){ - Map.Entry newEntry=new AbstractMap.SimpleEntry(pair2.getKey(),new Float((pair2.getValue()*0.4*maxDistance/maxDistance2)).intValue()); - cards1.add(newEntry); - } - } - } - - public static class CardDistanceComparator implements Comparator> - { - @Override - public int compare(Map.Entry index1, Map.Entry index2) - { - return index1.getValue().compareTo(index2.getValue()); - } - } public static Deck buildPlanarConquestDeck(PaperCard card, GameFormat format, DeckFormat deckFormat){ return buildPlanarConquestDeck(card, null, format, deckFormat, false); @@ -239,11 +198,11 @@ public class DeckgenUtil { if(deck.getMain().countAll()!=60){ System.out.println(deck.getMain().countAll()); System.out.println("Wrong card count "+deck.getMain().countAll()); - deck=buildCardGenDeck(format,isForAI); + deck=buildLDACArchetypeDeck(format,isForAI); } if(deck.getMain().countAll(Predicates.compose(CardRulesPredicates.Presets.IS_LAND, PaperCard.FN_GET_RULES))>27){ System.out.println("Too many lands "+deck.getMain().countAll(Predicates.compose(CardRulesPredicates.Presets.IS_LAND, PaperCard.FN_GET_RULES))); - deck=buildCardGenDeck(format,isForAI); + deck=buildLDACArchetypeDeck(format,isForAI); } while(deck.get(DeckSection.Sideboard).countAll()>15){ deck.get(DeckSection.Sideboard).remove(deck.get(DeckSection.Sideboard).get(0)); @@ -251,6 +210,109 @@ public class DeckgenUtil { return deck; } + + + public static Deck buildLDACArchetypeDeck(GameFormat format, boolean isForAI){ + List keys = new ArrayList<>(CardArchetypeLDAGenerator.ldaArchetypes.get(format.getName())); + Archetype randomKey = keys.get( MyRandom.getRandom().nextInt(keys.size()) ); + return buildLDACArchetypeDeck(randomKey,format,isForAI); + } + + + /** + * Build a deck based on the chosen card. + * + * @param archetype + * @param format + * @param isForAI + * @return + */ + public static Deck buildLDACArchetypeDeck(Archetype archetype, GameFormat format, boolean isForAI){ + List> preSelectedCardNames = archetype.getCardProbabilities(); + PaperCard card = null; + for(Pair pair : preSelectedCardNames){ + card = StaticData.instance().getCommonCards().getUniqueByName(pair.getLeft()); + if(card != null &&!card.getRules().getType().isLand()){ + break; + } + } + List selectedCards = new ArrayList<>(); + int cardCount=0; + for(Pair pair:preSelectedCardNames){ + String name = pair.getLeft(); + PaperCard cardToAdd = StaticData.instance().getCommonCards().getUniqueByName(name); + //for(int i=0; i<1;++i) { + if(cardToAdd != null && !cardToAdd.getName().equals(card.getName())) { + selectedCards.add(cardToAdd); + cardCount++; + } + if(cardCount>120){// no need to have more than this + break; + } + //} + } + + List toRemove = new ArrayList<>(); + + //randomly remove cards + int removeCount=0; + int i=0; + for(PaperCard c:selectedCards){ + if( i > 4 && MyRandom.getRandom().nextInt(100)>70+(15-(i/selectedCards.size())*selectedCards.size()) && removeCount<4 //randomly remove some cards - more likely as distance increases + &&!c.getName().contains("Urza")){ //avoid breaking Tron decks + toRemove.add(c); + removeCount++; + } + if(c.getName().equals(card.getName())){//may have been added in secondary list + toRemove.add(c); + } + ++i; + } + selectedCards.removeAll(toRemove); + //Add keycard + List playsetList = new ArrayList<>(); + int keyCardCount=4; + if(card.getRules().getMainPart().getManaCost().getCMC()>7){ + keyCardCount=1+MyRandom.getRandom().nextInt(4); + }else if(card.getRules().getMainPart().getManaCost().getCMC()>5){ + keyCardCount=2+MyRandom.getRandom().nextInt(3); + } + for(int j=0;j restrictedCardsAdded = new ArrayList<>(); + for (PaperCard c:selectedCards){ + if (format.getRestrictedCards().contains(c.getName())&&!restrictedCardsAdded.contains(c)){ + playsetList.add(c); + restrictedCardsAdded.add(c.getName()); + continue; + } + for(int j=0;j<4;++j) { + if(MyRandom.getRandom().nextInt(100)<90) { + playsetList.add(c); + } + } + } + + //build deck from combined list + ArchetypeDeckBuilder dBuilder = new ArchetypeDeckBuilder(archetype, card, playsetList,format,isForAI); + Deck deck = dBuilder.buildDeck(); + if(deck.getMain().countAll()!=60){ + System.out.println(deck.getMain().countAll()); + System.out.println("Wrong card count "+deck.getMain().countAll()); + deck=buildLDACArchetypeDeck(format,isForAI); + } + if(deck.getMain().countAll(Predicates.compose(CardRulesPredicates.Presets.IS_LAND, PaperCard.FN_GET_RULES))>27){ + System.out.println("Too many lands "+deck.getMain().countAll(Predicates.compose(CardRulesPredicates.Presets.IS_LAND, PaperCard.FN_GET_RULES))); + deck=buildLDACArchetypeDeck(format,isForAI); + } + while(deck.get(DeckSection.Sideboard).countAll()>15){ + deck.get(DeckSection.Sideboard).remove(deck.get(DeckSection.Sideboard).get(0)); + } + return deck; + } + + /** * @param selection {@link java.lang.String} array * @return {@link forge.deck.Deck} diff --git a/forge-gui/src/main/java/forge/deck/RandomDeckGenerator.java b/forge-gui/src/main/java/forge/deck/RandomDeckGenerator.java index 7efa871b472..5b377c50d53 100644 --- a/forge-gui/src/main/java/forge/deck/RandomDeckGenerator.java +++ b/forge-gui/src/main/java/forge/deck/RandomDeckGenerator.java @@ -101,9 +101,13 @@ public class RandomDeckGenerator extends DeckProxy implements Comparable(); count = Aggregates.randomInt(1, 3); diff --git a/forge-gui/src/main/java/forge/deck/io/Archetype.java b/forge-gui/src/main/java/forge/deck/io/Archetype.java new file mode 100644 index 00000000000..5dc74575ee7 --- /dev/null +++ b/forge-gui/src/main/java/forge/deck/io/Archetype.java @@ -0,0 +1,63 @@ +package forge.deck.io; + +import org.apache.commons.lang3.tuple.Pair; + +import java.io.Serializable; +import java.util.List; + +public class Archetype implements Serializable { + + static final long serialVersionUID = 1733769383530140352L; + + private List> cardProbabilities; + private String name; + private Integer deckCount; + + public Archetype(List> cardProbabilities, String name, Integer deckCount){ + this.cardProbabilities = cardProbabilities; + this.name = name; + this.deckCount = deckCount; + } + + public List> getCardProbabilities() { + return cardProbabilities; + } + + public void setCardProbabilities(List> cardProbabilities) { + this.cardProbabilities = cardProbabilities; + } + + public String getName() { + return titleize(name); + /*//Debug: + return getDeckCount() + "-" + getCardProbabilities().get(0).getRight().toString().substring(0,4) + + "-" + titleize(name) + "-" + getCardProbabilities().get(0).getLeft();*/ + } + + public void setName(String name) { + this.name = name; + } + + public Integer getDeckCount() { + return deckCount; + } + + public void setDeckCount(Integer deckCount) { + this.deckCount = deckCount; + } + + public static String titleize(final String input) { + final StringBuilder output = new StringBuilder(input.length()); + boolean lastCharacterWasWhitespace = true; + + for (final char currentCharacter : input.toCharArray()) { + if (lastCharacterWasWhitespace) { + output.append(Character.toTitleCase(currentCharacter)); + } else { + output.append(currentCharacter); + } + lastCharacterWasWhitespace = Character.isWhitespace(currentCharacter); + } + return output.toString(); + } +} diff --git a/forge-gui/src/main/java/forge/deck/io/CardThemedLDAIO.java b/forge-gui/src/main/java/forge/deck/io/CardThemedLDAIO.java index ad711e78a26..75257a9a78d 100644 --- a/forge-gui/src/main/java/forge/deck/io/CardThemedLDAIO.java +++ b/forge-gui/src/main/java/forge/deck/io/CardThemedLDAIO.java @@ -1,12 +1,10 @@ package forge.deck.io; import forge.game.GameFormat; -import forge.item.PaperCard; import forge.properties.ForgeConstants; import org.apache.commons.lang3.tuple.Pair; import java.io.*; -import java.util.HashMap; import java.util.List; import java.util.Map; @@ -19,7 +17,7 @@ public class CardThemedLDAIO { public static final String SUFFIX_DATA = ".lda.dat"; public static final String RAW_SUFFIX_DATA = ".raw.dat"; - public static void saveRawLDA(String format, List>> lda){ + public static void saveRawLDA(String format, List lda){ File file = getRAWLDAFile(format); ObjectOutputStream s = null; try { @@ -40,11 +38,11 @@ public class CardThemedLDAIO { } } - public static List>> loadRawLDA(String format){ + public static List loadRawLDA(String format){ try { FileInputStream fin = new FileInputStream(getRAWLDAFile(format)); ObjectInputStream s = new ObjectInputStream(fin); - List>> matrix = (List>>) s.readObject(); + List matrix = (List) s.readObject(); s.close(); return matrix; }catch (Exception e){ diff --git a/forge-gui/src/main/java/forge/deck/io/DeckPreferences.java b/forge-gui/src/main/java/forge/deck/io/DeckPreferences.java index 6835b55fea3..83cf46e770b 100644 --- a/forge-gui/src/main/java/forge/deck/io/DeckPreferences.java +++ b/forge-gui/src/main/java/forge/deck/io/DeckPreferences.java @@ -118,6 +118,7 @@ public class DeckPreferences { draftDeck = root.getAttribute("draftDeck"); sealedDeck = root.getAttribute("sealedDeck"); commanderDeck = root.getAttribute("commanderDeck"); + brawlDeck = root.getAttribute("brawlDeck"); tinyLeadersDeck = root.getAttribute("tinyLeadersDeck"); planarDeck = root.getAttribute("planarDeck"); schemeDeck = root.getAttribute("schemeDeck"); @@ -148,6 +149,7 @@ public class DeckPreferences { root.setAttribute("draftDeck", draftDeck); root.setAttribute("sealedDeck", sealedDeck); root.setAttribute("commanderDeck", commanderDeck); + root.setAttribute("brawlDeck", brawlDeck); root.setAttribute("tinyLeadersDeck", tinyLeadersDeck); root.setAttribute("planarDeck", planarDeck); root.setAttribute("schemeDeck", schemeDeck); diff --git a/forge-gui/src/main/java/forge/download/GuiDownloadSetPicturesLQ.java b/forge-gui/src/main/java/forge/download/GuiDownloadSetPicturesLQ.java index b5ce44df1cb..db8c95d195a 100644 --- a/forge-gui/src/main/java/forge/download/GuiDownloadSetPicturesLQ.java +++ b/forge-gui/src/main/java/forge/download/GuiDownloadSetPicturesLQ.java @@ -76,6 +76,8 @@ public class GuiDownloadSetPicturesLQ extends GuiDownloadService { // Add missing tokens to the list of things to download. addMissingItems(downloads, ForgeConstants.IMAGE_LIST_TOKENS_FILE, ForgeConstants.CACHE_TOKEN_PICS_DIR); + // TODO Add TokenScript images via Editions files? + return downloads; } diff --git a/forge-gui/src/main/java/forge/download/GuiDownloadZipService.java b/forge-gui/src/main/java/forge/download/GuiDownloadZipService.java index 3d1e11ace8a..70537c1bcc7 100644 --- a/forge-gui/src/main/java/forge/download/GuiDownloadZipService.java +++ b/forge-gui/src/main/java/forge/download/GuiDownloadZipService.java @@ -69,6 +69,7 @@ public class GuiDownloadZipService extends GuiDownloadService { public void downloadAndUnzip() { filesExtracted = 0; + String zipFilename = download("temp.zip"); if (zipFilename == null) { return; } @@ -109,7 +110,7 @@ public class GuiDownloadZipService extends GuiDownloadService { try { final ZipEntry entry = entries.nextElement(); - final String path = destFolder + entry.getName(); + final String path = destFolder + File.separator + entry.getName(); if (entry.isDirectory()) { new File(path).mkdir(); progressBar.setValue(++count); @@ -198,6 +199,7 @@ public class GuiDownloadZipService extends GuiDownloadService { new File(destFile).delete(); return null; } + return destFile; } catch (final Exception ex) { diff --git a/forge-gui/src/main/java/forge/error/BugReporter.java b/forge-gui/src/main/java/forge/error/BugReporter.java index d44510b7343..05614e7ff42 100644 --- a/forge-gui/src/main/java/forge/error/BugReporter.java +++ b/forge-gui/src/main/java/forge/error/BugReporter.java @@ -26,8 +26,11 @@ import java.io.StringWriter; import forge.FThreads; import forge.GuiBase; -import forge.util.BuildInfo; +import forge.model.FModel; +import forge.properties.ForgePreferences; import forge.util.gui.SOptionPane; +import io.sentry.Sentry; +import io.sentry.event.BreadcrumbBuilder; /** * The class ErrorViewer. Enables showing and saving error messages that @@ -41,27 +44,13 @@ public class BugReporter { public static final String REPORT = "Report"; public static final String SAVE = "Save"; - public static final String CONTINUE = "Continue"; + public static final String DISCARD = "Discard"; public static final String EXIT = "Exit"; + public static final String SENTRY = "Submit bug reports automatically"; - public static final String HELP_TEXT = String.format( - "A template for a post in the bug reports forum topic is shown below. Just select '%s' " - + "and the template will be copied to your system clipboard and the forum page will open in your browser. " - + "Then all you have to do is paste the text into a forum post and edit the description line.", REPORT); - public static final String HELP_URL_LABEL = - "Reporting bugs in Forge is very important. We sincerely thank you for your time." - + " For help writing a solid bug report, please see:"; - public static final String HELP_URL = - "http://www.slightlymagic.net/forum/viewtopic.php?f=26&p=109925#p109925"; - private static final String FORUM_URL; + private static Throwable exception; + private static String message; - static { - if (BuildInfo.isDevelopmentVersion()) { - FORUM_URL = "http://www.slightlymagic.net/forum/viewtopic.php?f=52&t=6333&start=54564487645#bottom"; - } else { - FORUM_URL = "http://www.slightlymagic.net/forum/viewforum.php?f=26"; - } - } /** * Shows exception information in a format ready to post to the forum as a @@ -72,6 +61,7 @@ public class BugReporter { if (ex == null) { return; } + exception = ex; if (message != null) { System.err.printf("%s > %s%n", FThreads.debugGetCurrThreadId(), message); } @@ -79,10 +69,10 @@ public class BugReporter { ex.printStackTrace(); final StringBuilder sb = new StringBuilder(); - sb.append("Description: [describe what you were doing when the crash occurred]\n\n"); - buildSpoilerHeader(sb, ex.getClass().getSimpleName()); - sb.append("\n\n"); if (null != message && !message.isEmpty()) { + Sentry.getContext().recordBreadcrumb( + new BreadcrumbBuilder().setMessage(message).build() + ); sb.append(FThreads.debugGetCurrThreadId()).append(" > ").append(message).append("\n"); } @@ -100,12 +90,16 @@ public class BugReporter { else { sb.append(swStr); } - - buildSpoilerFooter(sb); - - GuiBase.getInterface().showBugReportDialog("Report a crash", sb.toString(), true); + if (isSentryEnabled()) { + sendSentry(); + } else { + GuiBase.getInterface().showBugReportDialog("Report a crash", sb.toString(), true); + } } + private static boolean isSentryEnabled() { + return FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.USE_SENTRY); + } /** * Alias for reportException(ex, null). */ @@ -125,41 +119,16 @@ public class BugReporter { */ public static void reportBug(final String details) { final StringBuilder sb = new StringBuilder(); - sb.append("Description: [describe the problem]\n\n"); - buildSpoilerHeader(sb, "General bug report"); if (null != details && !details.isEmpty()) { sb.append("\n\n"); sb.append(details); } - buildSpoilerFooter(sb); + message = sb.toString(); - GuiBase.getInterface().showBugReportDialog("Report a bug", sb.toString(), false); - } - - private static StringBuilder buildSpoilerHeader(final StringBuilder sb, final String reportTitle) { - sb.append("[spoiler=").append(reportTitle).append("][code]"); - sb.append("\nForge Version: ").append(GuiBase.getInterface().getCurrentVersion()); - sb.append("\nOperating System: ").append(System.getProperty("os.name")) - .append(" ").append(System.getProperty("os.version")) - .append(" ").append(System.getProperty("os.arch")); - sb.append("\nJava Version: ").append(System.getProperty("java.version")) - .append(" ").append(System.getProperty("java.vendor")); - return sb; - } - - private static StringBuilder buildSpoilerFooter(final StringBuilder sb) { - sb.append("[/code][/spoiler]"); - return sb; - } - - public static void copyAndGoToForums(final String text) { - try { - // copy text to clipboard - GuiBase.getInterface().copyToClipboard(text); - GuiBase.getInterface().browseToUrl(FORUM_URL); - } catch (final Exception ex) { - SOptionPane.showMessageDialog("Sorry, a problem occurred while opening the forum in your default browser.", - "A problem occurred", SOptionPane.ERROR_ICON); + if (isSentryEnabled()) { + sendSentry(); + } else { + GuiBase.getInterface().showBugReportDialog("Report a bug", message, false); } } @@ -187,6 +156,14 @@ public class BugReporter { } } + public static void sendSentry() { + if (exception != null) { + Sentry.capture(exception); + } else if (message !=null) { + Sentry.capture(message); + } + } + /** * Private constructor to prevent instantiation. */ diff --git a/forge-gui/src/main/java/forge/gauntlet/GauntletIO.java b/forge-gui/src/main/java/forge/gauntlet/GauntletIO.java index df6269dfe26..065146f68e0 100644 --- a/forge-gui/src/main/java/forge/gauntlet/GauntletIO.java +++ b/forge-gui/src/main/java/forge/gauntlet/GauntletIO.java @@ -7,10 +7,22 @@ import java.io.FileOutputStream; import java.io.FilenameFilter; import java.io.IOException; import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.EnumMap; +import java.util.List; import java.util.Map.Entry; +import java.util.SortedSet; +import java.util.TreeMap; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; +import com.thoughtworks.xstream.converters.ConversionException; +import com.thoughtworks.xstream.security.NoTypePermission; +import com.thoughtworks.xstream.security.NullPermission; +import com.thoughtworks.xstream.security.PrimitiveTypePermission; +import forge.deck.Deck; +import forge.deck.DeckSection; +import forge.error.BugReporter; import org.apache.commons.lang3.StringUtils; import com.thoughtworks.xstream.XStream; @@ -40,6 +52,25 @@ public class GauntletIO { protected static XStream getSerializer(final boolean isIgnoring) { final XStream xStream = isIgnoring ? new IgnoringXStream() : new XStream(); + // clear out existing permissions and set our own + xStream.addPermission(NoTypePermission.NONE); + // allow some basics + xStream.addPermission(NullPermission.NULL); + xStream.addPermission(PrimitiveTypePermission.PRIMITIVES); + xStream.allowTypeHierarchy(String.class); + xStream.allowTypeHierarchy(EnumMap.class); + xStream.allowTypeHierarchy(ArrayList.class); + xStream.allowTypeHierarchy(CardPool.class); + xStream.allowTypeHierarchy(SortedSet.class); + xStream.allowTypeHierarchy(Deck.class); + xStream.allowTypeHierarchy(TreeMap.class); + xStream.allowTypeHierarchy(List.class); + xStream.allowTypeHierarchy(DeckSection.class); + // allow any type from the same package + xStream.allowTypesByWildcard(new String[] { + GauntletIO.class.getPackage().getName()+".*", + String.class.getPackage().getName()+".*" + }); xStream.registerConverter(new DeckSectionToXml()); xStream.autodetectAnnotations(true); return xStream; @@ -93,6 +124,9 @@ public class GauntletIO { catch (final IOException e) { e.printStackTrace(); } + catch (final ConversionException e) { + BugReporter.reportException(e); + } catch (final Exception e) { //if there's a non-IO exception, delete the corrupt file e.printStackTrace(); isCorrupt = true; diff --git a/forge-gui/src/main/java/forge/gauntlet/GauntletUtil.java b/forge-gui/src/main/java/forge/gauntlet/GauntletUtil.java index d2da2e2f2ec..46d73a1552d 100644 --- a/forge-gui/src/main/java/forge/gauntlet/GauntletUtil.java +++ b/forge-gui/src/main/java/forge/gauntlet/GauntletUtil.java @@ -34,11 +34,17 @@ public class GauntletUtil { deck = DeckgenUtil.getRandomColorDeck(FModel.getFormats().getStandard().getFilterPrinted(),true); break; case STANDARD_CARDGEN_DECK: - deck = DeckgenUtil.buildCardGenDeck(FModel.getFormats().getStandard(),true); - break; + deck = DeckgenUtil.buildLDACArchetypeDeck(FModel.getFormats().getStandard(),true); + break; case MODERN_CARDGEN_DECK: - deck = DeckgenUtil.buildCardGenDeck(FModel.getFormats().getModern(),true); - break; + deck = DeckgenUtil.buildLDACArchetypeDeck(FModel.getFormats().getModern(),true); + break; + case LEGACY_CARDGEN_DECK: + deck = DeckgenUtil.buildLDACArchetypeDeck(FModel.getFormats().get("Legacy"),true); + break; + case VINTAGE_CARDGEN_DECK: + deck = DeckgenUtil.buildLDACArchetypeDeck(FModel.getFormats().get("Vintage"),true); + break; case MODERN_COLOR_DECK: deck = DeckgenUtil.getRandomColorDeck(FModel.getFormats().getModern().getFilterPrinted(),true); break; diff --git a/forge-gui/src/main/java/forge/itemmanager/ColumnDef.java b/forge-gui/src/main/java/forge/itemmanager/ColumnDef.java index b568e81c5d9..47143aeb7d4 100644 --- a/forge-gui/src/main/java/forge/itemmanager/ColumnDef.java +++ b/forge-gui/src/main/java/forge/itemmanager/ColumnDef.java @@ -35,6 +35,7 @@ import java.math.BigDecimal; import java.util.Map.Entry; public enum ColumnDef { + /**The column containing the inventory item name.*/ STRING("", "", 0, false, SortState.ASC, new Function, Comparable>() { @Override @@ -48,6 +49,7 @@ public enum ColumnDef { return from.getKey().toString(); } }), + /**The name column.*/ NAME("Name", "Name", 180, false, SortState.ASC, new Function, Comparable>() { @Override @@ -62,8 +64,7 @@ public enum ColumnDef { } }), - //Sorts cards in the order that is used for assigning collector numbers. - //Appends a numeric prefix followed by the sortable name. + /**The column for sorting cards in collector order.*/ COLLECTOR_ORDER("CN", "Collector Number Order", 20, false, SortState.ASC, new Function, Comparable>() { @Override @@ -77,6 +78,7 @@ public enum ColumnDef { return ""; } }), + /**The type column.*/ TYPE("Type", "Type", 100, false, SortState.ASC, new Function, Comparable>() { @Override @@ -90,6 +92,7 @@ public enum ColumnDef { return toType(from.getKey()); } }), + /**The mana cost column.*/ COST("Cost", "Cost", 70, true, SortState.ASC, new Function, Comparable>() { @Override @@ -103,6 +106,7 @@ public enum ColumnDef { return toCardRules(from.getKey()); } }), + /**The color column.*/ COLOR("Color", "Color", 46, true, SortState.ASC, new Function, Comparable>() { @Override @@ -116,6 +120,7 @@ public enum ColumnDef { return toColor(from.getKey()); } }), + /**The power column.*/ POWER("Power", "Power", 20, true, SortState.DESC, new Function, Comparable>() { @Override @@ -129,6 +134,7 @@ public enum ColumnDef { return toPower(from.getKey()); } }), + /**The toughness column.*/ TOUGHNESS("Toughness", "Toughness", 20, true, SortState.DESC, new Function, Comparable>() { @Override @@ -142,6 +148,7 @@ public enum ColumnDef { return toToughness(from.getKey()); } }), + /**The converted mana cost column.*/ CMC("CMC", "CMC", 20, true, SortState.ASC, new Function, Comparable>() { @Override @@ -155,6 +162,7 @@ public enum ColumnDef { return toCMC(from.getKey()); } }), + /**The rarity column.*/ RARITY("Rarity", "Rarity", 20, true, SortState.DESC, new Function, Comparable>() { @Override @@ -168,6 +176,7 @@ public enum ColumnDef { return toRarity(from.getKey()); } }), + /**The set code column.*/ SET("Set", "Set", 38, true, SortState.DESC, new Function, Comparable>() { @Override @@ -184,6 +193,7 @@ public enum ColumnDef { return i instanceof InventoryItemFromSet ? ((InventoryItemFromSet) i).getEdition() : "n/a"; } }), + /**The AI compatibility flag column*/ AI("AI", "AI Status", 30, true, SortState.ASC, new Function, Comparable>() { @Override @@ -206,6 +216,7 @@ public enum ColumnDef { : (ai.getRemRandomDecks() ? "?" : ""); } }), + /**The Draft ranking column.*/ RANKING("Ranking", "Draft Ranking", 50, true, SortState.ASC, new Function, Comparable>() { @Override @@ -219,6 +230,7 @@ public enum ColumnDef { return toRanking(from.getKey(), true); } }), + /**The quantity column.*/ QUANTITY("Qty", "Quantity", 25, true, SortState.ASC, new Function, Comparable>() { @Override @@ -232,6 +244,7 @@ public enum ColumnDef { return from.getValue(); } }), + /**The quantity in deck column.*/ DECK_QUANTITY("Quantity", "Quantity", 50, true, SortState.ASC, new Function, Comparable>() { @Override @@ -245,14 +258,19 @@ public enum ColumnDef { return from.getValue(); } }), + /**The new inventory flag column.*/ NEW("New", "New", 30, true, SortState.DESC, null, null), //functions will be set later + /**The price column.*/ PRICE("Price", "Price", 35, true, SortState.DESC, null, null), + /**The quantity owned column.*/ OWNED("Owned", "Owned", 20, true, SortState.ASC, null, null), + /**The deck name column.*/ DECKS("Decks", "Decks", 20, true, SortState.ASC, null, null), + /**The favorite flag column.*/ FAVORITE("", "Favorite", 18, true, SortState.DESC, new Function, Comparable>() { @Override @@ -270,6 +288,7 @@ public enum ColumnDef { return toCard(from.getKey()); } }), + /**The favorite deck flag column.*/ DECK_FAVORITE("", "Favorite", 18, true, SortState.DESC, new Function, Comparable>() { @Override @@ -287,6 +306,7 @@ public enum ColumnDef { return toDeck(from.getKey()); } }), + /**The edit/delete deck column.*/ DECK_ACTIONS("", "Delete/Edit", 40, true, SortState.DESC, new Function, Comparable>() { @Override @@ -300,6 +320,7 @@ public enum ColumnDef { return toDeck(from.getKey()); } }), + /**The deck folder column.*/ DECK_FOLDER("Folder", "Folder", 80, false, SortState.ASC, new Function, Comparable>() { @Override @@ -313,6 +334,7 @@ public enum ColumnDef { return toDeckFolder(from.getKey()); } }), + /**The deck color column.*/ DECK_COLOR("Color", "Color", 70, true, SortState.ASC, new Function, Comparable>() { @Override @@ -326,6 +348,7 @@ public enum ColumnDef { return toDeckColor(from.getKey()); } }), + /**The deck format column.*/ DECK_FORMAT("Format", "Formats deck is legal in", 60, false, SortState.DESC, new Function, Comparable>() { @Override @@ -354,7 +377,8 @@ public enum ColumnDef { return deck.getFormatsString(); } }), - DECK_EDITION("Set", "Earliest set that can build this deck", 38, true, SortState.DESC, + /**The deck edition column, a mystery to us all.*/ + DECK_EDITION("Set", "Mystery column. We don't know what it does or if that's what it should do.", 38, true, SortState.DESC, new Function, Comparable>() { @Override public Comparable apply(final Entry from) { @@ -367,6 +391,7 @@ public enum ColumnDef { return toDeck(from.getKey()).getEdition().getCode(); } }), + /**The main library size column.*/ DECK_MAIN("Main", "Main Deck", 30, true, SortState.ASC, new Function, Comparable>() { @Override @@ -380,6 +405,7 @@ public enum ColumnDef { return toDeck(from.getKey()).getMainSize(); } }), + /**The sideboard size column.*/ DECK_SIDE("Side", "Sideboard", 30, true, SortState.ASC, new Function, Comparable>() { @Override @@ -417,19 +443,24 @@ public enum ColumnDef { public String toString() { return this.longName; } - - //Trim leading quotes, then move article last, then replace characters. - //Because An-Havva Constable. - //Capitals and lowercase sorted as one: "my deck" before "Myr Retribution" - //Apostrophes matter, though: "D'Avenant" before "Danitha" - //TO DO: Commas before apostrophes: "Rakdos, Lord of Riots" before "Rakdos's Return" +/** + *Converts a card name to a sortable name. + * Trim leading quotes, then move article last, then replace characters. + * Because An-Havva Constable. + * Capitals and lowercase sorted as one: "my deck" before "Myr Retribution" + * Apostrophes matter, though: "D'Avenant" before "Danitha" + * TO DO: Commas before apostrophes: "Rakdos, Lord of Riots" before "Rakdos's Return" + * @param printedName The name of the card. + * @return A sortable name. + */ private static String toSortableName(String printedName) { if (printedName.startsWith("\"")) printedName = printedName.substring(1); return moveArticleToEnd(printedName).toLowerCase().replaceAll("[^\\s'0-9a-z]",""); } - /*For localization, simply overwrite this array with appropriate words. + /**Article words. These words get kicked to the end of a sortable name. + For localization, simply overwrite this array with appropriate words. Words in this list are used by the method String moveArticleToEnd(String), useful for alphabetizing phrases, in particular card or other inventory object names.*/ private static final String[] ARTICLE_WORDS = { @@ -438,7 +469,9 @@ public enum ColumnDef { "The" }; - //Detects whether a string begins with an article word + /**Detects whether a string begins with an article word + @param str The name of the card. + @return The sort-friendly name of the card. Example: "The Hive" becomes "Hive The".*/ private static String moveArticleToEnd(String str){ String articleWord; for (int i = 0; i < ARTICLE_WORDS.length; i++){ @@ -518,14 +551,19 @@ public enum ColumnDef { return i instanceof DeckProxy ? ((DeckProxy) i).getPath() + "/" : null; } - //START COLLECTOR-NUMBER-STYLE SORTING CODE// - //this is a multi-layer sort. coding it in layers to make it easier to manipulate. + /**Generates a sortable numeric string based on a card's attributes. + This is a multi-layer sort. It is coded in layers to make it easier to manipulate. + This method can be fed any inventory item, but is only useful for paper cards. + @param i An inventory item. + @return A sortable numeric string based on the item's attributes.*/ private static String toCollectorPrefix(final InventoryItem i) { //make sure it's a card. if not, pointless to proceed. return (i instanceof PaperCard ? toBasicLandsLast(i) + " " : "") + toSortableName(i.getName()); } - //lands after other cards + /**Returns 1 for land, otherwise 0 and continues sorting. + @param i A paper card. + @return Part of a sortable numeric string.*/ private static String toLandsLast(final InventoryItem i) { //nonland? return !(((IPaperCard) i).getRules().getType().isLand()) ? @@ -534,39 +572,51 @@ public enum ColumnDef { : "1"; } - //colorless artifacts last + /**Returns 1 for colorless artifacts, otherwise 0 and continues sorting. + @param i A paper card. + @return Part of a sortable numeric string.*/ private static String toColorlessArtifactsLast(final InventoryItem i) { return !(((IPaperCard) i).getRules().getType().isArtifact() && toColor(i).isColorless()) ? "0" + toSplitLast(i): "1"; } - //split cards last + /**Returns 1 for split cards or 0 for other cards; continues sorting. + @param i A paper card. + @return Part of a sortable numeric string.*/ private static String toSplitLast(final InventoryItem i) { return ((IPaperCard) i).getRules().getSplitType() != CardSplitType.Split ? "0" + toConspiracyFirst(i) : "1" + toSplitCardSort(i); } - //conspiracy first, then everything else + /**Returns 0 for Conspiracy cards, otherwise 1 and continues sorting. + @param i A paper card. + @return Part of a sortable numeric string.*/ private static String toConspiracyFirst(final InventoryItem i) { return ((IPaperCard) i).getRules().getType().isConspiracy() ? "0" //is a Conspiracy : "1" + toColorlessFirst(i); //isn't a Conspiracy } - //colorless first, then colored. + /**Returns 0 for colorless cards, otherwise 1 and continues sorting. + @param i A paper card. + @return Part of a sortable numeric string.*/ private static String toColorlessFirst(final InventoryItem i) { return toColor(i).isColorless() ? "0" : "1" + toMonocolorFirst(i); } - //monocolor nonartifact nonland spells are first, then multicolored. + /**Returns 0 for monocolor cards, 1 for multicolor cards; continues sorting. + @param i A paper card. + @return Part of a sortable numeric string.*/ private static String toMonocolorFirst(final InventoryItem i) { return toColor(i).isMonoColor() ? "0" + toWubrgOrder(i): "1" + toGoldFirst(i); } - //gold cards first - private static String toGoldFirst(final InventoryItem i) { + /**Returns 0 for gold cards and continues sorting, 1 otherwise. + @param i A paper card. + @return Part of a sortable numeric string.*/ + private static String toGoldFirst(final InventoryItem i) { forge.card.mana.ManaCost manaCost = ((IPaperCard) i).getRules().getManaCost(); return !(manaCost.canBePaidWithAvaliable(MagicColor.WHITE) | manaCost.canBePaidWithAvaliable(MagicColor.BLUE) | @@ -574,6 +624,11 @@ public enum ColumnDef { manaCost.canBePaidWithAvaliable(MagicColor.GREEN)) ? "0" : "1"; } + /**Entry point for generating split card sortable strings. + Splits the card into two card faces, then sends it to the next + sorting method. + @param i A paper card. + @return Part of a sortable numeric string.*/ //Split card sorting is probably as complex as sorting gets. //This method serves as an entry point only, separating the two card parts for convenience. private static String toSplitCardSort(final InventoryItem i) { @@ -583,7 +638,18 @@ public enum ColumnDef { return toSplitSort(mainPart, otherPart); } - //Split cards are sorted by color on both halves. + /**Generates a sortable numeric string for split cards. + Split cards are sorted by color on both halves. + Sort order is C//C, W//W, U//U, B//B, R//R, G//G, + Gold/Gold, + W//U, U//B, B//R, R//G, G//W, + W//B, U//R, B//G, R//W, G//U, + W//R, U//G, B//W, R//U, G//B, + W//G, U//W, B//U, R//B, G//R. + Any that do not conform will sort at the end. + @param mainPart The first half of the card. + @param otherPart The other half of the card. + @return Part of a sortable numeric string.*/ private static String toSplitSort(final ICardFace mainPart, final ICardFace otherPart) { ColorSet mainPartColor = mainPart.getColor(); ColorSet otherPartColor = otherPart.getColor(); @@ -636,38 +702,46 @@ public enum ColumnDef { "99"; } - //sort by casting cost color + /**Returns 0 for white, 1 for blue, 2 for black, 3 for red, or 4 for green. + @param i A paper card. + @return Part of a sortable numeric string.*/ private static String toWubrgOrder(final InventoryItem i) { ColorSet color = toColor(i); return color.hasWhite() ? "0" : color.hasBlue() ? "1" : color.hasBlack() ? "2" : color.hasRed() ? "3" : "4"; } - //Contraptions are after all other cards except basic lands + /**Returns 1 for Contraptions, otherwise 0 and continues sorting. + @param i A paper card. + @return Part of a sortable numeric string.*/ private static String toContraptionsLast(final InventoryItem i) { return !(((IPaperCard) i).getRules().getType().hasSubtype("Contraption")) ? "0" + toLandsLast(i) : "1"; } - //basic lands are after all other cards + /**Returns 1 for basic lands, 0 otherwise, and continues sorting. + @param i A paper card. + @return Part of a sortable numeric string.*/ private static String toBasicLandsLast(final InventoryItem i) { return !(((IPaperCard) i).getRules().getType().isBasicLand()) ? "0" + toContraptionsLast(i) : "1" + toFullArtFirst(i); } - //basic lands are sorted full-art, then normal art. - //Forge doesn't make this distinction. If it did, this prefix would be added just before - //the basic land type prefix. + /**Currently only continues sorting. If Forge is updated to + use a flag for full-art lands, this method should be updated + to assign those 0 and regular lands 1, then continue sorting. + @param i A paper card. + @return Part of a sortable numeric string.*/ private static String toFullArtFirst(final InventoryItem i) { return toBasicLandSort(i); } - //Plains, Island, Swamp, Mountain, Forest. - //Not sure what to do with Wastes or Snow-Covered lands, so putting the typeless - //Wastes first and letting Snow-Covered lands fall in with their nonsnow friends. - //Full-art basic lands are supposed to come before all others, but Forge doesn't distinguish - //the two. + /**Returns 0 for wastes, 1 for plains, 2 for island, + 3 for swamp, 4 for mountain, 5 for forest. Snow + lands are treated like nonsnow. + @param i A paper card. + @return Part of a sortable numeric string.*/ private static String toBasicLandSort(final InventoryItem i) { CardType basicLandType = ((IPaperCard) i).getRules().getType(); return basicLandType.hasStringType("Plains") ? "1" : ( diff --git a/forge-gui/src/main/java/forge/limited/ArchetypeDeckBuilder.java b/forge-gui/src/main/java/forge/limited/ArchetypeDeckBuilder.java new file mode 100644 index 00000000000..a0ca57ecbad --- /dev/null +++ b/forge-gui/src/main/java/forge/limited/ArchetypeDeckBuilder.java @@ -0,0 +1,30 @@ +package forge.limited; + +import forge.deck.DeckFormat; +import forge.deck.io.Archetype; +import forge.game.GameFormat; +import forge.item.PaperCard; + +import java.util.List; + +public class ArchetypeDeckBuilder extends CardThemedDeckBuilder{ + + private Archetype archetype; + + public ArchetypeDeckBuilder(Archetype archetype0, PaperCard keyCard0, final List dList, GameFormat format, boolean isForAI){ + super(keyCard0,null, dList, format, isForAI, DeckFormat.Constructed); + archetype = archetype0; + } + + /** + * Generate a descriptive name. + * + * @return name + */ + protected String generateName() { + return archetype.getName() + " Generated Deck"; + } + + + +} diff --git a/forge-gui/src/main/java/forge/limited/CardThemedDeckBuilder.java b/forge-gui/src/main/java/forge/limited/CardThemedDeckBuilder.java index cc36a2884a4..c4ee7b701d4 100644 --- a/forge-gui/src/main/java/forge/limited/CardThemedDeckBuilder.java +++ b/forge-gui/src/main/java/forge/limited/CardThemedDeckBuilder.java @@ -56,13 +56,12 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase { protected List rankedColorList; // Views for aiPlayable - protected Iterable onColorCreatures; - protected Iterable onColorNonCreatures; - protected Iterable keyCards; + protected Iterable onColorCreaturesAndSpells; protected static final boolean logToConsole = false; protected static final boolean logColorsToConsole = false; + protected Iterable keyCards; protected Map targetCMCs; @@ -99,12 +98,15 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase { targetSize=deckFormat.getMainRange().getMinimum(); FullDeckColors deckColors = new FullDeckColors(); int cardCount=0; - int colourCheckAmount = 20; + int colourCheckAmount = 30; if (targetSize < 60){ colourCheckAmount = 10;//lower amount for planar decks } //get colours for first few cards for(PaperCard c:getAiPlayables()){ + if(c.getRules().getType().isLand()){ + continue; + } if(deckColors.canChoseMoreColors()){ deckColors.addColorsOf(c); cardCount++; @@ -173,10 +175,10 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase { Iterable colorList = Iterables.filter(aiPlayables, Predicates.compose(hasColor, PaperCard.FN_GET_RULES)); rankedColorList = Lists.newArrayList(colorList); - onColorCreatures = Iterables.filter(rankedColorList, - Predicates.compose(CardRulesPredicates.Presets.IS_CREATURE, PaperCard.FN_GET_RULES)); - onColorNonCreatures = Iterables.filter(rankedColorList, - Predicates.compose(CardRulesPredicates.Presets.IS_NON_CREATURE_SPELL, PaperCard.FN_GET_RULES)); + onColorCreaturesAndSpells = Iterables.filter(rankedColorList, + Predicates.compose(Predicates.or(CardRulesPredicates.Presets.IS_CREATURE, + CardRulesPredicates.Presets.IS_NON_CREATURE_SPELL), PaperCard.FN_GET_RULES)); + // Guava iterables do not copy the collection contents, instead they act // as filters and iterate over _source_ collection each time. So even if // aiPlayable has changed, there is no need to create a new iterable. @@ -189,39 +191,34 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase { // 3. Add creatures, trying to follow mana curve - addManaCurveCards(onColorCreatures, numCreaturesToStart, "Creatures"); + numSpellsNeeded = numSpellsNeeded - deckList.size(); //subtract keycard count + addManaCurveCards(onColorCreaturesAndSpells, numSpellsNeeded, "Creatures and Spells"); if (logToConsole) { - System.out.println("Post Creatures : " + deckList.size()); + System.out.println("Post Creatures and Spells : " + deckList.size()); } - // 4.Try to fill up to num needed with on-color non-creature cards - addManaCurveCards(onColorNonCreatures, numSpellsNeeded - deckList.size(), "Spells"); + // 4.If we couldn't get enough, try to fill up with on-color cards + addCards(onColorCreaturesAndSpells, numSpellsNeeded - deckList.size()); if (logToConsole) { - System.out.println("Post Spells : " + deckList.size()); + System.out.println("Post more creatures and spells : " + deckList.size()); } - // 5.If we couldn't get enough, try to fill up with on-color cards - addCards(rankedColorList, numSpellsNeeded - deckList.size()); - if (logToConsole) { - System.out.println("Post more creatures : " + deckList.size()); - } - - // 6. If there are still on-color cards, and the average cmc is low, add + // 5. If there are still on-color cards, and the average cmc is low, add // extras. - double avCMC=getAverageCMC(deckList); - int maxCMC=getMaxCMC(deckList); - if (deckList.size() <= numSpellsNeeded && avCMC < 4) { + double avCMC = getAverageCMC(deckList); + int maxCMC = getMaxCMC(deckList); + if (avCMC < 4) { addLowCMCCard(); - if(targetSize>60){ + if (targetSize > 60) { addLowCMCCard(); } } - if (deckList.size() >= numSpellsNeeded && avCMC < 3 && maxCMC<6) { + if (avCMC < 3 && maxCMC < 6) { addLowCMCCard(); } - if (deckList.size() >= numSpellsNeeded && avCMC < 2.5 && maxCMC<5) { + if (avCMC < 2.5 && maxCMC < 5) { addLowCMCCard(); - if(targetSize>60){ + if (targetSize > 60) { addLowCMCCard(); } } @@ -229,7 +226,7 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase { System.out.println("Post lowcoc : " + deckList.size()); } - // 7. If not enough cards yet, try to add a third color, + // 6. If not enough cards yet, try to add a third color, // to try and avoid adding purely random cards. addThirdColorCards(numSpellsNeeded - deckList.size()); if (logColorsToConsole) { @@ -237,14 +234,18 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase { System.out.println("Colors: " + colors.toEnumSet().toString()); } - // 8. Check for DeckNeeds cards. - //checkRemRandomDeckCards(); - no need - - // 9. If there are still less than 22 non-land cards add off-color + // 7. If there are still less than 22 non-land cards add off-color // cards. This should be avoided. int stillNeeds = numSpellsNeeded - deckList.size(); - if(stillNeeds>0) + if (stillNeeds > 0) + addCards(onColorCreaturesAndSpells, stillNeeds); + stillNeeds = numSpellsNeeded - deckList.size(); + if (stillNeeds > 0) + extendPlaysets(stillNeeds); + stillNeeds = numSpellsNeeded - deckList.size(); + if (stillNeeds > 0) addRandomCards(stillNeeds); + if (logToConsole) { System.out.println("Post Randoms : " + deckList.size()); } @@ -253,7 +254,7 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase { addLandKeyCards(); - // 10. Add non-basic lands + // 8. Add non-basic lands List duals = getDualLandList(); addNonBasicLands(); if (logToConsole) { @@ -262,7 +263,7 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase { checkEvolvingWilds(); - // 11. Fill up with basic lands. + // 9. Fill up with basic lands. final int[] clrCnts = calculateLandNeeds(); // Add dual lands @@ -313,14 +314,43 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase { } + //Extend to playsets for non land cards to fill out deck for when no other suitable cards are available + protected void extendPlaysets(int numSpellsNeeded){ + Map currentCounts = new HashMap<>(); + List cardsToAdd = new ArrayList<>(); + int i=0; + for(PaperCard card: deckList){ + if(card.getRules().getType().isLand()){ + continue; + } + if(currentCounts.containsKey(card)){ + currentCounts.put(card, currentCounts.get(card) + 1); + }else{ + currentCounts.put(card, 1); + } + } + for(PaperCard card: currentCounts.keySet()){ + if(currentCounts.get(card)==2 || currentCounts.get(card)==3){ + cardsToAdd.add(card); + ++i; + if(i >= numSpellsNeeded ){ + break; + } + } + } + deckList.addAll(cardsToAdd); + aiPlayables.removeAll(cardsToAdd); + rankedColorList.removeAll(cardsToAdd); + } + protected void generateTargetCMCs(){ targetCMCs = new HashMap<>(); - targetCMCs.put(1,Math.round((MyRandom.getRandom().nextInt(8)+2)*targetSize/60));//2 - targetCMCs.put(2,Math.round((MyRandom.getRandom().nextInt(12)+5)*targetSize/60));//6 - targetCMCs.put(3,Math.round((MyRandom.getRandom().nextInt(8)+6)*targetSize/60));//7 - targetCMCs.put(4,Math.round((MyRandom.getRandom().nextInt(5)+3)*targetSize/60));//4 - targetCMCs.put(5,Math.round((MyRandom.getRandom().nextInt(4)+3)*targetSize/60));//3 - targetCMCs.put(6,Math.round((MyRandom.getRandom().nextInt(4)+1)*targetSize/60));//2 + targetCMCs.put(1,Math.round((MyRandom.getRandom().nextInt(12)+4)*targetSize/60));//10 + targetCMCs.put(2,Math.round((MyRandom.getRandom().nextInt(16)+8)*targetSize/60));//16 + targetCMCs.put(3,Math.round((MyRandom.getRandom().nextInt(10)+8)*targetSize/60));//13 + targetCMCs.put(4,Math.round((MyRandom.getRandom().nextInt(8)+6)*targetSize/60));//8 + targetCMCs.put(5,Math.round((MyRandom.getRandom().nextInt(8)+6)*targetSize/60));//7 + targetCMCs.put(6,Math.round((MyRandom.getRandom().nextInt(8)+6)*targetSize/60));//4 while(sumMapValues(targetCMCs) < numSpellsNeeded){ int randomKey = MyRandom.getRandom().nextInt(6)+1; @@ -549,6 +579,16 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase { return; } + int stillNeeds = targetSize - deckList.size(); + if (stillNeeds > 0) + addCards(onColorCreaturesAndSpells, stillNeeds); + stillNeeds = targetSize - deckList.size(); + if (stillNeeds > 0) + extendPlaysets(stillNeeds); + stillNeeds = targetSize - deckList.size(); + if (stillNeeds == 0) + return; + Predicate possibleFromFullPool = new Predicate() { final Set deckListNames = getDeckListNames(); @Override @@ -570,6 +610,7 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase { possibleList.removeAll(StaticData.instance().getCommonCards().getAllCards(secondKeyCard.getName())); } //Iterator iRandomPool = CardRanker.rankCardsInDeck(possibleList.subList(0, targetSize <= possibleList.size() ? targetSize : possibleList.size())).iterator(); + Collections.shuffle(possibleList); Iterator iRandomPool = possibleList.iterator(); while (deckList.size() < targetSize) { if (logToConsole) { @@ -609,7 +650,6 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase { private void addLands(final int[] clrCnts) { // basic lands that are available in the deck final Iterable basicLands = Iterables.filter(aiPlayables, Predicates.compose(CardRulesPredicates.Presets.IS_BASIC_LAND, PaperCard.FN_GET_RULES)); - final Set snowLands = new HashSet(); // total of all ClrCnts int totalColor = 0; @@ -620,28 +660,45 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase { numColors++; } } + // add one of each land required first so that any rounding errors do not remove the only land of a colour + for (int i = 0; i < 5; i++) { + if (clrCnts[i] > 0) { + float p = (float) clrCnts[i] / (float) totalColor; + int nLand = Math.round(landsNeeded * p); // desired truncation to int + if(nLand >0) { + deckList.add(getBasicLand(i)); + landsNeeded--; + } + } + } + // do not update landsNeeded until after the loop, because the // calculation involves landsNeeded for (int i = 0; i < 5; i++) { if (clrCnts[i] > 0) { - // calculate number of lands for each color + // calculate remaining number of lands for each color float p = (float) clrCnts[i] / (float) totalColor; int nLand = Math.round(landsNeeded * p); // desired truncation to int if (logToConsole) { System.out.printf("Basics[%s]: %d/%d = %f%% = %d cards%n", MagicColor.Constant.BASIC_LANDS.get(i), clrCnts[i], totalColor, 100*p, nLand); } + PaperCard snowLand = null; // if appropriate snow-covered lands are available, add them for (final PaperCard cp : basicLands) { if (cp.getName().equals(MagicColor.Constant.SNOW_LANDS.get(i))) { - snowLands.add(cp); - nLand--; + snowLand = cp; + break; } } for (int j = 0; j < nLand; j++) { - deckList.add(getBasicLand(i)); + if(snowLand!=null){ + deckList.add(snowLand); + }else { + deckList.add(getBasicLand(i)); + } } } } @@ -654,9 +711,6 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase { deckList.remove(deckList.size() - 1); } - deckList.addAll(snowLands); - aiPlayables.removeAll(snowLands); - rankedColorList.removeAll(snowLands); } /** @@ -735,22 +789,38 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase { return clrCnts; } + private boolean containsTronLands(Iterable cards){ + for(PaperCard card : cards){ + if(card.getRules().getType().isLand() && ( + card.getName().equals("Urza's Mine") + || card.getName().equals("Urza's Tower") + || card.getName().equals("Urza's Power Plant"))){ + return true; + } + } + return false; + } + /** * Add non-basic lands to the deck. */ private void addNonBasicLands() { - final Iterable lands = Iterables.filter(aiPlayables, + Iterable lands = Iterables.filter(aiPlayables, Predicates.compose(CardRulesPredicates.Presets.IS_NONBASIC_LAND, PaperCard.FN_GET_RULES)); List landsToAdd = new ArrayList<>(); int minBasics;//Keep a minimum number of basics to ensure playable decks - if(colors.isColorless()){ - minBasics=0; + if(colors.isColorless()) { + minBasics = 0; + }if(containsTronLands(lands)){ + minBasics=Math.round((MyRandom.getRandom().nextInt(5)+3)*((float) targetSize) / 60); }else if(colors.isMonoColor()){ minBasics=Math.round((MyRandom.getRandom().nextInt(15)+9)*((float) targetSize) / 60); }else{ minBasics=Math.round((MyRandom.getRandom().nextInt(8)+6)*((float) targetSize) / 60); } + lands = Iterables.filter(aiPlayables, + Predicates.compose(CardRulesPredicates.Presets.IS_NONBASIC_LAND, PaperCard.FN_GET_RULES)); for (final PaperCard card : lands) { if (landsNeeded > minBasics) { @@ -831,7 +901,7 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase { if(card.getRules().getMainPart().getType().isLand()){ continue; } - if (num +1 > 0) { + if (num > 0) { cardsToAdd.add(card); if (logToConsole) { System.out.println("Extra needed[" + num + "]:" + card.getName() + " (" + card.getRules().getManaCost() + ")"); diff --git a/forge-gui/src/main/java/forge/limited/CustomLimited.java b/forge-gui/src/main/java/forge/limited/CustomLimited.java index 5cecbfc5fd1..dda54f28604 100644 --- a/forge-gui/src/main/java/forge/limited/CustomLimited.java +++ b/forge-gui/src/main/java/forge/limited/CustomLimited.java @@ -45,12 +45,12 @@ import java.util.List; */ public class CustomLimited extends DeckBase { private final SealedProduct.Template tpl; - + /** * TODO: Write javadoc for Constructor. * * @param name0 the name0 - * @param slots + * @param slots */ public CustomLimited(final String name0, List> slots) { super(name0); @@ -67,7 +67,7 @@ public class CustomLimited extends DeckBase { /** The Land set code. */ private String landSetCode = CardEdition.Predicates.getRandomSetWithAllBasicLands(FModel.getMagicDb().getEditions()).getCode(); - private boolean singleton; + private boolean singleton; /** Name of the file containing custom card rankings. */ private String customRankingsFile = ""; @@ -82,27 +82,27 @@ public class CustomLimited extends DeckBase { public String toString() { return this.getName(); } - + @Override public String getItemType() { return "Limited deck"; - } + } /** * Parses the. * * @param dfData the df data - * @param cubes the cubes + * @param cubes the cubes * @return the custom limited */ public static CustomLimited parse(final List dfData, final IStorage cubes) { final FileSection data = FileSection.parse(dfData, ":"); - List> slots = new ArrayList>(); + List> slots = new ArrayList>(); String boosterData = data.get("Booster"); - if(StringUtils.isNotEmpty(boosterData)){ + if (StringUtils.isNotEmpty(boosterData)) { final String[] booster = TextUtil.splitWithParenthesis(boosterData, ','); - for(String slotDesc : booster) { + for (String slotDesc : booster) { String[] kv = TextUtil.splitWithParenthesis(slotDesc, ' ', 2); slots.add(ImmutablePair.of(kv[1], Integer.parseInt(kv[0]))); } @@ -188,13 +188,13 @@ public class CustomLimited extends DeckBase { return cardPool.isEmpty(); } - @Override - public void importDeck(Deck deck) { - throw new UnsupportedOperationException("CustomDraft does not support deck import"); - } - @Override public String getImageKey(boolean altState) { return null; } -} + + @Override + public Deck getHumanDeck() { + return null; + } +} \ No newline at end of file diff --git a/forge-gui/src/main/java/forge/match/GameLobby.java b/forge-gui/src/main/java/forge/match/GameLobby.java index 3bb5dd1388f..2ba4f814204 100644 --- a/forge-gui/src/main/java/forge/match/GameLobby.java +++ b/forge-gui/src/main/java/forge/match/GameLobby.java @@ -501,7 +501,7 @@ public abstract class GameLobby implements IHasGameType { //override starting life for 1v1 Brawl if (hasVariant(GameType.Brawl) && activeSlots.size() == 2){ for (RegisteredPlayer player : players){ - player.setStartingLife(20); + player.setStartingLife(25); } } playerToSlot.put(rp, slot); diff --git a/forge-gui/src/main/java/forge/model/FModel.java b/forge-gui/src/main/java/forge/model/FModel.java index 782fd3ac175..3528ed4d14e 100644 --- a/forge-gui/src/main/java/forge/model/FModel.java +++ b/forge-gui/src/main/java/forge/model/FModel.java @@ -173,6 +173,8 @@ public final class FModel { magicDb.setBrawlPredicate(formats.get("Brawl").getFilterRules()); magicDb.setModernPredicate(formats.getModern().getFilterRules()); + magicDb.setFilteredHandsEnabled(preferences.getPrefBoolean(FPref.FILTERED_HANDS)); + blocks = new StorageBase<>("Block definitions", new CardBlock.Reader(ForgeConstants.BLOCK_DATA_DIR + "blocks.txt", magicDb.getEditions())); questPreferences = new QuestPreferences(); conquestPreferences = new ConquestPreferences(); diff --git a/forge-gui/src/main/java/forge/net/ProtocolMethod.java b/forge-gui/src/main/java/forge/net/ProtocolMethod.java index ed3ebc2fa38..3035d5a3202 100644 --- a/forge-gui/src/main/java/forge/net/ProtocolMethod.java +++ b/forge-gui/src/main/java/forge/net/ProtocolMethod.java @@ -1,5 +1,6 @@ package forge.net; +import java.io.Serializable; import java.lang.reflect.Method; import java.util.Collection; import java.util.List; @@ -22,6 +23,7 @@ import forge.match.NextGameDecision; import forge.trackable.TrackableCollection; import forge.util.ITriggerEvent; import forge.util.ReflectionUtil; +import org.apache.commons.lang3.SerializationUtils; /** * The methods that can be sent through this protocol. @@ -85,7 +87,7 @@ public enum ProtocolMethod { passPriorityUntilEndOfTurn(Mode.CLIENT), passPriority (Mode.CLIENT), nextGameDecision (Mode.CLIENT, Void.TYPE, NextGameDecision.class), - getActivateDescription (Mode.CLIENT, Void.TYPE, String.class, CardView.class), + getActivateDescription (Mode.CLIENT, String.class, CardView.class), concede (Mode.CLIENT), alphaStrike (Mode.CLIENT), reorderHand (Mode.CLIENT, Void.TYPE, CardView.class, Integer.TYPE); @@ -155,6 +157,17 @@ public enum ProtocolMethod { if (!ReflectionUtil.isInstance(arg, type)) { throw new InternalError(String.format("Protocol method %s: illegal argument (%d) of type %s, %s expected", name(), iArg, arg.getClass().getName(), type.getName())); } + if (arg != null) { + // attempt to Serialize each argument, this will throw an exception if it can't. + try { + byte[] serialized = SerializationUtils.serialize((Serializable) arg); + SerializationUtils.deserialize(serialized); + } catch (ArrayIndexOutOfBoundsException ex) { + // not sure why this one would be thrown, but it is + // it also doesn't prevent things from working, so, log for now, pending full network rewrite + ex.printStackTrace(); + } + } } } diff --git a/forge-gui/src/main/java/forge/player/HumanPlay.java b/forge-gui/src/main/java/forge/player/HumanPlay.java index 21f04529811..fd96df17d56 100644 --- a/forge-gui/src/main/java/forge/player/HumanPlay.java +++ b/forge-gui/src/main/java/forge/player/HumanPlay.java @@ -438,7 +438,7 @@ public class HumanPlay { return false; } - source.addCounter(counterType, amount, source, false); + source.addCounter(counterType, amount, p, false); } else { CardCollectionView list = p.getGame().getCardsIn(ZoneType.Battlefield); @@ -456,7 +456,7 @@ public class HumanPlay { continue; } Card selected = inp.getFirstSelected(); - selected.addCounter(counterType, 1, source, false); + selected.addCounter(counterType, 1, p, false); amount--; } } diff --git a/forge-gui/src/main/java/forge/player/HumanPlaySpellAbility.java b/forge-gui/src/main/java/forge/player/HumanPlaySpellAbility.java index 25906056458..e03c8d89251 100644 --- a/forge-gui/src/main/java/forge/player/HumanPlaySpellAbility.java +++ b/forge-gui/src/main/java/forge/player/HumanPlaySpellAbility.java @@ -118,7 +118,9 @@ public class HumanPlaySpellAbility { ability.setHostCard(game.getAction().moveToStack(c, null)); } - ability.resetPaidHash(); + if (!ability.isCopied()) { + ability.resetPaidHash(); + } if (manaTypeConversion) { AbilityUtils.applyManaColorConversion(human, MagicColor.Constant.ANY_TYPE_CONVERSION); diff --git a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java index c050ea72183..e7d05e729a2 100644 --- a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java +++ b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java @@ -7,6 +7,7 @@ import com.google.common.collect.*; import forge.FThreads; import forge.GuiBase; import forge.LobbyPlayer; +import forge.StaticData; import forge.achievement.AchievementCollection; import forge.ai.GameState; import forge.assets.FSkinProp; @@ -59,6 +60,7 @@ import forge.util.TextUtil; import forge.util.collect.FCollection; import forge.util.collect.FCollectionView; import forge.util.gui.SOptionPane; +import io.sentry.Sentry; import org.apache.commons.lang3.Range; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.ImmutablePair; @@ -457,6 +459,11 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont @Override public List chooseEntitiesForEffect(final FCollectionView optionList, final DelayedReveal delayedReveal, final SpellAbility sa, final String title, final Player targetedPlayer) { + + // useful details for debugging problems with the mass select logic + Sentry.getContext().addExtra("Card", sa.getCardView().toString()); + Sentry.getContext().addExtra("SpellAbility", sa.toString()); + // Human is supposed to read the message and understand from it what to // choose if (optionList.isEmpty()) { @@ -492,7 +499,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont input.setCancelAllowed(true); input.setMessage(MessageUtil.formatMessage(title, player, targetedPlayer)); input.showAndWait(); - return (List) Iterables.getFirst(input.getSelected(), null); + return (List) input.getSelected(); } tempShow(optionList); @@ -537,7 +544,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont @Override public SpellAbility chooseSingleSpellForEffect(final List spells, final SpellAbility sa, - final String title) { + final String title, Map params) { if (spells.size() < 2) { return Iterables.getFirst(spells, null); } @@ -768,6 +775,43 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont return ImmutablePair.of(toTop, toBottom); } + @Override + public ImmutablePair arrangeForSurveil(final CardCollection topN) { + CardCollection toGrave = null; + CardCollection toTop = null; + + tempShowCards(topN); + if (topN.size() == 1) { + final Card c = topN.getFirst(); + final CardView view = CardView.get(c); + + tempShowCard(c); + getGui().setCard(view); + boolean result = false; + result = InputConfirm.confirm(this, view, TextUtil.concatNoSpace("Put ", view.toString(), " on the top of library or graveyard?"), + true, ImmutableList.of("Library", "Graveyard")); + if (result) { + toTop = topN; + } else { + toGrave = topN; + } + } else { + toGrave = game.getCardList(getGui().many("Select cards to be put into the graveyard", + "Cards to put in the graveyard", -1, CardView.getCollection(topN), null)); + topN.removeAll((Collection) toGrave); + if (topN.isEmpty()) { + toTop = null; + } else if (topN.size() == 1) { + toTop = topN; + } else { + toTop = game.getCardList(getGui().order("Arrange cards to be put on top of your library", + "Top of Library", CardView.getCollection(topN), null)); + } + } + endTempShowCards(); + return ImmutablePair.of(toTop, toGrave); + } + @Override public boolean willPutCardOnTop(final Card c) { final CardView view = CardView.get(c); @@ -1387,12 +1431,17 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont @Override public List chooseModeForAbility(final SpellAbility sa, final int min, final int num, boolean allowRepeat) { - final List choices = CharmEffect.makePossibleOptions(sa); + final List possible = CharmEffect.makePossibleOptions(sa); + HashMap spellViewCache = new HashMap<>(); + for (AbilitySub spellAbility : possible) { + spellViewCache.put(spellAbility.getView(), spellAbility); + } + final List choices = new ArrayList<>(spellViewCache.keySet()); final String modeTitle = TextUtil.concatNoSpace(sa.getActivatingPlayer().toString(), " activated ", sa.getHostCard().toString(), " - Choose a mode"); final List chosen = Lists.newArrayListWithCapacity(num); for (int i = 0; i < num; i++) { - AbilitySub a; + SpellAbilityView a; if (i < min) { a = getGui().one(modeTitle, choices); } else { @@ -1405,7 +1454,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont if (!allowRepeat) { choices.remove(a); } - chosen.add(a); + chosen.add(spellViewCache.get(a)); } return chosen; } @@ -1465,8 +1514,15 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont final String name) { final Iterable cardsFromDb = FModel.getMagicDb().getCommonCards().getAllFaces(); final List cards = Lists.newArrayList(Iterables.filter(cardsFromDb, cpp)); - Collections.sort(cards); - return getGui().one(message, cards); + CardFaceView cardFaceView; + List choices = new ArrayList<>(); + for (ICardFace cardFace : cards) { + cardFaceView = new CardFaceView(cardFace.getName()); + choices.add(cardFaceView); + } + Collections.sort(choices); + cardFaceView = getGui().one(message, choices); + return StaticData.instance().getCommonCards().getFaceByName(cardFaceView.getName()); } @Override @@ -2085,7 +2141,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont if (subtract) { card.subtractCounter(counter, count); } else { - card.addCounter(counter, count, card, false); + card.addCounter(counter, count, card.getController(), false); } } @@ -2762,8 +2818,25 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont @Override public List chooseCardsForSplice(SpellAbility sa, List cards) { - return getGui().many("Choose cards to Splice onto", "Chosen Cards", 0, cards.size(), cards, - sa.getHostCard().getView()); + HashMap mapCVtoC = new HashMap<>(); + for (Card card : cards) { + mapCVtoC.put(card.getView(), card); + } + List choices = new ArrayList(mapCVtoC.keySet()); + List chosen; + chosen = getGui().many( + "Choose cards to Splice onto", + "Chosen Cards", + 0, + choices.size(), + choices, + sa.getHostCard().getView() + ); + List chosenCards = new ArrayList(); + for (CardView cardView : chosen) { + chosenCards.add(mapCVtoC.get(cardView)); + } + return chosenCards; } /* diff --git a/forge-gui/src/main/java/forge/properties/ForgePreferences.java b/forge-gui/src/main/java/forge/properties/ForgePreferences.java index 96add1638de..22d13d973d7 100644 --- a/forge-gui/src/main/java/forge/properties/ForgePreferences.java +++ b/forge-gui/src/main/java/forge/properties/ForgePreferences.java @@ -136,6 +136,8 @@ public class ForgePreferences extends PreferencesStore { //TODO This should be removed after the update that requires Java 8. DISABLE_DISPLAY_JAVA_8_UPDATE_WARNING("false"), + USE_SENTRY("false"), // this controls whether automated bug reporting is done or not + MATCH_HOT_SEAT_MODE("false"), //this only applies to mobile game MATCHPREF_PROMPT_FREE_BLOCKS("false"), @@ -154,6 +156,7 @@ public class ForgePreferences extends PreferencesStore { ENFORCE_DECK_LEGALITY ("true"), PERFORMANCE_MODE ("false"), + FILTERED_HANDS ("false"), DEV_MODE_ENABLED ("false"), DEV_WORKSHOP_SYNTAX ("false"), diff --git a/forge-gui/src/main/java/forge/quest/QuestWinLoseController.java b/forge-gui/src/main/java/forge/quest/QuestWinLoseController.java index 06226569840..2e93e7d4fec 100644 --- a/forge-gui/src/main/java/forge/quest/QuestWinLoseController.java +++ b/forge-gui/src/main/java/forge/quest/QuestWinLoseController.java @@ -226,9 +226,9 @@ public class QuestWinLoseController { sb.append(StringUtils.capitalize(qEvent.getDifficulty().getTitle())); sb.append(" opponent: ").append(credBase).append(" credits.\n"); - int multiplayer = Math.min(qData.getAchievements().getWin(), FModel.getQuestPreferences().getPrefInt(QPref.REWARDS_WINS_MULTIPLIER_MAX)); + final int winMultiplier = Math.min(qData.getAchievements().getWin(), FModel.getQuestPreferences().getPrefInt(QPref.REWARDS_WINS_MULTIPLIER_MAX)); final int creditsForPreviousWins = (int) ((Double.parseDouble(FModel.getQuestPreferences() - .getPref(QPref.REWARDS_WINS_MULTIPLIER)) * multiplier)); + .getPref(QPref.REWARDS_WINS_MULTIPLIER)) * winMultiplier)); credBase += creditsForPreviousWins; diff --git a/forge-gui/src/main/java/forge/quest/bazaar/QuestBazaarManager.java b/forge-gui/src/main/java/forge/quest/bazaar/QuestBazaarManager.java index a857d5a891f..de2905fb8ed 100644 --- a/forge-gui/src/main/java/forge/quest/bazaar/QuestBazaarManager.java +++ b/forge-gui/src/main/java/forge/quest/bazaar/QuestBazaarManager.java @@ -32,6 +32,9 @@ import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; +import com.thoughtworks.xstream.security.NoTypePermission; +import com.thoughtworks.xstream.security.NullPermission; +import com.thoughtworks.xstream.security.PrimitiveTypePermission; import org.w3c.dom.Attr; import org.w3c.dom.Document; import org.w3c.dom.NamedNodeMap; @@ -69,6 +72,16 @@ public class QuestBazaarManager { final Document document = builder.parse(xmlFile); final XStream xs = new IgnoringXStream(); + // clear out existing permissions and set our own + xs.addPermission(NoTypePermission.NONE); + // allow some basics + xs.addPermission(NullPermission.NULL); + xs.addPermission(PrimitiveTypePermission.PRIMITIVES); + xs.allowTypeHierarchy(String.class); + // allow any type from the same package + xs.allowTypesByWildcard(new String[] { + QuestBazaarManager.class.getPackage().getName()+".*" + }); xs.autodetectAnnotations(true); final NodeList xmlStalls = document.getElementsByTagName("stalls").item(0).getChildNodes(); diff --git a/forge-gui/src/main/java/forge/quest/bazaar/QuestPetStorage.java b/forge-gui/src/main/java/forge/quest/bazaar/QuestPetStorage.java index 3e1a9d6bc07..00216780b9f 100644 --- a/forge-gui/src/main/java/forge/quest/bazaar/QuestPetStorage.java +++ b/forge-gui/src/main/java/forge/quest/bazaar/QuestPetStorage.java @@ -1,6 +1,9 @@ package forge.quest.bazaar; import com.thoughtworks.xstream.XStream; +import com.thoughtworks.xstream.security.NoTypePermission; +import com.thoughtworks.xstream.security.NullPermission; +import com.thoughtworks.xstream.security.PrimitiveTypePermission; import forge.quest.data.QuestAssets; import forge.util.IgnoringXStream; import forge.util.XmlUtil; @@ -42,6 +45,17 @@ public class QuestPetStorage { final Document document = builder.parse(file); final XStream xs = new IgnoringXStream(); + // clear out existing permissions and set our own + xs.addPermission(NoTypePermission.NONE); + // allow some basics + xs.addPermission(NullPermission.NULL); + xs.addPermission(PrimitiveTypePermission.PRIMITIVES); + xs.allowTypeHierarchy(String.class); + // allow any type from the same package + xs.allowTypesByWildcard(new String[] { + QuestPetStorage.class.getPackage().getName()+".*" + }); + xs.autodetectAnnotations(true); final NodeList xmlPets = document.getElementsByTagName("pets").item(0).getChildNodes(); diff --git a/forge-gui/src/main/java/forge/quest/io/QuestDataIO.java b/forge-gui/src/main/java/forge/quest/io/QuestDataIO.java index 6cb80ddaaa8..de680502e37 100644 --- a/forge-gui/src/main/java/forge/quest/io/QuestDataIO.java +++ b/forge-gui/src/main/java/forge/quest/io/QuestDataIO.java @@ -17,6 +17,9 @@ */ package forge.quest.io; +import com.thoughtworks.xstream.security.NoTypePermission; +import com.thoughtworks.xstream.security.NullPermission; +import com.thoughtworks.xstream.security.PrimitiveTypePermission; import forge.quest.data.QuestPreferences.QPref; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.converters.Converter; @@ -78,6 +81,23 @@ public class QuestDataIO { */ protected static XStream getSerializer(final boolean isIgnoring) { final XStream xStream = isIgnoring ? new IgnoringXStream() : new XStream(); + // clear out existing permissions and set our own + xStream.addPermission(NoTypePermission.NONE); + // allow some basics + xStream.addPermission(NullPermission.NULL); + xStream.addPermission(PrimitiveTypePermission.PRIMITIVES); + xStream.allowTypeHierarchy(String.class); + xStream.allowTypeHierarchy(QuestData.class); + xStream.allowTypeHierarchy(HashMap.class); + xStream.allowTypeHierarchy(Deck.class); + xStream.allowTypeHierarchy(DeckGroup.class); + xStream.allowTypeHierarchy(EnumMap.class); + xStream.allowTypeHierarchy(QuestItemType.class); + // allow any type from the same package + xStream.allowTypesByWildcard(new String[] { + QuestDataIO.class.getPackage().getName()+".*", + "forge.quest.data.*" + }); xStream.registerConverter(new ItemPoolToXml()); xStream.registerConverter(new DeckToXml()); xStream.registerConverter(new DraftTournamentToXml()); @@ -98,43 +118,41 @@ public class QuestDataIO { *   {@link java.io.File} * @return {@link forge.quest.data.QuestData} */ - public static QuestData loadData(final File xmlSaveFile) { + public static QuestData loadData(final File xmlSaveFile) throws IOException { + QuestData data; + + final GZIPInputStream zin = new GZIPInputStream(new FileInputStream(xmlSaveFile)); + final StringBuilder xml = new StringBuilder(); + final char[] buf = new char[1024]; + final InputStreamReader reader = new InputStreamReader(zin); + while (reader.ready()) { + final int len = reader.read(buf); + if (len == -1) { + break; + } // when end of stream was reached + xml.append(buf, 0, len); + } + + zin.close(); + + String bigXML = xml.toString(); try { - QuestData data; - - final GZIPInputStream zin = new GZIPInputStream(new FileInputStream(xmlSaveFile)); - final StringBuilder xml = new StringBuilder(); - final char[] buf = new char[1024]; - final InputStreamReader reader = new InputStreamReader(zin); - while (reader.ready()) { - final int len = reader.read(buf); - if (len == -1) { - break; - } // when end of stream was reached - xml.append(buf, 0, len); - } - - zin.close(); - - String bigXML = xml.toString(); data = (QuestData) QuestDataIO.getSerializer(true).fromXML(bigXML); + } catch(Exception ex) { + // Attempt to auto restore? + throw new IOException(ex); + } - if (data.getVersionNumber() != QuestData.CURRENT_VERSION_NUMBER) { - try { - QuestDataIO.updateSaveFile(data, bigXML, xmlSaveFile.getName().replace(".dat", "")); - } - catch (final Exception e) { - //BugReporter.reportException(e); - throw new RuntimeException(e); - } + if (data.getVersionNumber() != QuestData.CURRENT_VERSION_NUMBER) { + try { + QuestDataIO.updateSaveFile(data, bigXML, xmlSaveFile.getName().replace(".dat", "")); } + catch (final Exception e) { + throw new IOException(e); + } + } - return data; - } - catch (final Exception ex) { - //BugReporter.reportException(ex, "Error loading Quest Data"); - throw new RuntimeException(ex); - } + return data; } private static void setFinalField(final Class clasz, final String fieldName, final T instance, diff --git a/forge-gui/src/main/java/forge/tournament/TournamentIO.java b/forge-gui/src/main/java/forge/tournament/TournamentIO.java index 3fb6249e036..d005efc38bf 100644 --- a/forge-gui/src/main/java/forge/tournament/TournamentIO.java +++ b/forge-gui/src/main/java/forge/tournament/TournamentIO.java @@ -6,6 +6,9 @@ import com.thoughtworks.xstream.converters.MarshallingContext; import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; +import com.thoughtworks.xstream.security.NoTypePermission; +import com.thoughtworks.xstream.security.NullPermission; +import com.thoughtworks.xstream.security.PrimitiveTypePermission; import forge.deck.CardPool; import forge.item.PaperCard; import forge.model.FModel; @@ -32,6 +35,16 @@ public class TournamentIO { protected static XStream getSerializer(final boolean isIgnoring) { final XStream xStream = isIgnoring ? new IgnoringXStream() : new XStream(); + // clear out existing permissions and set our own + xStream.addPermission(NoTypePermission.NONE); + // allow some basics + xStream.addPermission(NullPermission.NULL); + xStream.addPermission(PrimitiveTypePermission.PRIMITIVES); + xStream.allowTypeHierarchy(String.class); + // allow any type from the same package + xStream.allowTypesByWildcard(new String[] { + TournamentIO.class.getPackage().getName()+".*" + }); xStream.registerConverter(new DeckSectionToXml()); xStream.autodetectAnnotations(true); return xStream; diff --git a/forge-gui/src/main/java/forge/tournament/TournamentUtil.java b/forge-gui/src/main/java/forge/tournament/TournamentUtil.java index f3d737d7528..5176fb8856b 100644 --- a/forge-gui/src/main/java/forge/tournament/TournamentUtil.java +++ b/forge-gui/src/main/java/forge/tournament/TournamentUtil.java @@ -39,6 +39,12 @@ public class TournamentUtil { case MODERN_CARDGEN_DECK: deck = DeckgenUtil.buildCardGenDeck(FModel.getFormats().getModern(),true); break; + case LEGACY_CARDGEN_DECK: + deck = DeckgenUtil.buildLDACArchetypeDeck(FModel.getFormats().get("Legacy"),true); + break; + case VINTAGE_CARDGEN_DECK: + deck = DeckgenUtil.buildLDACArchetypeDeck(FModel.getFormats().get("Vintage"),true); + break; case MODERN_COLOR_DECK: deck = DeckgenUtil.getRandomColorDeck(FModel.getFormats().getModern().getFilterPrinted(),true); break; diff --git a/forge-gui/src/main/java/forge/util/gui/SGuiChoose.java b/forge-gui/src/main/java/forge/util/gui/SGuiChoose.java index cefdc057c3c..df549cfb93c 100644 --- a/forge-gui/src/main/java/forge/util/gui/SGuiChoose.java +++ b/forge-gui/src/main/java/forge/util/gui/SGuiChoose.java @@ -172,7 +172,7 @@ public class SGuiChoose { return order(title, top, 0, 0, sourceChoices, null); } - private static List order(final String title, final String top, final int remainingObjectsMin, final int remainingObjectsMax, + public static List order(final String title, final String top, final int remainingObjectsMin, final int remainingObjectsMax, final List sourceChoices, final List destChoices) { return GuiBase.getInterface().order(title, top, remainingObjectsMin, remainingObjectsMax, sourceChoices, destChoices); } diff --git a/forge-gui/tools/EditionTracking.py b/forge-gui/tools/EditionTracking.py index 76cb81266a9..b6cc10d5884 100644 --- a/forge-gui/tools/EditionTracking.py +++ b/forge-gui/tools/EditionTracking.py @@ -42,6 +42,10 @@ def initializeEditions(): settype = line.split("=")[1].rstrip() else: + if line.startswith("[tokens]"): + metadata = True + continue + if line: hasSetNumbers = line.split(" ", 1)[0].isdigit() @@ -102,7 +106,7 @@ def initializeForgeCards(): if not name or split: name += line[5:].rstrip().lower() - + elif line.startswith("AlternateMode") and 'Split' in line: split = True @@ -110,11 +114,11 @@ def initializeForgeCards(): def initializeFormats(): formats = {} - formatLocation = os.path.join(resDir, 'formats') + formatLocation = os.path.join(resDir, 'formats', 'Sanctioned') print "Looking for formats in ", formatLocation for root, dirnames, filenames in os.walk(formatLocation): for fileName in fnmatch.filter(filenames, '*.txt'): - if fileName not in ['standard.txt', 'Modern.txt']: + if fileName not in ['Standard.txt', 'Modern.txt']: continue with open(os.path.join(root, fileName)) as formatFile: @@ -298,7 +302,7 @@ if __name__ == '__main__': elif key != "": currentMissing.append(key) total = len(currentMissing)+len(currentImplemented) - percentage = 0 + percentage = 0 if total > 0 : percentage = (float(len(currentImplemented))/float(total))*100 currentMissing.sort() @@ -338,7 +342,7 @@ if __name__ == '__main__': text = normalizeOracle(orc.get('text')) except: text = '' - + output.write(text + '\n\n') output.write("\n") output.write("Total: " + str(total) + "\n") diff --git a/forge-gui/tools/migrateUpcoming.py b/forge-gui/tools/migrateUpcoming.py index 482e2469934..9303b7a2544 100644 --- a/forge-gui/tools/migrateUpcoming.py +++ b/forge-gui/tools/migrateUpcoming.py @@ -12,6 +12,6 @@ for dirName, subdirList, fileList in os.walk(upcoming): newFile = os.path.join(cardsfolder, filename[0], filename) if os.path.exists(newFile): - subprocess.call('git rm %s' % (newFile), shell=True) + subprocess.call('git rm %s' % (newFile), shell=True) else: - subprocess.call('git mv %s %s' % (curLocation, newFile), shell=True) \ No newline at end of file + subprocess.call('git mv %s %s' % (curLocation, newFile), shell=True) \ No newline at end of file diff --git a/forge-gui/tools/scryfallEditionParser.sh b/forge-gui/tools/scryfallEditionParser.sh new file mode 100644 index 00000000000..382ba246aa9 --- /dev/null +++ b/forge-gui/tools/scryfallEditionParser.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +declare -A types +types=( ["commander"]="Other" ["core"]="Core") +declare -A rarities +rarities=( ["mythic"]="M" ["rare"]="R" ["uncommon"]="U" ["common"]="C" ["rare"]="R" ) + +setname=$1 +wget -q -O /tmp/setinfo.json "https://api.scryfall.com/sets/$setname?format=json" +wget "https://api.scryfall.com/cards/search?order=set&unique=art&q=set%3D$setname" -q -O /tmp/set.json + +cat /tmp/set.json | jq ".data | .[].collector_number" | sed "s/\"//g" > /tmp/cardidlist + +hasmore=`cat /tmp/set.json | jq ".has_more" | sed "s/\"//g"` +nextpage=`cat /tmp/set.json | jq ".next_page" | sed "s/\"//g"` +while [ $hasmore ] ; do + sleep 0.01 + wget "$nextpage" -q -O /tmp/next.json + cat /tmp/next.json | jq ".data | .[].collector_number" | sed "s/\"//g" >> /tmp/cardidlist + hasmore=`cat /tmp/next.json | jq ".has_more" | sed "s/\"//g"` + nextpage=`cat /tmp/next.json | jq ".next_page" | sed "s/\"//g"` +done + + +cardIDs=($(cat /tmp/cardidlist)) + +sleep 0.1 + +echo "[metadata]" +code=`echo "$1" | awk '{print toupper($0)}'` +dateReleased=`cat /tmp/setinfo.json | jq ".released_at" | sed "s/\"//g"` +name=`cat /tmp/setinfo.json | jq ".name" | sed "s/\"//g"` +echo "Code=$code" +echo "Date=$dateReleased" +echo "Name=$name" +echo "Code2=$code" +echo "MciCode=$1" +echo "Type=Other" +echo "" +echo "[cards]" +for i in "${cardIDs[@]}" +do + sleep 0.01 + wget -q -O /tmp/$i.json "https://api.scryfall.com/cards/$setname/$i?format=json" + name=`cat /tmp/$i.json | jq .name | sed "s/\"//g"` + basiclandtype=`cat /tmp/$i.json | jq .type_line | sed "s/\"//g" | grep "Basic Land" | wc -l` + if [ $basiclandtype -gt 0 ]; then + rarity="L" + else + rarityString=`cat /tmp/$i.json | jq .rarity | sed "s/\"//g"` + rarity=${rarities[$rarityString]} + fi + cnumber=`cat /tmp/$i.json | jq .collector_number | sed "s/\"//g"` + echo "$cnumber $rarity $name" + + +done diff --git a/pom.xml b/pom.xml index dcd609053b2..9f5856c47b6 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ forge pom Forge Parent - 1.6.11-SNAPSHOT + 1.6.16-SNAPSHOT Forge lets you play the card game Magic: The Gathering against a computer opponent