diff --git a/forge-ai/src/main/java/forge/ai/AiAttackController.java b/forge-ai/src/main/java/forge/ai/AiAttackController.java index 2857e710e9c..cfd651b39e2 100644 --- a/forge-ai/src/main/java/forge/ai/AiAttackController.java +++ b/forge-ai/src/main/java/forge/ai/AiAttackController.java @@ -722,6 +722,11 @@ public class AiAttackController { return pwNearUlti != null ? pwNearUlti : ComputerUtilCard.getBestPlaneswalkerAI(pwDefending); } + List battleDefending = c.getDefendingBattles(); + if (!battleDefending.isEmpty()) { + // TODO filter for team ones + } + return prefDefender; } diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java b/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java index a8008e8a5a5..69ceee83ac3 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java @@ -2059,31 +2059,23 @@ public class ComputerUtilCombat { if (block.size() == 1) { final Card blocker = block.getFirst(); + int dmgToBlocker = dmgCanDeal; - if (hasTrample) { - int dmgToKill = getEnoughDamageToKill(blocker, dmgCanDeal, attacker, true); + if (hasTrample && isAttacking) { // otherwise no entity to deliver damage via trample + dmgToBlocker = getEnoughDamageToKill(blocker, dmgCanDeal, attacker, true); - if (dmgCanDeal < dmgToKill) { - dmgToKill = Math.min(blocker.getLethalDamage(), dmgCanDeal); - } else { - dmgToKill = Math.max(blocker.getLethalDamage(), dmgToKill); + if (dmgCanDeal < dmgToBlocker) { + // can't kill so just put the lowest legal amount + dmgToBlocker = Math.min(blocker.getLethalDamage(), dmgCanDeal); } - if (!isAttacking) { // no entity to deliver damage via trample - dmgToKill = dmgCanDeal; - } - - final int remainingDmg = dmgCanDeal - dmgToKill; - + final int remainingDmg = dmgCanDeal - dmgToBlocker; // If Extra trample damage, assign to defending player/planeswalker (when there is one) if (remainingDmg > 0) { damageMap.put(null, remainingDmg); } - - damageMap.put(blocker, dmgToKill); - } else { - damageMap.put(blocker, dmgCanDeal); } + damageMap.put(blocker, dmgToBlocker); } // 1 blocker else { // Does the attacker deal lethal damage to all blockers @@ -2478,10 +2470,15 @@ public class ComputerUtilCombat { public static GameEntity addAttackerToCombat(SpellAbility sa, Card attacker, Iterable defenders) { Combat combat = sa.getHostCard().getGame().getCombat(); if (combat != null) { - // 1. If the card that spawned the attacker was sent at a planeswalker, attack the same. Consider improving. GameEntity def = combat.getDefenderByAttacker(sa.getHostCard()); - if (def instanceof Card && ((Card)def).isPlaneswalker() && Iterables.contains(defenders, def)) { - return def; + // 1. If the card that spawned the attacker was sent at a card, attack the same. Consider improving. + if (def instanceof Card && Iterables.contains(defenders, def)) { + if (((Card)def).isPlaneswalker()) { + return def; + } + if (((Card)def).isBattle()) { + return def; + } } // 2. Otherwise, go through the list of options one by one, choose the first one that can't be blocked profitably. for (GameEntity p : defenders) { diff --git a/forge-ai/src/main/java/forge/ai/SpellAbilityAi.java b/forge-ai/src/main/java/forge/ai/SpellAbilityAi.java index 671c9867b9b..285c07aca49 100644 --- a/forge-ai/src/main/java/forge/ai/SpellAbilityAi.java +++ b/forge-ai/src/main/java/forge/ai/SpellAbilityAi.java @@ -314,21 +314,21 @@ public abstract class SpellAbilityAi { public T chooseSingleEntity(Player ai, SpellAbility sa, Collection options, boolean isOptional, Player targetedPlayer, Map params) { boolean hasPlayer = false; boolean hasCard = false; - boolean hasPlaneswalker = false; + boolean hasAttackableCard = false; for (T ent : options) { if (ent instanceof Player) { hasPlayer = true; } else if (ent instanceof Card) { hasCard = true; - if (((Card)ent).isPlaneswalker()) { - hasPlaneswalker = true; + if (((Card)ent).isPlaneswalker() || ((Card)ent).isBattle()) { + hasAttackableCard = true; } } } - if (hasPlayer && hasPlaneswalker) { - return (T) chooseSinglePlayerOrPlaneswalker(ai, sa, (Collection) options, params); + if (hasPlayer && hasAttackableCard) { + return (T) chooseSingleAttackableEntity(ai, sa, (Collection) options, params); } else if (hasCard) { return (T) chooseSingleCard(ai, sa, (Collection) options, isOptional, targetedPlayer, params); } else if (hasPlayer) { @@ -353,7 +353,7 @@ public abstract class SpellAbilityAi { return Iterables.getFirst(options, null); } - protected GameEntity chooseSinglePlayerOrPlaneswalker(Player ai, SpellAbility sa, Iterable options, Map params) { + protected GameEntity chooseSingleAttackableEntity(Player ai, SpellAbility sa, Iterable options, Map params) { System.err.println("Warning: default (ie. inherited from base class) implementation of chooseSinglePlayerOrPlaneswalker is used for " + this.getClass().getName() + ". Consider declaring an overloaded method"); return Iterables.getFirst(options, null); } 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 bf263a06eed..d0a945d43a2 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java @@ -1760,12 +1760,12 @@ public class ChangeZoneAi extends SpellAbilityAi { } @Override - protected GameEntity chooseSinglePlayerOrPlaneswalker(Player ai, SpellAbility sa, Iterable options, Map params) { + protected GameEntity chooseSingleAttackableEntity(Player ai, SpellAbility sa, Iterable options, Map params) { if (params != null && params.containsKey("Attacker")) { return ComputerUtilCombat.addAttackerToCombat(sa, (Card) params.get("Attacker"), options); } // should not be reached - return super.chooseSinglePlayerOrPlaneswalker(ai, sa, options, params); + return super.chooseSingleAttackableEntity(ai, sa, options, params); } private boolean doSacAndReturnFromGraveLogic(final Player ai, final SpellAbility sa) { diff --git a/forge-ai/src/main/java/forge/ai/ability/ChoosePlayerAi.java b/forge-ai/src/main/java/forge/ai/ability/ChoosePlayerAi.java index 2b5c6af415a..d2e1aed14a1 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ChoosePlayerAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ChoosePlayerAi.java @@ -9,6 +9,8 @@ import com.google.common.collect.Lists; import forge.ai.ComputerUtil; import forge.ai.SpellAbilityAi; import forge.game.player.Player; +import forge.game.player.PlayerCollection; +import forge.game.player.PlayerPredicates; import forge.game.spellability.SpellAbility; import forge.game.zone.ZoneType; @@ -31,7 +33,10 @@ public class ChoosePlayerAi extends SpellAbilityAi { @Override public Player chooseSinglePlayer(Player ai, SpellAbility sa, Iterable choices, Map params) { Player chosen = null; - if ("Curse".equals(sa.getParam("AILogic"))) { + if (sa.hasParam("Protect")) { + chosen = new PlayerCollection(choices).min(PlayerPredicates.compareByLife()); + } + else if ("Curse".equals(sa.getParam("AILogic"))) { for (Player pc : choices) { if (pc.isOpponentOf(ai)) { chosen = pc; diff --git a/forge-ai/src/main/java/forge/ai/ability/CopyPermanentAi.java b/forge-ai/src/main/java/forge/ai/ability/CopyPermanentAi.java index 53fe0518bcf..e17c9926259 100644 --- a/forge-ai/src/main/java/forge/ai/ability/CopyPermanentAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/CopyPermanentAi.java @@ -261,12 +261,12 @@ public class CopyPermanentAi extends SpellAbilityAi { } @Override - protected GameEntity chooseSinglePlayerOrPlaneswalker(Player ai, SpellAbility sa, Iterable options, Map params) { + protected GameEntity chooseSingleAttackableEntity(Player ai, SpellAbility sa, Iterable options, Map params) { if (params != null && params.containsKey("Attacker")) { return ComputerUtilCombat.addAttackerToCombat(sa, (Card) params.get("Attacker"), options); } // should not be reached - return super.chooseSinglePlayerOrPlaneswalker(ai, sa, options, params); + return super.chooseSingleAttackableEntity(ai, sa, options, params); } } diff --git a/forge-ai/src/main/java/forge/ai/ability/DigAi.java b/forge-ai/src/main/java/forge/ai/ability/DigAi.java index cfd4214d834..c8e8e2b8c76 100644 --- a/forge-ai/src/main/java/forge/ai/ability/DigAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/DigAi.java @@ -196,12 +196,12 @@ public class DigAi extends SpellAbilityAi { } @Override - protected GameEntity chooseSinglePlayerOrPlaneswalker(Player ai, SpellAbility sa, Iterable options, Map params) { + protected GameEntity chooseSingleAttackableEntity(Player ai, SpellAbility sa, Iterable options, Map params) { if (params != null && params.containsKey("Attacker")) { return ComputerUtilCombat.addAttackerToCombat(sa, (Card) params.get("Attacker"), options); } // should not be reached - return super.chooseSinglePlayerOrPlaneswalker(ai, sa, options, params); + return super.chooseSingleAttackableEntity(ai, sa, options, params); } /* (non-Javadoc) 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 023ad61cbf6..839d6fbbf00 100644 --- a/forge-ai/src/main/java/forge/ai/ability/TokenAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/TokenAi.java @@ -326,12 +326,12 @@ public class TokenAi extends SpellAbilityAi { * @see forge.card.ability.SpellAbilityAi#chooseSinglePlayerOrPlaneswalker(forge.game.player.Player, forge.card.spellability.SpellAbility, Iterable options) */ @Override - protected GameEntity chooseSinglePlayerOrPlaneswalker(Player ai, SpellAbility sa, Iterable options, Map params) { + protected GameEntity chooseSingleAttackableEntity(Player ai, SpellAbility sa, Iterable options, Map params) { if (params != null && params.containsKey("Attacker")) { return ComputerUtilCombat.addAttackerToCombat(sa, (Card) params.get("Attacker"), options); } // should not be reached - return super.chooseSinglePlayerOrPlaneswalker(ai, sa, options, params); + return super.chooseSingleAttackableEntity(ai, sa, options, params); } /** diff --git a/forge-core/src/main/java/forge/card/CardType.java b/forge-core/src/main/java/forge/card/CardType.java index c08a35d02af..c735f559199 100644 --- a/forge-core/src/main/java/forge/card/CardType.java +++ b/forge-core/src/main/java/forge/card/CardType.java @@ -912,6 +912,9 @@ public final class CardType implements Comparable, CardTypeView { public static Collection getAllCreatureTypes() { return Collections.unmodifiableCollection(Constant.CREATURE_TYPES); } + public static Collection getAllWalkerTypes() { + return Collections.unmodifiableCollection(Constant.WALKER_TYPES); + } public static List getAllLandTypes() { return ImmutableList.builder() .addAll(getBasicTypes()) diff --git a/forge-game/src/main/java/forge/game/ForgeScript.java b/forge-game/src/main/java/forge/game/ForgeScript.java index b11d9040420..1a5029cbde0 100644 --- a/forge-game/src/main/java/forge/game/ForgeScript.java +++ b/forge-game/src/main/java/forge/game/ForgeScript.java @@ -146,6 +146,13 @@ public class ForgeScript { } } return false; + } else if (property.equals("hasOtherActivatedAbility")) { + for (final SpellAbility sa : cardState.getSpellAbilities()) { + if (sa.isActivatedAbility() && !sa.equals(spellAbility)) { + return true; + } + } + return false; } else if (property.equals("hasManaAbility")) { if (Iterables.any(cardState.getSpellAbilities(), SpellAbilityPredicates.isManaAbility())) { 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 f89eaca73d2..c61f79c7a92 100644 --- a/forge-game/src/main/java/forge/game/GameAction.java +++ b/forge-game/src/main/java/forge/game/GameAction.java @@ -1448,7 +1448,9 @@ public class GameAction { if (game.getCombat() != null) { game.getCombat().removeAbsentCombatants(); } + table.triggerChangesZoneAll(game, null); + if (!checkAgain) { break; // do not continue the loop } 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 bcc36751067..2505563569f 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java @@ -1453,7 +1453,6 @@ public class AbilityUtils { // Needed - Equip an untapped creature with Sword of the Paruns then cast Deadshot on it. Should deal 2 more damage. game.getAction().checkStaticAbilities(); // this will refresh continuous abilities for players and permanents. - game.getTriggerHandler().resetActiveTriggers(!sa.isReplacementAbility()); AbilityUtils.resolveApiAbility(abSub, game); } diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChooseTypeEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChooseTypeEffect.java index 44fab580e10..8915a30849b 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChooseTypeEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChooseTypeEffect.java @@ -73,6 +73,9 @@ public class ChooseTypeEffect extends SpellAbilityEffect { case "Land": validTypes.addAll(CardType.getAllLandTypes()); break; + case "Planeswalker": + validTypes.addAll(CardType.getAllWalkerTypes()); + break; case "CreatureInTargetedDeck": for (final Player p : tgtPlayers) { for (Card c : p.getAllCards()) { 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 36170ceab0d..218a992e8f2 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 @@ -82,11 +82,9 @@ public class ExploreEffect extends SpellAbilityEffect { if (!revealedLand) { // need to get newest game state to check // if it is still on the battlefield - // and the timestamp didnt chamge + // and the timestamp didnt change Card gamec = game.getCardState(c); - // 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.equalsWithTimestamp(c)) { + if (gamec.isInPlay() && gamec.equalsWithTimestamp(c)) { c.addCounter(CounterEnumType.P1P1, 1, pl, table); } } diff --git a/forge-game/src/main/java/forge/game/ability/effects/ManaReflectedEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ManaReflectedEffect.java index 349a94a8d7a..caf78c90520 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ManaReflectedEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ManaReflectedEffect.java @@ -1,6 +1,7 @@ package forge.game.ability.effects; import java.util.Collection; +import java.util.Map; import org.apache.commons.lang3.StringUtils; @@ -54,6 +55,24 @@ public class ManaReflectedEffect extends SpellAbilityEffect { private static String generatedReflectedMana(final SpellAbility sa, final Collection colors, final Player player) { // Calculate generated mana here for stack description and resolving final int amount = sa.hasParam("Amount") ? AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("Amount"), sa) : 1; + final StringBuilder sb = new StringBuilder(); + + if (sa.getManaPart().isComboMana()) { + Map choices = player.getController().specifyManaCombo(sa, ColorSet.fromNames(colors), amount, false); + for (Map.Entry e : choices.entrySet()) { + Byte chosenColor = e.getKey(); + String choice = MagicColor.toShortString(chosenColor); + Integer count = e.getValue(); + while (count > 0) { + if (sb.length() > 0) { + sb.append(" "); + } + sb.append(choice); + --count; + } + } + return sb.toString(); + } String baseMana; @@ -93,7 +112,6 @@ public class ManaReflectedEffect extends SpellAbilityEffect { } } - final StringBuilder sb = new StringBuilder(); if (amount == 0) { sb.append("0"); } else { diff --git a/forge-game/src/main/java/forge/game/ability/effects/PlayEffect.java b/forge-game/src/main/java/forge/game/ability/effects/PlayEffect.java index f5d1edc79aa..321bb457bb6 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/PlayEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/PlayEffect.java @@ -25,6 +25,7 @@ import forge.game.ability.AbilityUtils; import forge.game.ability.SpellAbilityEffect; import forge.game.card.Card; import forge.game.card.CardCollection; +import forge.game.card.CardCollectionView; import forge.game.card.CardFactoryUtil; import forge.game.card.CardZoneTable; import forge.game.cost.Cost; @@ -109,13 +110,13 @@ public class PlayEffect extends SpellAbilityEffect { } CardCollection tgtCards; - CardCollection showCards = new CardCollection(); + CardCollectionView showCards = new CardCollection(); if (sa.hasParam("Valid")) { List zones = sa.hasParam("ValidZone") ? ZoneType.listValueOf(sa.getParam("ValidZone")) : ImmutableList.of(ZoneType.Hand); tgtCards = new CardCollection(AbilityUtils.filterListByType(game.getCardsIn(zones), sa.getParam("Valid"), sa)); if (sa.hasParam("ShowCards")) { - showCards = new CardCollection(AbilityUtils.filterListByType(game.getCardsIn(zones), sa.getParam("ShowCards"), sa)); + showCards = AbilityUtils.filterListByType(game.getCardsIn(zones), sa.getParam("ShowCards"), sa); } } else if (sa.hasParam("AnySupportedCard")) { final String valid = sa.getParam("AnySupportedCard"); diff --git a/forge-game/src/main/java/forge/game/ability/effects/RegenerateEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RegenerateEffect.java index 8a9541342f7..e3575ee2b99 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RegenerateEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RegenerateEffect.java @@ -46,7 +46,7 @@ public class RegenerateEffect extends RegenerateBaseEffect { @Override public void resolve(SpellAbility sa) { // create Effect for Regeneration - createRegenerationEffect(sa, getTargetCards(sa)); + createRegenerationEffect(sa, getDefinedCardsOrTargeted(sa)); } } 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 8a0dccdd1a4..ec1fdf74f6d 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -1541,9 +1541,29 @@ public class Card extends GameEntity implements Comparable, IHasSVars { @Override public final void subtractCounter(final CounterType counterName, final int n) { + subtractCounter(counterName, n, false); + } + + public final void subtractCounter(final CounterType counterName, final int n, final boolean isDamage) { int oldValue = getCounters(counterName); int newValue = Math.max(oldValue - n, 0); + final Map repParams = AbilityKey.mapFromAffected(this); + repParams.put(AbilityKey.CounterType, counterName); + repParams.put(AbilityKey.Result, newValue); + repParams.put(AbilityKey.IsDamage, isDamage); + switch (getGame().getReplacementHandler().run(ReplacementType.RemoveCounter, repParams)) { + case NotReplaced: + break; + case Updated: + int result = (int) repParams.get(AbilityKey.Result); + newValue = result; + if (newValue <= 0) { + newValue = 0; + } + break; + } + final int delta = oldValue - newValue; if (delta == 0) { return; } @@ -3160,7 +3180,7 @@ public class Card extends GameEntity implements Comparable, IHasSVars { // no Ability for this type yet, make a new one if (sa == null) { - sa = CardFactoryUtil.buildBasicLandAbility(state, c); + sa = CardFactory.buildBasicLandAbility(state, c); basicLandAbilities[i] = sa; } @@ -5794,10 +5814,10 @@ public class Card extends GameEntity implements Comparable, IHasSVars { DamageType damageType = DamageType.Normal; if (isPlaneswalker()) { // 120.3c - subtractCounter(CounterType.get(CounterEnumType.LOYALTY), damageIn); + subtractCounter(CounterType.get(CounterEnumType.LOYALTY), damageIn, true); } if (isBattle()) { - subtractCounter(CounterType.get(CounterEnumType.DEFENSE), damageIn); + subtractCounter(CounterType.get(CounterEnumType.DEFENSE), damageIn, true); } if (isCreature()) { boolean wither = game.getStaticEffects().getGlobalRuleChange(GlobalRuleChange.alwaysWither) 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 e4c43590940..618b9eb1bdc 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactory.java +++ b/forge-game/src/main/java/forge/game/card/CardFactory.java @@ -380,6 +380,15 @@ public class CardFactory { } } + public static SpellAbility buildBasicLandAbility(final CardState state, byte color) { + String strcolor = MagicColor.toShortString(color); + String abString = "AB$ Mana | Cost$ T | Produced$ " + strcolor + + " | Secondary$ True | SpellDescription$ Add {" + strcolor + "}."; + SpellAbility sa = AbilityFactory.getAbility(abString, state); + sa.setIntrinsic(true); // always intrisic + return sa; + } + private static Card readCard(final CardRules rules, final IPaperCard paperCard, int cardId, Game game) { final Card card = new Card(cardId, paperCard, game); 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 2c6744f7231..0b3863f44c6 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -89,15 +89,6 @@ import io.sentry.Sentry; */ public class CardFactoryUtil { - public static SpellAbility buildBasicLandAbility(final CardState state, byte color) { - String strcolor = MagicColor.toShortString(color); - String abString = "AB$ Mana | Cost$ T | Produced$ " + strcolor + - " | Secondary$ True | SpellDescription$ Add {" + strcolor + "}."; - SpellAbility sa = AbilityFactory.getAbility(abString, state); - sa.setIntrinsic(true); // always intrisic - return sa; - } - /** *

* abilityMorphDown. @@ -3932,7 +3923,7 @@ public class CardFactoryUtil { StringBuilder chooseSB = new StringBuilder(); chooseSB.append("Event$ Moved | ValidCard$ Card.Self | Destination$ Battlefield | ReplacementResult$ Updated"); chooseSB.append(" | Description$ (As a Siege enters the battlefield, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)"); - String chooseProtector = "DB$ ChoosePlayer | Defined$ You | Choices$ Opponent | Protect$ True | ChoiceTitle$ Choose an opponent to protect this battle | AILogic$ Curse"; + String chooseProtector = "DB$ ChoosePlayer | Defined$ You | Choices$ Opponent | Protect$ True | ChoiceTitle$ Choose an opponent to protect this battle"; ReplacementEffect re = ReplacementHandler.parseReplacement(chooseSB.toString(), card, true); re.setOverridingAbility(AbilityFactory.getAbility(chooseProtector, card)); 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 4695ff593e7..4ad8b439eb0 100644 --- a/forge-game/src/main/java/forge/game/card/CardProperty.java +++ b/forge-game/src/main/java/forge/game/card/CardProperty.java @@ -1316,7 +1316,14 @@ public class CardProperty { } } } else if (property.startsWith("leastToughness")) { - final CardCollectionView cards = CardLists.filter(game.getCardsIn(ZoneType.Battlefield), Presets.CREATURES); + CardCollectionView cards = CardLists.filter(game.getCardsIn(ZoneType.Battlefield), Presets.CREATURES); + if (property.contains("ControlledBy")) { // 4/25/2023 only used for adventure mode Death Ring + FCollectionView p = AbilityUtils.getDefinedPlayers(source, property.split("ControlledBy")[1], spellAbility); + cards = CardLists.filterControlledBy(cards, p); + if (!cards.contains(card)) { + return false; + } + } for (final Card crd : cards) { if (crd.getNetToughness() < card.getNetToughness()) { return false; 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 972c6f67a25..c7b99479eb8 100644 --- a/forge-game/src/main/java/forge/game/card/CardUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardUtil.java @@ -203,7 +203,7 @@ public final class CardUtil { newCopy.getCurrentState().copyFrom(in.getState(in.getFaceupCardStateName()), true); if (in.isFaceDown()) { newCopy.turnFaceDownNoUpdate(); - newCopy.setType(new CardType(in.getCurrentState().getType())); + newCopy.setType(new CardType(in.getFaceDownState().getType())); // prevent StackDescription from revealing face newCopy.updateStateForView(); } diff --git a/forge-game/src/main/java/forge/game/combat/Combat.java b/forge-game/src/main/java/forge/game/combat/Combat.java index 2aa45f163e9..851303f937d 100644 --- a/forge-game/src/main/java/forge/game/combat/Combat.java +++ b/forge-game/src/main/java/forge/game/combat/Combat.java @@ -47,6 +47,8 @@ import forge.game.card.Card; import forge.game.card.CardCollection; import forge.game.card.CardCollectionView; import forge.game.card.CardDamageMap; +import forge.game.card.CardLists; +import forge.game.card.CardPredicates; import forge.game.card.CardUtil; import forge.game.keyword.Keyword; import forge.game.player.Player; @@ -231,7 +233,11 @@ public class Combat { } public final CardCollection getDefendingPlaneswalkers() { - return new CardCollection(Iterables.filter(attackableEntries, Card.class)); + return CardLists.filter(Iterables.filter(attackableEntries, Card.class), CardPredicates.isType("Planeswalker")); + } + + public final CardCollection getDefendingBattles() { + return CardLists.filter(Iterables.filter(attackableEntries, Card.class), CardPredicates.isType("Battle")); } public final Map getAttackersAndDefenders() { @@ -619,17 +625,17 @@ public class Combat { } } - for (Card pw : getDefendingPlaneswalkers()) { - if (pw.equals(c)) { + for (Card battleOrPW : Iterables.filter(attackableEntries, Card.class)) { + if (battleOrPW.equals(c)) { Multimap attackerBuffer = ArrayListMultimap.create(); Collection bands = attackedByBands.get(c); - for (AttackingBand abPW : bands) { - unregisterDefender(c, abPW); + for (AttackingBand abDef : bands) { + unregisterDefender(c, abDef); // Rule 506.4c workaround to keep creatures in combat Card fake = new Card(-1, c.getGame()); fake.setName(""); fake.setController(c.getController(), 0); - attackerBuffer.put(fake, abPW); + attackerBuffer.put(fake, abDef); } bands.clear(); attackedByBands.putAll(attackerBuffer); diff --git a/forge-game/src/main/java/forge/game/cost/CostExileFromStack.java b/forge-game/src/main/java/forge/game/cost/CostExileFromStack.java index 98ae0998eee..c40a5f5be97 100644 --- a/forge-game/src/main/java/forge/game/cost/CostExileFromStack.java +++ b/forge-game/src/main/java/forge/game/cost/CostExileFromStack.java @@ -87,7 +87,7 @@ public class CostExileFromStack extends CostPart { return true; // this will always work } - CardCollectionView list = payer.getCardsIn(ZoneType.Stack); + CardCollectionView list = source.getGame().getCardsIn(ZoneType.Stack); list = CardLists.getValidCards(list, type.split(";"), payer, source, ability); diff --git a/forge-game/src/main/java/forge/game/replacement/ReplaceRemoveCounter.java b/forge-game/src/main/java/forge/game/replacement/ReplaceRemoveCounter.java new file mode 100644 index 00000000000..0888ec51767 --- /dev/null +++ b/forge-game/src/main/java/forge/game/replacement/ReplaceRemoveCounter.java @@ -0,0 +1,70 @@ +package forge.game.replacement; + +import forge.game.ability.AbilityKey; +import forge.game.card.Card; +import forge.game.card.CounterType; +import forge.game.player.Player; +import forge.game.spellability.SpellAbility; +import forge.util.Expressions; + +import java.util.Map; + +public class ReplaceRemoveCounter extends ReplacementEffect { + + /** + * Instantiates a new replace counters removed. + * + * @param map the map + * @param host the host + */ + public ReplaceRemoveCounter(Map map, Card host, boolean intrinsic) { + super(map, host, intrinsic); + } + + /* (non-Javadoc) + * @see forge.card.replacement.ReplacementEffect#canReplace(java.util.HashMap) + */ + @Override + public boolean canReplace(Map runParams) { + if (!matchesValidParam("ValidCard", runParams.get(AbilityKey.Affected))) { + return false; + } + if (hasParam("IsDamage")) { + if (getParam("IsDamage").equals("True") != ((Boolean) runParams.get(AbilityKey.IsDamage))) { + return false; + } + } + if (hasParam("ValidCounterType")) { + final CounterType cType = (CounterType) runParams.get(AbilityKey.CounterType); + final String type = getParam("ValidCounterType"); + if (!type.equals(cType.toString())) { + return false; + } + } + if (hasParam("Result")) { + final int n = (Integer)runParams.get(AbilityKey.Result); + String comparator = getParam("Result"); + final String operator = comparator.substring(0, 2); + final int operandValue = Integer.parseInt(comparator.substring(2)); + if (!Expressions.compare(n, operator, operandValue)) { + return false; + } + } + return true; + } + + /* (non-Javadoc) + * @see forge.card.replacement.ReplacementEffect#setReplacingObjects(java.util.HashMap, forge.card.spellability.SpellAbility) + */ + @Override + public void setReplacingObjects(Map runParams, SpellAbility sa) { + sa.setReplacingObject(AbilityKey.CounterMap, runParams.get(AbilityKey.CounterMap)); + Object o = runParams.get(AbilityKey.Affected); + if (o instanceof Card) { + sa.setReplacingObject(AbilityKey.Card, o); + } else if (o instanceof Player) { + sa.setReplacingObject(AbilityKey.Player, o); + } + sa.setReplacingObject(AbilityKey.Object, o); + } +} 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 ae1cca0ff0f..2107dcb3c9d 100644 --- a/forge-game/src/main/java/forge/game/replacement/ReplacementType.java +++ b/forge-game/src/main/java/forge/game/replacement/ReplacementType.java @@ -36,6 +36,7 @@ public enum ReplacementType { PlanarDiceResult(ReplacePlanarDiceResult.class), ProduceMana(ReplaceProduceMana.class), Proliferate(ReplaceProliferate.class), + RemoveCounter(ReplaceRemoveCounter.class), RollPlanarDice(ReplaceRollPlanarDice.class), Scry(ReplaceScry.class), SetInMotion(ReplaceSetInMotion.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 ccf8c4533be..034e1e6ef40 100644 --- a/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java +++ b/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java @@ -64,6 +64,7 @@ public class WrappedAbility extends Ability { ApiType.SetState, ApiType.Play, ApiType.SacrificeAll, + ApiType.Pump, ApiType.DelayedTrigger ); diff --git a/forge-gui/res/adventure/Shandalar/custom_cards/flame_sword.txt b/forge-gui/res/adventure/Shandalar/custom_cards/flame_sword.txt index 764b2c0ca05..a4fc7b51de1 100644 --- a/forge-gui/res/adventure/Shandalar/custom_cards/flame_sword.txt +++ b/forge-gui/res/adventure/Shandalar/custom_cards/flame_sword.txt @@ -1,9 +1,7 @@ Name:Flame Sword Types:Artifact -A:AB$ DealDamage | ActivationLimit$ 1 | Cost$ PayShards<3> | ActivationZone$ Command | ValidTgts$ Any | NumDmg$ Z | SubAbility$ Eject | SpellDescription$ Deal 3 damage to any target. If the target is a tapped creature, deal 5 damage to it instead. -SVar:X:3 -SVar:Y:Targeted$Valid Creature.tapped/Times.2 -SVar:Z:SVar$X/Plus.Y +A:AB$ DealDamage | ActivationLimit$ 1 | Cost$ PayShards<3> | ActivationZone$ Command | ValidTgts$ Any | NumDmg$ X | SubAbility$ Eject | SpellDescription$ CARDNAME deals 3 damage to any target, or 5 damage to target tapped creature. +SVar:X:Count$Compare Y GE1.5.3 +SVar:Y:Targeted$Valid Creature.tapped SVar:Eject:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile Oracle:{M}{M}{M}: Flame Sword deals 3 damage to any target, or 5 damage to target tapped creature. - diff --git a/forge-gui/res/blockdata/blocks.txt b/forge-gui/res/blockdata/blocks.txt index fdc5745de8f..662e2dd56ca 100644 --- a/forge-gui/res/blockdata/blocks.txt +++ b/forge-gui/res/blockdata/blocks.txt @@ -122,3 +122,4 @@ Phyrexia: All Will Be One Jumpstart, -/2/ONE, Meta-Choose(S(ONE Mite-y 1)Mite-y Alchemy: Phyrexia, 3/6/ONE, YONE Shadows over Innistrad Remastered, 3/6/SIR, SIR March of the Machine, 3/6/MOM, MOM +March of the Machine Jumpstart, -/2/MOM, Meta-Choose(S(MOM Brood 1)Brood 1;S(MOM Brood 2)Brood 2 ;S(MOM Overachiever 1)Overachiever 1;S(MOM Overachiever 2)Overachiever 2;S(MOM Expendable 1)Expendable 1;S(MOM Expendable 2)Expendable 2;S(MOM Reinforcement 1)Reinforcement 1;S(MOM Reinforcement 2)Reinforcement 2;S(MOM Buff 1)Buff 1;S(MOM Buff 2)Buff 2)Themes diff --git a/forge-gui/res/cardsfolder/a/armament_master.txt b/forge-gui/res/cardsfolder/a/armament_master.txt index d183e71827d..82d82b2e493 100644 --- a/forge-gui/res/cardsfolder/a/armament_master.txt +++ b/forge-gui/res/cardsfolder/a/armament_master.txt @@ -2,7 +2,7 @@ Name:Armament Master ManaCost:W W Types:Creature Kor Soldier PT:2/2 -S:Mode$ Continuous | Affected$ Creature.Kor+Other+YouCtrl | AddPower$ X | AddToughness$ X | Description$ Other Kor creatures you control get +2/+2 for each Equipment attached to Armament Master. +S:Mode$ Continuous | Affected$ Creature.Kor+Other+YouCtrl | AddPower$ X | AddToughness$ X | Description$ Other Kor creatures you control get +2/+2 for each Equipment attached to CARDNAME. SVar:X:Count$Valid Equipment.Attached/Times.2 SVar:EquipMe:Multiple Oracle:Other Kor creatures you control get +2/+2 for each Equipment attached to Armament Master. diff --git a/forge-gui/res/cardsfolder/c/coalition_relic.txt b/forge-gui/res/cardsfolder/c/coalition_relic.txt index 28c65f18e00..25be6a2d91b 100644 --- a/forge-gui/res/cardsfolder/c/coalition_relic.txt +++ b/forge-gui/res/cardsfolder/c/coalition_relic.txt @@ -5,7 +5,7 @@ A:AB$ Mana | Cost$ T | Produced$ Any | Amount$ 1 | SpellDescription$ Add one man A:AB$ PutCounter | Cost$ T | CounterType$ CHARGE | CounterNum$ 1 | SpellDescription$ Put a charge counter on CARDNAME. T:Mode$ Phase | PreCombatMain$ True | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigRemove | TriggerDescription$ At the beginning of your precombat main phase, remove all charge counters from CARDNAME. Add one mana of any color for each charge counter removed this way. SVar:TrigRemove:DB$ RemoveCounter | CounterType$ CHARGE | CounterNum$ All | RememberRemoved$ True | SubAbility$ TrigGetMana -SVar:TrigGetMana:DB$ Mana | Produced$ Combo Any | Amount$ NumRemoved | AILogic$ MostProminentInComputerHand | SubAbility$ DBCleanup +SVar:TrigGetMana:DB$ Mana | Produced$ Combo Any | Amount$ NumRemoved | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:NumRemoved:Count$RememberedSize Oracle:{T}: Add one mana of any color.\n{T}: Put a charge counter on Coalition Relic.\nAt the beginning of your precombat main phase, remove all charge counters from Coalition Relic. Add one mana of any color for each charge counter removed this way. diff --git a/forge-gui/res/cardsfolder/d/deathrite_shaman.txt b/forge-gui/res/cardsfolder/d/deathrite_shaman.txt index f3bba5d7b21..1df2e966d02 100644 --- a/forge-gui/res/cardsfolder/d/deathrite_shaman.txt +++ b/forge-gui/res/cardsfolder/d/deathrite_shaman.txt @@ -3,7 +3,7 @@ ManaCost:BG Types:Creature Elf Shaman PT:1/2 A:AB$ ChangeZone | Cost$ T | Origin$ Graveyard | Destination$ Exile | ValidTgts$ Land | TgtPrompt$ Select target land card in a graveyard | SubAbility$ DBMana | SpellDescription$ Exile target land card from a graveyard. Add one mana of any color. -SVar:DBMana:DB$ Mana | Produced$ Any | Amount$ 1 | AILogic$ MostProminentInComputerHand +SVar:DBMana:DB$ Mana | Produced$ Any | Amount$ 1 A:AB$ ChangeZone | Cost$ B T | Origin$ Graveyard | Destination$ Exile | ValidTgts$ Instant,Sorcery | TgtPrompt$ Select target instant or sorcery card in a graveyard | SubAbility$ DBLoseLife | AITgtOwnCards$ True | SpellDescription$ Exile target instant or sorcery card from a graveyard. Each opponent loses 2 life. SVar:DBLoseLife:DB$ LoseLife | Defined$ Player.Opponent | LifeAmount$ 2 A:AB$ ChangeZone | Cost$ G T | Origin$ Graveyard | Destination$ Exile | ValidTgts$ Creature | TgtPrompt$ Select target creature card in a graveyard | SubAbility$ DBGainLife | AITgtOwnCards$ True | SpellDescription$ Exile target creature card from a graveyard. You gain 2 life. diff --git a/forge-gui/res/cardsfolder/e/extract_from_darkness.txt b/forge-gui/res/cardsfolder/e/extract_from_darkness.txt index e7ae2c7ae97..493fe434e1d 100644 --- a/forge-gui/res/cardsfolder/e/extract_from_darkness.txt +++ b/forge-gui/res/cardsfolder/e/extract_from_darkness.txt @@ -1,7 +1,7 @@ Name:Extract from Darkness ManaCost:3 U B Types:Sorcery -A:SP$ Mill | NumCards$ 2 | Defined$ Player | SubAbility$ DBChoose | SpellDescription$ Each player mills two cards. +A:SP$ Mill | NumCards$ 2 | Defined$ Player | SubAbility$ DBChangeZone | SpellDescription$ Each player mills two cards. SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ChangeType$ Creature | ChangeNum$ 1 | Mandatory$ True | GainControl$ True | SelectPrompt$ Select a creature card to return to the battlefield | Hidden$ True | StackDescription$ SpellDescription | SpellDescription$ Then you put a creature card from a graveyard onto the battlefield under your control. AI:RemoveDeck:Random DeckHas:Ability$Mill|Graveyard diff --git a/forge-gui/res/cardsfolder/g/gyruda_doom_of_depths.txt b/forge-gui/res/cardsfolder/g/gyruda_doom_of_depths.txt index 0127b1ee69a..1af3e1a24ae 100644 --- a/forge-gui/res/cardsfolder/g/gyruda_doom_of_depths.txt +++ b/forge-gui/res/cardsfolder/g/gyruda_doom_of_depths.txt @@ -3,7 +3,7 @@ ManaCost:4 U/B U/B Types:Legendary Creature Demon Kraken PT:6/6 K:Companion:Card.cmcM20:Your starting deck contains only cards with even mana value. (If this card is your chosen companion, you may cast it once from outside the game.) -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigMill | TriggerDescription$ When CARDNAME enters the battlefield, each player mills four cards. Put a creature card with an even mana value from those cards onto the battlefield under your control. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigMill | TriggerDescription$ When NICKNAME enters the battlefield, each player mills four cards. Put a creature card with an even mana value from those cards onto the battlefield under your control. SVar:TrigMill:DB$ Mill | NumCards$ 4 | Defined$ Player | RememberMilled$ True | SubAbility$ DBChangeZone SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard,Exile | Destination$ Battlefield | GainControl$ True | Mandatory$ True | Hidden$ True | ChangeNum$ 1 | ChangeType$ Card.Creature+IsRemembered+cmcM20 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True diff --git a/forge-gui/res/cardsfolder/m/manamorphose.txt b/forge-gui/res/cardsfolder/m/manamorphose.txt index 59ff60a8c7e..56b0103258a 100644 --- a/forge-gui/res/cardsfolder/m/manamorphose.txt +++ b/forge-gui/res/cardsfolder/m/manamorphose.txt @@ -1,7 +1,7 @@ Name:Manamorphose ManaCost:1 RG Types:Instant -A:SP$ Mana | Cost$ 1 RG | Produced$ Combo Any | Amount$ 2 | AILogic$ MostProminentInComputerHand | SubAbility$ DBDraw | SpellDescription$ Add two mana in any combination of colors. Draw a card. +A:SP$ Mana | Cost$ 1 RG | Produced$ Combo Any | Amount$ 2 | SubAbility$ DBDraw | SpellDescription$ Add two mana in any combination of colors. Draw a card. SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ 1 AI:RemoveDeck:All Oracle:Add two mana in any combination of colors.\nDraw a card. diff --git a/forge-gui/res/cardsfolder/p/penregon_besieged.txt b/forge-gui/res/cardsfolder/p/penregon_besieged.txt index 4b7805861cd..170c7fc5e34 100644 --- a/forge-gui/res/cardsfolder/p/penregon_besieged.txt +++ b/forge-gui/res/cardsfolder/p/penregon_besieged.txt @@ -2,9 +2,10 @@ Name:Penregon Besieged ManaCost:1 B Types:Enchantment T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigChoose | TriggerDescription$ At the beginning of your end step, choose a creature with the least toughness among creatures your opponents control. It perpetually gets -1/-1. -SVar:TrigChoose:DB$ ChooseCard | Choices$ Creature.leastToughness+OppCtrl | ChoiceTitle$ Choose a creature with the least toughness among creatures your opponents control | Mandatory$ True | SubAbility$ DBEffect +SVar:TrigChoose:DB$ ChooseCard | Choices$ Creature.leastToughnessControlledByOpponent | ChoiceTitle$ Choose a creature with the least toughness among creatures your opponents control | Mandatory$ True | SubAbility$ DBEffect SVar:DBEffect:DB$ Effect | StaticAbilities$ PerpetualDebuff | Name$ Penregon Besieged's Perpetual Effect | Duration$ Permanent SVar:PerpetualDebuff:Mode$ Continuous | Affected$ Card.ChosenCard | AddPower$ -1 | AddToughness$ -1 | EffectZone$ Command | AffectedZone$ Battlefield,Hand,Graveyard,Exile,Stack,Library,Command | Description$ This creature perpetually gets -1/-1. T:Mode$ Always | TriggerZones$ Battlefield | IsPresent$ Creature.OppCtrl | PresentCompare$ EQ0 | Execute$ TrigSac | TriggerDescription$ When your opponents control no creatures, sacrifice CARDNAME. SVar:TrigSac:DB$ Sacrifice -Oracle:At the beginning of your end step, choose a creature with the least toughness among creatures your opponents control. It perpetually gets -1/-1.\nWhen your opponents control no creatures, sacrifice Penregon Besieged. \ No newline at end of file +DeckHas:Ability$Sacrifice +Oracle:At the beginning of your end step, choose a creature with the least toughness among creatures your opponents control. It perpetually gets -1/-1.\nWhen your opponents control no creatures, sacrifice Penregon Besieged. diff --git a/forge-gui/res/cardsfolder/p/plasm_capture.txt b/forge-gui/res/cardsfolder/p/plasm_capture.txt index 4ea253e13d3..24e3b579322 100644 --- a/forge-gui/res/cardsfolder/p/plasm_capture.txt +++ b/forge-gui/res/cardsfolder/p/plasm_capture.txt @@ -4,6 +4,6 @@ Types:Instant A:SP$ Counter | Cost$ G G U U | TargetType$ Spell | RememberCounteredCMC$ True | ValidTgts$ Card | SubAbility$ DBDelTrig | SpellDescription$ Counter target spell. At the beginning of your next precombat main phase, add X mana in any combination of colors, where X is that spell's mana value. SVar:DBDelTrig:DB$ DelayedTrigger | Mode$ Phase | PreCombatMain$ True | ValidPlayer$ You | Execute$ AddMana | TriggerDescription$ At the beginning of your next precombat main phase, add X mana in any combination of colors, where X is that spell's mana value. | RememberNumber$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -SVar:AddMana:DB$ Mana | Produced$ Combo Any | Amount$ X | AILogic$ MostProminentInComputerHand +SVar:AddMana:DB$ Mana | Produced$ Combo Any | Amount$ X SVar:X:Count$TriggerRememberAmount Oracle:Counter target spell. At the beginning of your next precombat main phase, add X mana in any combination of colors, where X is that spell's mana value. diff --git a/forge-gui/res/cardsfolder/r/regal_behemoth.txt b/forge-gui/res/cardsfolder/r/regal_behemoth.txt index 0364bf56dda..74e4c022dcc 100644 --- a/forge-gui/res/cardsfolder/r/regal_behemoth.txt +++ b/forge-gui/res/cardsfolder/r/regal_behemoth.txt @@ -6,5 +6,5 @@ K:Trample T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigMonarch | TriggerDescription$ When CARDNAME enters the battlefield, you become the monarch. SVar:TrigMonarch:DB$ BecomeMonarch | Defined$ You T:Mode$ TapsForMana | ValidCard$ Land | Activator$ You | CheckDefinedPlayer$ You.isMonarch | Execute$ TrigMana | TriggerZones$ Battlefield | Static$ True | TriggerDescription$ Whenever you tap a land for mana while you're the monarch, add an additional one mana of any color. -SVar:TrigMana:DB$ Mana | Produced$ Combo Any | Amount$ 1 | AILogic$ MostProminentInComputerHand +SVar:TrigMana:DB$ Mana | Produced$ Combo Any | Amount$ 1 Oracle:Trample\nWhen Regal Behemoth enters the battlefield, you become the monarch.\nWhenever you tap a land for mana while you're the monarch, add an additional one mana of any color. diff --git a/forge-gui/res/cardsfolder/r/riveteers_charm.txt b/forge-gui/res/cardsfolder/r/riveteers_charm.txt index acf6407ea9f..9a96e14f36e 100644 --- a/forge-gui/res/cardsfolder/r/riveteers_charm.txt +++ b/forge-gui/res/cardsfolder/r/riveteers_charm.txt @@ -3,9 +3,7 @@ ManaCost:B R G Types:Instant A:SP$ Charm | Choices$ DBSac,DBExilePlay,DBExileGrave SVar:DBSac:DB$ Sacrifice | ValidTgts$ Opponent | TgtPrompt$ Choose target opponent | SacValid$ Creature.cmcEQX,Planeswalker.cmcEQX | SacMessage$ creature or planeswalker they control with the highest mana value among creatures and planeswalkers they control | SpellDescription$ Target opponent sacrifices a creature or planeswalker they control with the highest mana value among creatures and planeswalkers they control. -SVar:X:SVar$Y/LimitMin.Z -SVar:Y:Count$Valid Creature.TargetedPlayerCtrl$GreatestCMC -SVar:Z:Count$Valid Planeswalker.TargetedPlayerCtrl$GreatestCMC +SVar:X:Count$Valid Creature.TargetedPlayerCtrl,Planeswalker.TargetedPlayerCtrl$GreatestCMC SVar:DBExilePlay:DB$ Dig | Defined$ You | DigNum$ 3 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBEffect | SpellDescription$ Exile the top three cards of your library. Until your next end step, you may play those cards. SVar:DBEffect:DB$ Effect | RememberObjects$ RememberedCard | StaticAbilities$ STPlay | SubAbility$ DBCleanup | ForgetOnMoved$ Exile | Duration$ UntilYourNextEndStep SVar:STPlay:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ Until your next end step, you may play those cards. diff --git a/forge-gui/res/cardsfolder/s/sarkhan_unbroken.txt b/forge-gui/res/cardsfolder/s/sarkhan_unbroken.txt index 485ef7d5967..d7020836160 100644 --- a/forge-gui/res/cardsfolder/s/sarkhan_unbroken.txt +++ b/forge-gui/res/cardsfolder/s/sarkhan_unbroken.txt @@ -3,7 +3,7 @@ ManaCost:2 G U R Types:Legendary Planeswalker Sarkhan Loyalty:4 A:AB$ Draw | Cost$ AddCounter<1/LOYALTY> | Defined$ You | SubAbility$ DBMana | Planeswalker$ True | SpellDescription$ Draw a card, then add one mana of any color. -SVar:DBMana:DB$ Mana | Produced$ Any | AILogic$ MostProminentInComputerHand +SVar:DBMana:DB$ Mana | Produced$ Any A:AB$ Token | Cost$ SubCounter<2/LOYALTY> | TokenAmount$ 1 | TokenScript$ r_4_4_dragon_flying | TokenOwner$ You | Planeswalker$ True | SpellDescription$ Create a 4/4 red Dragon creature token with flying. A:AB$ ChangeZone | Cost$ SubCounter<8/LOYALTY> | Origin$ Library | Destination$ Battlefield | ChangeType$ Creature.Dragon | ChangeNum$ XFetch | Planeswalker$ True | Ultimate$ True | StackDescription$ SpellDescription | SpellDescription$ Search your library for any number of Dragon creature cards, put them onto the battlefield, then shuffle. SVar:XFetch:Count$TypeInYourLibrary.Dragon diff --git a/forge-gui/res/cardsfolder/s/smokebraider.txt b/forge-gui/res/cardsfolder/s/smokebraider.txt index e3672b40982..6085b6c3332 100644 --- a/forge-gui/res/cardsfolder/s/smokebraider.txt +++ b/forge-gui/res/cardsfolder/s/smokebraider.txt @@ -2,6 +2,6 @@ Name:Smokebraider ManaCost:1 R Types:Creature Elemental Shaman PT:1/1 -A:AB$ Mana | Cost$ T | Produced$ Combo Any | Amount$ 2 | RestrictValid$ Spell.Elemental,Activated.Elemental+inZoneBattlefield | AILogic$ MostProminentInComputerHand | SpellDescription$ Add two mana in any combination of colors. Spend this mana only to cast Elemental spells or activate abilities of Elementals. +A:AB$ Mana | Cost$ T | Produced$ Combo Any | Amount$ 2 | RestrictValid$ Spell.Elemental,Activated.Elemental+inZoneBattlefield | SpellDescription$ Add two mana in any combination of colors. Spend this mana only to cast Elemental spells or activate abilities of Elementals. AI:RemoveDeck:Random Oracle:{T}: Add two mana in any combination of colors. Spend this mana only to cast Elemental spells or activate abilities of Elementals. diff --git a/forge-gui/res/cardsfolder/s/soul_shatter.txt b/forge-gui/res/cardsfolder/s/soul_shatter.txt index 8da5ad65b14..3e620e83a71 100644 --- a/forge-gui/res/cardsfolder/s/soul_shatter.txt +++ b/forge-gui/res/cardsfolder/s/soul_shatter.txt @@ -5,7 +5,5 @@ A:SP$ RepeatEach | RepeatPlayers$ Player.Opponent | RepeatSubAbility$ DBChoose | SVar:DBChoose:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Creature.RememberedPlayerCtrl+cmcEQX,Planeswalker.RememberedPlayerCtrl+cmcEQX | ChoiceTitle$ Choose a creature or planeswalker with the highest mana value to sacrifice | Mandatory$ True | RememberChosen$ True SVar:DBSac:DB$ SacrificeAll | ValidCards$ Card.IsRemembered | SubAbility$ DBCleanup | StackDescription$ sacrifices a creature or planeswalker with the highest mana value among creatures and planeswalkers they control. SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -SVar:X:SVar$Y/LimitMin.Z -SVar:Y:Count$Valid Creature.RememberedPlayerCtrl$GreatestCMC -SVar:Z:Count$Valid Planeswalker.RememberedPlayerCtrl$GreatestCMC +SVar:X:Count$Valid Creature.RememberedPlayerCtrl,Planeswalker.RememberedPlayerCtrl$GreatestCMC Oracle:Each opponent sacrifices a creature or planeswalker with the highest mana value among creatures and planeswalkers they control. diff --git a/forge-gui/res/cardsfolder/t/tablet_of_compleation.txt b/forge-gui/res/cardsfolder/t/tablet_of_compleation.txt index eb7d28b2804..4ecb9016738 100644 --- a/forge-gui/res/cardsfolder/t/tablet_of_compleation.txt +++ b/forge-gui/res/cardsfolder/t/tablet_of_compleation.txt @@ -2,8 +2,7 @@ Name:Tablet of Compleation ManaCost:2 Types:Artifact A:AB$ PutCounter | Cost$ T | CounterType$ OIL | CounterNum$ 1 | SpellDescription$ Put an oil counter on CARDNAME. -A:AB$ Mana | Cost$ T | CheckSVar$ X | Produced$ C | SVarCompare$ GE2 | SpellDescription$ Add {C}. Activate only if CARDNAME has two or more oil counters on it. -A:AB$ Draw | Cost$ 1 T | CheckSVar$ X | SVarCompare$ GE5 | SpellDescription$ Draw a card. Activate only if CARDNAME has five or more oil counters on it. -SVar:X:Count$CardCounters.OIL +A:AB$ Mana | Cost$ T | Produced$ C | IsPresent$ Card.Self+counters_GE2_OIL | SpellDescription$ Add {C}. Activate only if CARDNAME has two or more oil counters on it. +A:AB$ Draw | Cost$ 1 T | IsPresent$ Card.Self+counters_GE5_OIL | SpellDescription$ Draw a card. Activate only if CARDNAME has five or more oil counters on it. DeckHas:Ability$Counters Oracle:{T}: Put an oil counter on Tablet of Compleation.\n{T}: Add {C}. Activate only if Tablet of Compleation has two or more oil counters on it.\n{1}, {T}: Draw a card. Activate only if Tablet of Compleation has five or more oil counters on it. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/t/terrarion.txt b/forge-gui/res/cardsfolder/t/terrarion.txt index 97592d24c27..ea8686bf88c 100644 --- a/forge-gui/res/cardsfolder/t/terrarion.txt +++ b/forge-gui/res/cardsfolder/t/terrarion.txt @@ -1,7 +1,7 @@ Name:Terrarion ManaCost:1 Types:Artifact -A:AB$ Mana | Cost$ 2 T Sac<1/CARDNAME> | Produced$ Combo Any | Amount$ 2 | AILogic$ MostProminentInComputerHand | SpellDescription$ Add two mana in any combination of colors. +A:AB$ Mana | Cost$ 2 T Sac<1/CARDNAME> | Produced$ Combo Any | Amount$ 2 | SpellDescription$ Add two mana in any combination of colors. T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerDescription$ When CARDNAME is put into a graveyard from the battlefield, draw a card. SVar:TrigDraw:DB$ Draw | Defined$ TriggeredCardController | NumCards$ 1 K:CARDNAME enters the battlefield tapped. diff --git a/forge-gui/res/cardsfolder/u/urza_academy_headmaster.txt b/forge-gui/res/cardsfolder/u/urza_academy_headmaster.txt index ea9d538e936..ef6cb28fc7c 100644 --- a/forge-gui/res/cardsfolder/u/urza_academy_headmaster.txt +++ b/forge-gui/res/cardsfolder/u/urza_academy_headmaster.txt @@ -23,7 +23,7 @@ SVar:Exile11:DB$ ChangeZone | ValidTgts$ Player | TgtPrompt$ Select target playe SVar:Dig12:DB$ Dig | DigNum$ 1 | Reveal$ True | ChangeNum$ All | ChangeValid$ Land | DestinationZone$ Battlefield | DestinationZone2$ Hand | SpellDescription$ Reveal the top card of your library. If it's a land card, put it onto the battlefield. Otherwise, put it into your hand. SVar:Animate13:DB$ Animate | ValidTgts$ Land.YouCtrl | TgtPrompt$ Select target land you control | Power$ 4 | Toughness$ 4 | Types$ Creature,Elemental | Duration$ Permanent | Keywords$ Trample | SpellDescription$ Target land you control becomes a 4/4 Elemental creature with trample. It's still a land. SVar:Draw14:DB$ Draw | Defined$ You | SubAbility$ DBMana14 | SpellDescription$ Draw a card, then add one mana of any color. -SVar:DBMana14:DB$ Mana | Produced$ Any | AILogic$ MostProminentInComputerHand +SVar:DBMana14:DB$ Mana | Produced$ Any SVar:Animate15:DB$ Animate | Power$ 4 | Toughness$ 4 | Types$ Creature,Legendary,Dragon | Colors$ Red | OverwriteColors$ True | RemoveCardTypes$ True | Keywords$ Flying & Indestructible & Haste | SpellDescription$ Until end of turn, NICKNAME becomes a legendary 4/4 red Dragon creature with flying, indestructible, and haste. (He doesn't lose loyalty while he's not a planeswalker.) SVar:PumpAll16:DB$ PumpAll | ValidCards$ Creature.YouCtrl | NumAtt$ +1 | KW$ Lifelink | Duration$ UntilYourNextTurn | SpellDescription$ Until your next turn, creatures you control get +1/+0 and gain lifelink. SVar:Dig17:DB$ Dig | DigNum$ 5 | ChangeNum$ 1 | Optional$ True | ChangeValid$ Artifact | SpellDescription$ Look at the top five cards of your library. You may reveal an artifact card from among them and put it into your hand. Put the rest on the bottom of your library in any order. diff --git a/forge-gui/res/cardsfolder/upcoming/animists_might.txt b/forge-gui/res/cardsfolder/upcoming/animists_might.txt new file mode 100644 index 00000000000..6fc3cb6591d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/animists_might.txt @@ -0,0 +1,9 @@ +Name:Animist's Might +ManaCost:2 G +Types:Sorcery +S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ 2 | ValidTarget$ Creature.Legendary+YouCtrl | EffectZone$ All | Description$ This spell costs {2} less to cast if it targets a legendary creature you control. +A:SP$ Pump | ValidTgts$ Creature.YouCtrl | AILogic$ PowerDmg | TgtPrompt$ Select target creature you control | SubAbility$ BloodDamage | SpellDescription$ Target creature you control deals damage equal to twice its power to target creature or planeswalker you don't control. +SVar:BloodDamage:DB$ DealDamage | ValidTgts$ Creature.YouDontCtrl,Planeswalker.YouDontCtrl | AILogic$ PowerDmg | NumDmg$ X | DamageSource$ ParentTarget +SVar:X:ParentTargeted$CardPower/Times.2 +DeckHints:Type$Legendary +Oracle:This spell costs {2} less to cast if it targets a legendary creature you control.\nTarget creature you control deals damage equal to twice its power to target creature or planeswalker you don't control. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/arni_metalbrow.txt b/forge-gui/res/cardsfolder/upcoming/arni_metalbrow.txt new file mode 100644 index 00000000000..e4527226f7d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/arni_metalbrow.txt @@ -0,0 +1,11 @@ +Name:Arni Metalbrow +ManaCost:2 R +Types:Legendary Creature Human Berserker +PT:3/3 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.YouCtrl+attacking | Execute$ TrigChangeZoneBis | TriggerDescription$ Whenever a creature you control attacks or a creature enters the battlefield under your control attacking, you may pay {1}{R}. If you do, you may put a creature card with mana value less than that creature's mana value from your hand onto the battlefield tapped and attacking. +T:Mode$ Attacks | ValidCard$ Creature.YouCtrl | Execute$ TrigChangeZone | Secondary$ True | TriggerDescription$ Whenever a creature you control attacks or a creature enters the battlefield under your control attacking, you may pay {1}{R}. If you do, you may put a creature card with mana value less than that creature's mana value from your hand onto the battlefield tapped and attacking. +SVar:TrigChangeZone:AB$ ChangeZone | Cost$ 1 R | Origin$ Hand | ChangeNum$ 1 | Destination$ Battlefield | ChangeType$ Creature.cmcLTX+YouCtrl | ChangeNum$ 1 | Tapped$ True | Attacking$ True +SVar:TrigChangeZoneBis:AB$ ChangeZone | Cost$ 1 R | Origin$ Hand | ChangeNum$ 1 | Destination$ Battlefield | ChangeType$ Creature.cmcLTY+YouCtrl | ChangeNum$ 1 | Tapped$ True | Attacking$ True +SVar:X:TriggeredAttacker$CardManaCost +SVar:Y:TriggeredCard$CardManaCost +Oracle:Whenever a creature you control attacks or a creature enters the battlefield under your control attacking, you may pay {1}{R}. If you do, you may put a creature card with mana value less than that creature's mana value from your hand onto the battlefield tapped and attacking. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/ayaras_oathsworn.txt b/forge-gui/res/cardsfolder/upcoming/ayaras_oathsworn.txt new file mode 100644 index 00000000000..74fb4dcf6f6 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/ayaras_oathsworn.txt @@ -0,0 +1,10 @@ +Name:Ayara's Oathsworn +ManaCost:1 B +Types:Creature Human Knight +PT:2/2 +K:Menace +T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | IsPresent$ Card.Self+counters_LT4_P1P1 | Execute$ TrigPutCounter | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, if it has fewer than four +1/+1 counters on it, put a +1/+1 counter on it. Then if it has exactly four +1/+1 counters on it, search your library for a card, put it into your hand, then shuffle. +SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBSearch +SVar:DBSearch:DB$ ChangeZone | ConditionDefined$ Self | ConditionPresent$ Card.Self+counters_EQ4_P1P1 | Origin$ Library | Destination$ Hand | ChangeType$ Card | ChangeNum$ 1 | Mandatory$ True +DeckHas:Ability$Counters +Oracle:Menace\nWhenever Ayara's Oathsworn deals combat damage to a player, if it has fewer than four +1/+1 counters on it, put a +1/+1 counter on it. Then if it has exactly four +1/+1 counters on it, search your library for a card, put it into your hand, then shuffle. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/blot_out.txt b/forge-gui/res/cardsfolder/upcoming/blot_out.txt new file mode 100644 index 00000000000..0574564e372 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/blot_out.txt @@ -0,0 +1,7 @@ +Name:Blot Out +ManaCost:2 B +Types:Instant +A:SP$ ChooseCard | ValidTgts$ Opponent | Choices$ Creature.TargetedPlayerCtrl+cmcEQX,Planeswalker.TargetedPlayerCtrl+cmcEQX | ChoiceTitle$ Choose a creature or planeswalker with the highest mana value to sacrifice | Mandatory$ True | SubAbility$ DBExile | SpellDescription$ Target opponent exiles a creature or planeswalker they control with the greatest mana value among creatures and planeswalkers they control. +SVar:DBExile:DB$ ChangeZone | Defined$ ChosenCard | Origin$ Battlefield | Destination$ Exile +SVar:X:Count$Valid Creature.TargetedPlayerCtrl,Planeswalker.TargetedCtrl$GreatestCMC +Oracle:Target opponent exiles a creature or planeswalker they control with the greatest mana value among creatures and planeswalkers they control. diff --git a/forge-gui/res/cardsfolder/upcoming/coppercoat_vanguard.txt b/forge-gui/res/cardsfolder/upcoming/coppercoat_vanguard.txt new file mode 100644 index 00000000000..eb1b288e179 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/coppercoat_vanguard.txt @@ -0,0 +1,8 @@ +Name:Coppercoat Vanguard +ManaCost:1 W +Types:Creature Human Soldier +PT:2/2 +S:Mode$ Continuous | Affected$ Human.YouCtrl+Other | AddPower$ 1 | AddKeyword$ Ward:1 | Description$ Each other Human you control gets +1/+0 and has ward {1}. +SVar:PlayMain1:TRUE +DeckNeeds:Type$Human +Oracle:Each other Human you control gets +1/+0 and has ward {1}. diff --git a/forge-gui/res/cardsfolder/upcoming/death_rattle_oni.txt b/forge-gui/res/cardsfolder/upcoming/death_rattle_oni.txt new file mode 100644 index 00000000000..2ea5c902cd4 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/death_rattle_oni.txt @@ -0,0 +1,10 @@ +Name:Death-Rattle Oni +ManaCost:6 B +Types:Creature Demon Spirit +PT:5/4 +K:Flash +S:Mode$ ReduceCost | ValidCard$ Card.Self | Type$ Spell | Amount$ X | EffectZone$ All | Description$ This spell costs {2} less to cast for each creature that died this turn. +SVar:X:Count$ThisTurnEntered_Graveyard_from_Battlefield_Creature/Times.2 +T:Mode$ ChangesZone | TriggerZone$ Battlefield | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ DBDestroyAll | TriggerDescription$ When CARDNAME enters the battlefield, destroy all other creatures that were dealt damage this turn. +SVar:DBDestroyAll:DB$ DestroyAll | ValidCards$ Creature.wasDealtDamageThisTurn+Other +Oracle:This spell costs {2} less to cast for each creature that died this turn.\nWhen Death-Rattle Oni enters the battlefield, destroy all other creatures that were dealt damage this turn. diff --git a/forge-gui/res/cardsfolder/upcoming/deification.txt b/forge-gui/res/cardsfolder/upcoming/deification.txt new file mode 100644 index 00000000000..ab9adb71cee --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/deification.txt @@ -0,0 +1,9 @@ +Name:Deification +ManaCost:1 W +Types:Enchantment +K:ETBReplacement:Other:ChooseCT +SVar:ChooseCT:DB$ ChooseType | Type$ Planeswalker | SpellDescription$ As CARDNAME enters the battlefield, choose a planeswalker type. +S:Mode$ Continuous | Affected$ Planeswalker.YouCtrl+ChosenType | AddKeyword$ Hexproof | Description$ Planeswalkers you control of the chosen type have hexproof. +R:Event$ RemoveCounter | ActiveZones$ Battlefield | IsPresent$ Creature.YouCtrl | ValidCard$ Planeswalker.YouCtrl+ChosenType | Result$ LT1 | ValidCounterType$ LOYALTY | IsDamage$ True | ReplaceWith$ ReduceLoss | Description$ As long as you control a creature, if damage dealt to a planeswalker you control of the chosen type would result in all loyalty counters being removed, instead remove all but one of those counters instead. +SVar:ReduceLoss:DB$ ReplaceEffect | VarName$ Result | VarValue$ 1 +Oracle:As Deification enters the battlefield, choose a planeswalker type.\nPlaneswalkers you control of the chosen type have hexproof.\nAs long as you control a creature, if damage dealt to a planeswalker you control of the chosen type would result in all loyalty counters being removed, instead remove all but one of those counters instead. diff --git a/forge-gui/res/cardsfolder/upcoming/drannith_ruins.txt b/forge-gui/res/cardsfolder/upcoming/drannith_ruins.txt new file mode 100644 index 00000000000..ea27c869725 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/drannith_ruins.txt @@ -0,0 +1,7 @@ +Name:Drannith Ruins +ManaCost:no cost +Types:Land +A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}. +A:AB$ PutCounter | Cost$ 2 T | ValidTgts$ Creature.nonHuman+ThisTurnEntered | TgtPrompt$ Select target non-Human creature that entered the battlefield this turn | CounterType$ P1P1 | CounterNum$ 2 | SpellDescription$ Put two +1/+1 counters on target non-Human creature that entered the battlefield this turn. +DeckHas:Ability$Counters +Oracle:{T}: Add {C}.\n{2}, {T}: Put two +1/+1 counters on target non-Human creature that entered the battlefield this turn. diff --git a/forge-gui/res/cardsfolder/upcoming/feast_of_the_victorious_dead.txt b/forge-gui/res/cardsfolder/upcoming/feast_of_the_victorious_dead.txt new file mode 100644 index 00000000000..dfb61878fc9 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/feast_of_the_victorious_dead.txt @@ -0,0 +1,10 @@ +Name:Feast of the Victorious Dead +ManaCost:W B +Types:Enchantment +T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | CheckSVar$ Y | Execute$ TrigGainLife | TriggerDescription$ At the beginning of your end step, if one or more creatures died this turn, you gain that much life and distribute that many +1/+1 counters among creatures you control. +SVar:TrigGainLife:DB$ GainLife | Defined$ You | LifeAmount$ Y | SubAbility$ DBPutCounter +SVar:DBPutCounter:DB$ PutCounter | Choices$ Creature.YouCtrl | ChoiceTitle$ Choose any number of creatures you control to distribute counters to | CounterType$ P1P1 | CounterNum$ Y | DividedAsYouChoose$ Y | MinChoiceAmount$ 1 | ChoiceAmount$ Y +SVar:Y:Count$ThisTurnEntered_Graveyard_from_Battlefield_Creature +DeckHas:Ability$LifeGain|Counters +DeckHints:Ability$Sacrifice +Oracle:At the beginning of your end step, if one or more creatures died this turn, you gain that much life and distribute that many +1/+1 counters among creatures you control. diff --git a/forge-gui/res/cardsfolder/upcoming/filter_out.txt b/forge-gui/res/cardsfolder/upcoming/filter_out.txt new file mode 100644 index 00000000000..a4ee3e706f0 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/filter_out.txt @@ -0,0 +1,5 @@ +Name:Filter Out +ManaCost:1 U U +Types:Instant +A:SP$ ChangeZoneAll | ChangeType$ Permanent.nonLand+nonCreature | Origin$ Battlefield | Destination$ Hand | SpellDescription$ Return all noncreature, nonland permanents to their owners' hands. +Oracle:Return all noncreature, nonland permanents to their owners' hands. diff --git a/forge-gui/res/cardsfolder/upcoming/jirina_dauntless_general.txt b/forge-gui/res/cardsfolder/upcoming/jirina_dauntless_general.txt new file mode 100644 index 00000000000..b4b795601fd --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/jirina_dauntless_general.txt @@ -0,0 +1,10 @@ +Name:Jirina, Dauntless General +ManaCost:W B +Types:Legendary Creature Human Soldier +PT:2/2 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$ When CARDNAME enters the battlefield, exile all cards from target player's graveyard. +SVar:TrigExile:DB$ ChangeZoneAll | ValidTgts$ Player | Origin$ Graveyard | Destination$ Exile | ChangeType$ Card | IsCurse$ True +A:AB$ PumpAll | Cost$ Sac<1/NICKNAME> | ValidCards$ Human.YouCtrl | KW$ Hexproof & Indestructible | SpellDescription$ Humans you control gain hexproof and indestructible until end of turn. +DeckHas:Ability$Graveyard|Sacrifice +DeckHints:Type$Human +Oracle:When Jirina, Dauntless General enters the battlefield, exile target player's graveyard.\nSacrifice Jirina: Humans you control gain hexproof and indestructible until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/karn_legacy_reforged.txt b/forge-gui/res/cardsfolder/upcoming/karn_legacy_reforged.txt new file mode 100644 index 00000000000..f5c3420a193 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/karn_legacy_reforged.txt @@ -0,0 +1,12 @@ +Name:Karn, Legacy Reforged +ManaCost:5 +Types:Legendary Artifact Creature Golem +PT:*/* +S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ X | SetToughness$ X | Description$ CARDNAME's power and toughness are each equal to the greatest mana value among artifacts you control. +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ ArtifactMana | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your upkeep, add {C} for each artifact you control. This mana can't be spent to cast nonartifact spells. Until end of turn, you don't lose this mana as steps and phases end. +SVar:ArtifactMana:DB$ Mana | Produced$ C | Amount$ Y | PersistentMana$ True | RestrictValid$ CantCastNonArtifactSpells +SVar:X:Count$Valid Artifact.YouCtrl$GreatestCMC +SVar:Y:Count$Valid Artifact.YouCtrl +SVar:BuffedBy:Artifact +DeckNeeds:Type$Artifact +Oracle:Karn, Legacy Reforged's power and toughness are each equal to the greatest mana value among artifacts you control.\nAt the beginning of your upkeep, add {C} for each artifact you control. This mana can't be spent to cast nonartifact spells. Until end of turn, you don't lose this mana as steps and phases end. diff --git a/forge-gui/res/cardsfolder/upcoming/omnath_locus_of_all.txt b/forge-gui/res/cardsfolder/upcoming/omnath_locus_of_all.txt index 94cb5bd75a4..17e388fda54 100644 --- a/forge-gui/res/cardsfolder/upcoming/omnath_locus_of_all.txt +++ b/forge-gui/res/cardsfolder/upcoming/omnath_locus_of_all.txt @@ -4,11 +4,11 @@ Types:Legendary Creature Phyrexian Elemental PT:4/4 R:Event$ LoseMana | ValidPlayer$ You | ReplacementResult$ Replaced | ReplaceWith$ ConvertMana | ActiveZones$ Battlefield | Description$ If you would lose unspent mana, that mana becomes black instead. SVar:ConvertMana:DB$ ReplaceMana | ReplaceType$ Black -T:Mode$ Phase | ValidPlayer$ You | Phase$ Main1 | TriggerZones$ Battlefield | Execute$ TrigPeek | TriggerDescription$ At the beginning of your precombat main phase, look at the top card of your library. You may reveal that card if it has three or more colored mana symbols in its mana cost. If you do, add three mana in any combination of colors and put it into your hand. If you don't reveal it, put it into your hand. +T:Mode$ Phase | ValidPlayer$ You | Phase$ Main1 | TriggerZones$ Battlefield | Execute$ TrigPeek | TriggerDescription$ At the beginning of your precombat main phase, look at the top card of your library. You may reveal that card if it has three or more colored mana symbols in its mana cost. If you do, add three mana in any combination of its colors and put it into your hand. If you don't reveal it, put it into your hand. SVar:TrigPeek:DB$ PeekAndReveal | Defined$ You | NoReveal$ True | RememberPeeked$ True | SubAbility$ DBReveal SVar:DBReveal:DB$ PeekAndReveal | Defined$ You | NoPeek$ True | RevealOptional$ True | ImprintRevealed$ True | ConditionCheckSVar$ ColorAmount | ConditionSVarCompare$ GE3 | SubAbility$ DBMana -SVar:DBMana:DB$ Mana | Produced$ Combo Any | Amount$ 3 | ConditionDefined$ Imprinted | ConditionPresent$ Card | SubAbility$ DBMove +SVar:DBMana:DB$ ManaReflected | Produced$ Combo | ReflectProperty$ Is | ColorOrType$ Color | Amount$ 3 | Valid$ Defined.Imprinted | ConditionDefined$ Imprinted | ConditionPresent$ Card | SubAbility$ DBMove SVar:DBMove:DB$ ChangeZone | Origin$ Library | Destination$ Hand | Defined$ Remembered | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True SVar:ColorAmount:Remembered$ChromaSource -Oracle:If you would lose unspent mana, that mana becomes black instead.\nAt the beginning of your precombat main phase, look at the top card of your library. You may reveal that card if it has three or more colored mana symbols in its mana cost. If you do, add three mana in any combination of colors and put it into your hand. If you don't reveal it, put it into your hand. +Oracle:If you would lose unspent mana, that mana becomes black instead.\nAt the beginning of your precombat main phase, look at the top card of your library. You may reveal that card if it has three or more colored mana symbols in its mana cost. If you do, add three mana in any combination of its colors and put it into your hand. If you don't reveal it, put it into your hand. diff --git a/forge-gui/res/cardsfolder/upcoming/spark_rupture.txt b/forge-gui/res/cardsfolder/upcoming/spark_rupture.txt new file mode 100644 index 00000000000..846381f3ebd --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/spark_rupture.txt @@ -0,0 +1,9 @@ +Name:Spark Rupture +ManaCost:2 W +Types:Enchantment +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 +S:Mode$ Continuous | Affected$ Planeswalker.counters_GE1_LOYALTY | AddType$ Creature | RemoveCardTypes$ True | RemoveAllAbilities$ True | SetPower$ AffectedX | SetToughness$ AffectedX | Description$ Each planeswalker with one or more loyalty counters on it loses all abilities and is a creature with power and toughness each equal to the number of loyalty counters on it. +SVar:AffectedX:Count$CardCounters.LOYALTY +SVar:NonStackingEffect:True +Oracle:When Spark Rupture enters the battlefield, draw a card.\nEach planeswalker with one or more loyalty counters on it loses all abilities and is a creature with power and toughness each equal to the number of loyalty counters on it. diff --git a/forge-gui/res/cardsfolder/upcoming/tazri_stalwart_survivor.txt b/forge-gui/res/cardsfolder/upcoming/tazri_stalwart_survivor.txt new file mode 100644 index 00000000000..9739d98c666 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/tazri_stalwart_survivor.txt @@ -0,0 +1,12 @@ +Name:Tazri, Stalwart Survivor +ManaCost:2 W +Types:Legendary Creature Human Warrior +PT:3/3 +S:Mode$ Continuous | Affected$ Creature.YouCtrl | AddAbility$ Mana | Description$ Each creature you control has "{T}: Add one mana of any of this creature's colors. Spend this mana only to activate an ability of a creature. Activate only if this creature has another activated ability." +SVar:Mana:AB$ ManaReflected | Cost$ T | Valid$ Defined.Self | ColorOrType$ Color | ReflectProperty$ Is | RestrictValid$ Activated.Creature+inZoneBattlefield | IsPresent$ Card.Self+hasOtherActivatedAbility | SpellDescription$ Add one mana of any of this creature's colors. Spend this mana only to activate an ability of a creature. Activate only if this creature has another activated ability. +A:AB$ Mill | Cost$ W U B R G | NumCards$ 5 | RememberMilled$ True | SubAbility$ DBChangeZone | SpellDescription$ Mill five cards. +SVar:DBChangeZone:DB$ ChangeZoneAll | ChangeType$ Creature.IsRemembered+hasNonManaActivatedAbility | Origin$ Graveyard,Exile | Destination$ Hand | SubAbility$ DBCleanup | SpellDescription$ Put all creature cards with activated abilities that aren't mana abilities from among the milled cards into your hand. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +DeckHas:Ability$Mill +AI:RemoveDeck:Random +Oracle:Each creature you control has "{T}: Add one mana of any of this creature's colors. Spend this mana only to activate an ability of a creature. Activate only if this creature has another activated ability."\n{W}{U}{B}{R}{G}: Mill five cards. Put all creature cards with activated abilities that aren't mana abilities from among the milled cards into your hand. diff --git a/forge-gui/res/cardsfolder/upcoming/wrenn_and_realmbreaker.txt b/forge-gui/res/cardsfolder/upcoming/wrenn_and_realmbreaker.txt index 6e84ff800d9..5f7c07fc0bb 100644 --- a/forge-gui/res/cardsfolder/upcoming/wrenn_and_realmbreaker.txt +++ b/forge-gui/res/cardsfolder/upcoming/wrenn_and_realmbreaker.txt @@ -6,7 +6,7 @@ S:Mode$ Continuous | Affected$ Land.YouCtrl | AddAbility$ AnyMana | Description$ SVar:AnyMana:AB$ Mana | Cost$ T | Produced$ Any | Amount$ 1 | SpellDescription$ Add one mana of any color. A:AB$ Animate | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | ValidTgts$ Land.YouCtrl | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Select up to one target land you control | Power$ 3 | Toughness$ 3 | Types$ Creature,Elemental | Keywords$ Vigilance & Hexproof & Haste | Duration$ UntilYourNextTurn | SpellDescription$ Up to one target land you control becomes a 3/3 Elemental creature with vigilance, hexproof, and haste until your next turn. It's still a land. A:AB$ Mill | Cost$ SubCounter<2/LOYALTY> | Planeswalker$ True | NumCards$ 3 | RememberMilled$ True | SubAbility$ DBChangeZone | SpellDescription$ Mill three cards. You may put a permanent card from among the milled cards into your hand. -SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | Hidden$ True | ChangeNum$ 1 | ChangeType$ Card.Permanent+IsRemembered | SubAbility$ DBCleanup +SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard,Exile | Destination$ Hand | Hidden$ True | ChangeNum$ 1 | ChangeType$ Card.Permanent+IsRemembered | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True A:AB$ Effect | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | Ultimate$ True | Name$ Emblem - Wrenn and Realmbreaker | Image$ emblem_wrenn_and_realmbreaker | StaticAbilities$ PermanentRecycle | Stackable$ False | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "You may play lands and cast permanent spells from your graveyard." SVar:PermanentRecycle:Mode$ Continuous | EffectZone$ Command | Affected$ Card.Permanent+YouOwn | MayPlay$ True | AffectedZone$ Graveyard | Description$ You may play lands and cast permanent spells from your graveyard. diff --git a/forge-gui/res/editions/Secret Lair Drop Series.txt b/forge-gui/res/editions/Secret Lair Drop Series.txt index f20d709ad78..f9066cb672b 100644 --- a/forge-gui/res/editions/Secret Lair Drop Series.txt +++ b/forge-gui/res/editions/Secret Lair Drop Series.txt @@ -675,7 +675,7 @@ ScryfallCode=SLD 707 R Knight Exemplar @Victor Adame Minguez 708 R Fellwar Stone @Dan Frazier 709 R Dragon's Hoard @Pedro Potier -710 R Command Tower @Evan Shipard +710 R Command Tower @Joana LaFuente 711 R Tireless Tracker @Nils Hamm 716 R Shivan Dragon @Martin Ontiveros 718 R Maro @Jesper Ejsing @@ -684,7 +684,7 @@ ScryfallCode=SLD 721 R Diabolic Tutor @Brain Dead 724 R Lightning Strike @Frank Frazetta 726 R Zur the Enchanter @Chase Stone -727 R Fabled Passage @Warren Mahy +727 R Fabled Passage @Warren Mahy & Post Malone 728 R Themberchaud @Yang Luo 900 R The Scarab God @Barely Human 1001 M Elspeth, Knight-Errant @Volkan Baǵa @@ -705,11 +705,11 @@ ScryfallCode=SLD 1016 M Inferno of the Star Mounts @Jeff Dee 1017 M Old Gnawbone @Justine Mara Andersen 1018 M Tiamat @Pedro Potier -1020 R Idyllic Tutor @Riyou Kamei -1021 R Swords to Plowshares @Riyou Kamei -1022 R Solve the Equation @Riyou Kamei -1023 R Praetor's Grasp @Riyou Kamei -1024 R Veil of Summer @Riyou Kamei +1020 R Idyllic Tutor @Ryo Kamei +1021 R Swords to Plowshares @Ryo Kamei +1022 R Solve the Equation @Ryo Kamei +1023 R Praetor's Grasp @Ryo Kamei +1024 R Veil of Summer @Ryo Kamei 1025 R Merciless Executioner @Paolo Parente 1026 R Aggravated Assault @Helge C. Balzer 1027 R Krenko, Tin Street Kingpin @Paolo Parente @@ -809,16 +809,16 @@ ScryfallCode=SLD 1123b R Etali, Primal Storm @Mike Burns 1124a R Ghalta, Primal Hunger @Mike Burns 1124b R Ghalta, Primal Hunger @Mike Burns -1125 R Serra Ascendant @Kozyndan -1126 R Rapid Hybridization @Kozyndan -1127 R Demonic Consultation @Kozyndan -1128 R Winds of Change @Kozyndan -1129 R Llanowar Elves @Kozyndan -1130 R Plains @Kozyndan -1131 R Island @Kozyndan -1132 R Swamp @Kozyndan -1133 R Mountain @Kozyndan -1134 R Forest @Kozyndan +1125 R Serra Ascendant @kozyndan +1126 R Rapid Hybridization @kozyndan +1127 R Demonic Consultation @kozyndan +1128 R Winds of Change @kozyndan +1129 R Llanowar Elves @kozyndan +1130 R Plains @kozyndan +1131 R Island @kozyndan +1132 R Swamp @kozyndan +1133 R Mountain @kozyndan +1134 R Forest @kozyndan 1135 R Abundant Growth @Ian Jepson 1136 R Mycoloth @CatDirty 1137 M Ghave, Guru of Spores @Sean O'Neill @@ -884,8 +884,8 @@ ScryfallCode=SLD 1220 R Counterbalance @Rope Arrow 1221 M Bruna, Light of Alabaster @Rope Arrow 1222 M Hexdrinker @Boneface -1223 R Lotus Cobra @Crom -1224 R Seshiro the Anointed @Niarki +1223 R Lotus Cobra @CROM +1224 R Seshiro the Anointed @NIARK1 1225 R Ice-Fang Coatl @Crocodile Jackson 1226 R Stonecoil Serpent @Laynes 1227 R Alms Collector @Paul Mafayon @@ -912,11 +912,41 @@ ScryfallCode=SLD 1248 M Koth of the Hammer @Sam Burley 1249 M Master of the Wild Hunt @Sam Burley 1250 M Karrthus, Tyrant of Jund @Sam Burley +1251 R Cleansing Nova @Rebecca Guay +1252 M Serra the Benevolent @Rebecca Guay +1253 R Stoneforge Mystic @Rebecca Guay +1254 R Muddle the Mixture @Rebecca Guay 1262 R Wheel and Deal @Samy Halim 1263 M Questing Beast @Omar Rayyan 1264 M Olivia Voldaren @Samuel Araya 1265 R Walking Ballista @Warren Mahy 1266 R The World Tree @Matt Stikker +1267 R Higure, the Still Wind @Rorubei +1268 R Nezahal, Primal Tide @Yeong-Hao Han +1269 M Dragonlord Kolaghan @Domenico Cava +1270 R Mina and Denn, Wildborn @Jessica Rossier +1271 R Xantcha, Sleeper Agent @JungShan +1272 R Misdirection @Rovina Cai +1273 M Utvara Hellkite @Alex Dos Diaz +1274 R Kogla, the Titan Ape @Steve Ellis +1275 M Nyxbloom Ancient @Jason A. Engle +1276 R Jhoira, Weatherlight Captain @Lisa Heidhoff +1277 R Llawan, Cephalid Empress @Lauren YS +1278 M Master of Waves @Lauren YS +1279 M Thassa, Deep-Dwelling @Lauren YS +1280 R Thassa's Oracle @Lauren YS +1281 R Joraga Treespeaker @Aya Kakeda +1282 R Nature's Will @Aya Kakeda +1283 R Ulvenwald Tracker @Aya Kakeda +1284 R Yeva, Nature's Herald @Aya Kakeda +1285 R Grand Abolisher @Randy Vargas +1286 R Selfless Savior @Randy Vargas +1287 M Akroma, Angel of Fury @Randy Vargas +1288 R Umezawa's Jitte @Randy Vargas +1289 M Linvala, Keeper of Silence @Alayna Danner +1290 R Sunblast Angel @Alayna Danner +1291 R Emeria, the Sky Ruin @Alayna Danner +1292 R Seraph Sanctuary @Alayna Danner 8001 M Jace, the Mind Sculptor @Wizard of Barge 9995 M Garruk, Caller of Beasts @Jesper Ejsing 9996 R Rograkh, Son of Rohgahh @Andrew Mar diff --git a/forge-gui/res/quest/commanderprecons/Adaptive Enchantment [C18] [2018].dck b/forge-gui/res/quest/commanderprecons/Adaptive Enchantment [C18] [2018].dck new file mode 100644 index 00000000000..4a522a5a2dc --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Adaptive Enchantment [C18] [2018].dck @@ -0,0 +1,86 @@ +[metadata] +Name=Adaptive Enchantment [C18] [2018] +[Commander] +1 Estrid, the Masked|C18|1 +[Main] +1 Ajani's Chosen|C18|1 +1 Archetype of Imagination|C18|1 +1 Arixmethes, Slumbering Isle|C18|1 +1 Aura Gnarlid|C18|1 +1 Azorius Chancery|C18|1 +1 Bant Charm|C18|1 +1 Bear Umbra|C18|1 +1 Blossoming Sands|C18|1 +1 Boon Satyr|C18|1 +1 Bruna, Light of Alabaster|C18|1 +1 Celestial Archon|C18|1 +1 Cold-Eyed Selkie|C18|1 +1 Command Tower|C18|1 +1 Creeping Renaissance|C18|1 +1 Dawn's Reflection|C18|1 +1 Daxos of Meletis|C18|1 +1 Dictate of Kruphix|C18|1 +1 Dismantling Blow|C18|1 +1 Eel Umbra|C18|1 +1 Eidolon of Blossoms|C18|1 +1 Elderwood Scion|C18|1 +1 Empyrial Storm|C18|1 +1 Enchantress's Presence|C18|1 +1 Epic Proportions|C18|1 +1 Estrid's Invocation|C18|1 +1 Ever-Watching Threshold|C18|1 +1 Evolving Wilds|C18|1 +1 Fertile Ground|C18|1 +1 Finest Hour|C18|1 +8 Forest|C18|1 +1 Forge of Heroes|C18|1 +1 Genesis Storm|C18|1 +1 Ground Seal|C18|1 +1 Heavenly Blademaster|C18|1 +1 Herald of the Pantheon|C18|1 +1 Hydra Omnivore|C18|1 +6 Island|C18|1 +1 Kestia, the Cultivator|C18|1 +1 Krosan Verge|C18|1 +1 Kruphix's Insight|C18|1 +1 Loyal Drake|C18|1 +1 Loyal Guardian|C18|1 +1 Loyal Unicorn|C18|1 +1 Martial Coup|C18|1 +1 Meandering River|C18|1 +1 Mosswort Bridge|C18|1 +1 Myth Unbound|C18|1 +1 Nylea's Colossus|C18|1 +1 Octopus Umbra|C18|1 +1 Overgrowth|C18|1 +1 Phyrexian Rebirth|C18|1 +9 Plains|C18|1 +1 Ravenous Slime|C18|1 +1 Reclamation Sage|C18|1 +1 Righteous Authority|C18|1 +1 Sage's Reverie|C18|1 +1 Seaside Citadel|C18|1 +1 Selesnya Sanctuary|C18|1 +1 Sigil of the Empty Throne|C18|1 +1 Silent Sentinel|C18|1 +1 Simic Growth Chamber|C18|1 +1 Snake Umbra|C18|1 +1 Sol Ring|C18|1 +1 Soul Snare|C18|1 +1 Spawning Grounds|C18|1 +1 Terramorphic Expanse|C18|1 +1 Thornwood Falls|C18|1 +1 Tranquil Cove|C18|1 +1 Tranquil Expanse|C18|1 +1 Tuvasa the Sunlit|C18|1 +1 Unflinching Courage|C18|1 +1 Unquestioned Authority|C18|1 +1 Vow of Flight|C18|1 +1 Vow of Wildness|C18|1 +1 Whitewater Naiads|C18|1 +1 Wild Growth|C18|1 +1 Winds of Rath|C18|1 +1 Woodland Stream|C18|1 +1 Yavimaya Enchantress|C18|1 +[Sideboard] + diff --git a/forge-gui/res/quest/commanderprecons/Arcane Maelstrom [C20] [2020].dck b/forge-gui/res/quest/commanderprecons/Arcane Maelstrom [C20] [2020].dck new file mode 100644 index 00000000000..08ef47ce438 --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Arcane Maelstrom [C20] [2020].dck @@ -0,0 +1,89 @@ +[metadata] +Name=Arcane Maelstrom [C20] [2020] +[commander] +1 Kalamax, the Stormsire+|C20 +[main] +1 Arcane Signet|C20 +1 Artifact Mutation|C20 +1 Bonder's Ornament|C20 +1 Channeled Force|C20 +1 Chaos Warp|C20 +1 Charmbreaker Devils|C20 +1 Chemister's Insight|C20 +1 Cinder Glade|C20 +1 Clash of Titans|C20 +1 Comet Storm|C20 +1 Command Tower|C20 +1 Commander's Sphere|C20 +1 Commune with Lava|C20 +1 Crackling Drake|C20 +1 Crop Rotation|C20 +1 Curious Herd|C20 +1 Decoy Gambit|C20 +1 Deflecting Swat|C20 +1 Desolate Lighthouse|C20 +1 Djinn Illuminatus|C20 +1 Dualcaster Mage|C20 +1 Eon Frolicker|C20 +1 Etali, Primal Storm|C20 +1 Evolution Charm|C20 +1 Exotic Orchard|C20 +8 Forest|C20 +1 Frantic Search|C20 +1 Frontier Bivouac|C20 +1 Glademuse|C20 +1 Goblin Dark-Dwellers|C20 +1 Growth Spiral|C20 +1 Gruul Turf|C20 +1 Haldan, Avid Arcanist|C20 +1 Halimar Depths|C20 +1 Harrow|C20 +1 Hunter's Insight|C20 +1 Hunting Pack|C20 +5 Island|C20 +1 Izzet Boilerworks|C20 +1 Jace, Architect of Thought|C20 +1 Kessig Wolf Run|C20 +1 Lavabrink Floodgates|C20 +1 Lightning Greaves|C20 +1 Lunar Mystic|C20 +1 Melek, Izzet Paragon|C20 +1 Mossfire Valley|C20 +1 Mosswort Bridge|C20 +5 Mountain|C20 +1 Murmuring Mystic|C20 +1 Myriad Landscape|C20 +1 Nascent Metamorph|C20 +1 Natural Connection|C20 +1 Niblis of Frost|C20 +1 Oran-Rief, the Vastwood|C20 +1 Pako, Arcane Retriever|C20 +1 Predatory Impetus|C20 +1 Primal Empathy|C20 +1 Prophetic Bolt|C20 +1 Psychic Impetus|C20 +1 Rashmi, Eternities Crafter|C20 +1 Ravenous Gigantotherium|C20 +1 Rugged Highlands|C20 +1 Rupture Spire|C20 +1 Scavenger Grounds|C20 +1 Shiny Impetus|C20 +1 Simic Growth Chamber|C20 +1 Slice in Twain|C20 +1 Sol Ring|C20 +1 Solemn Simulacrum|C20 +1 Starstorm|C20 +1 Strength of the Tajuru|C20 +1 Surreal Memoir|C20 +1 Swarm Intelligence|C20 +1 Swiftwater Cliffs|C20 +1 Talrand, Sky Summoner|C20 +1 Temur Charm|C20 +1 Thornwood Falls|C20 +1 Tribute to the Wild|C20 +1 Twinning Staff|C20 +1 Whiplash Trap|C20 +1 Wilderness Reclamation|C20 +1 Wort, the Raidmother|C20 +1 Xyris, the Writhing Storm|C20 +1 Yavimaya Coast|C20 diff --git a/forge-gui/res/quest/commanderprecons/Arcane Wizardry.dck b/forge-gui/res/quest/commanderprecons/Arcane Wizardry [C17] [2017].dck similarity index 98% rename from forge-gui/res/quest/commanderprecons/Arcane Wizardry.dck rename to forge-gui/res/quest/commanderprecons/Arcane Wizardry [C17] [2017].dck index 3405d6f192b..3484b004fed 100644 --- a/forge-gui/res/quest/commanderprecons/Arcane Wizardry.dck +++ b/forge-gui/res/quest/commanderprecons/Arcane Wizardry [C17] [2017].dck @@ -1,5 +1,5 @@ [metadata] -Name=Arcane Wizardry +Name=Arcane Wizardry [C17] [2017] [Commander] 1 Inalla, Archmage Ritualist|C17 [Main] diff --git a/forge-gui/res/quest/commanderprecons/Arm for Battle [CMR] [2020].dck b/forge-gui/res/quest/commanderprecons/Arm for Battle [CMR] [2020].dck new file mode 100644 index 00000000000..537662abc73 --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Arm for Battle [CMR] [2020].dck @@ -0,0 +1,83 @@ +[metadata] +Name=Arm for Battle [CMR] [2020] +[commander] +1 Wyleth, Soul of Steel+|CMR +[main] +1 Abrade|CMR +1 Blackblade Reforged|CMR +1 Blazing Sunsteel|CMR +1 Bonesplitter|CMR +1 Boros Charm|CMR +1 Boros Garrison|CMR +1 Boros Guildgate|CMR +1 Boros Signet|CMR +1 Brass Squire|CMR +1 Comet Storm|CMR +1 Command Tower|CMR +1 Condemn|CMR +1 Danitha Capashen, Paragon|CMR +1 Dawn Charm|CMR +1 Deflecting Palm|CMR +1 Disenchant|CMR +1 Dualcaster Mage|CMR +1 Encroaching Wastes|CMR +1 Evolving Wilds|CMR +1 Expedite|CMR +1 Explorer's Scope|CMR +1 Faith Unbroken|CMR +1 Fireshrieker|CMR +1 Fists of Flame|CMR +1 Flickerwisp|CMR +1 Forgotten Cave|CMR +1 Generous Gift|CMR +1 Haunted Cloak|CMR +1 Hero's Blade|CMR +1 Ironclad Slayer|CMR +1 Jaya's Immolating Inferno|CMR +1 Kor Cartographer|CMR +1 Loxodon Warhammer|CMR +1 Martial Coup|CMR +1 Mask of Avacyn|CMR +1 Master Warcraft|CMR +1 Memorial to War|CMR +9 Mountain|CMR +1 Myriad Landscape|CMR +1 Odric, Lunarch Marshal|CMR +1 On Serra's Wings|CMR +1 Oreskos Explorer|CMR +14 Plains|CMR +1 Relentless Assault|CMR +1 Relic Seeker|CMR +1 Response // Resurgence|CMR +1 Return to Dust|CMR +1 Ring of Thune|CMR +1 Ring of Valkas|CMR +1 Rogue's Passage|CMR +1 Rupture Spire|CMR +1 Secluded Steppe|CMR +1 Sigarda's Aid|CMR +1 Slayers' Stronghold|CMR +1 Sol Ring|CMR +1 Spirit Mantle|CMR +1 Sram, Senior Edificer|CMR +1 Stone Quarry|CMR +1 Sunforger|CMR +1 Sunhome, Fortress of the Legion|CMR +1 Swiftfoot Boots|CMR +1 Sword of Vengeance|CMR +1 Swords to Plowshares|CMR +1 Temur Battle Rage|CMR +1 Terramorphic Expanse|CMR +1 Tiana, Ship's Caretaker|CMR +1 Timely Ward|CMR +1 Transguild Promenade|CMR +1 Unbreakable Formation|CMR +1 Unquestioned Authority|CMR +1 Valorous Stance|CMR +1 Volcanic Fallout|CMR +1 Wear // Tear|CMR +1 White Sun's Zenith|CMR +1 Wild Ricochet|CMR +1 Wind-Scarred Crag|CMR +1 Winds of Rath|CMR +1 Word of Seizing|CMR diff --git a/forge-gui/res/quest/commanderprecons/Aura of Courage [AFC] [2021].dck b/forge-gui/res/quest/commanderprecons/Aura of Courage [AFC] [2021].dck new file mode 100644 index 00000000000..bd700e8fe62 --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Aura of Courage [AFC] [2021].dck @@ -0,0 +1,93 @@ +[metadata] +Name=Aura of Courage [AFC] [2021] +[commander] +1 Galea, Kindler of Hope+|AFC +[main] +1 Abundant Growth|AFC +1 Acidic Slime|AFC +1 Angel of Finality|AFC +1 Angelic Gift|AFC +1 Arcane Signet|AFC +1 Argentum Armor|AFC +1 Azorius Chancery|AFC +1 Bant Charm|AFC +1 Bant Panorama|AFC +1 Basilisk Collar|AFC +1 Behemoth Sledge|AFC +1 Belt of Giant Strength|AFC +1 Brainstorm|AFC +1 Canopy Vista|AFC +1 Catti-brie of Mithral Hall|AFC +1 Clay Golem|AFC +1 Cold-Eyed Selkie|AFC +1 Colossus Hammer|AFC +1 Command Tower|AFC +1 Curse of Verbosity|AFC +1 Diviner's Portent|AFC +1 Ebony Fly|AFC +1 Eel Umbra|AFC +1 Evolving Wilds|AFC +1 Exotic Orchard|AFC +1 Explorer's Scope|AFC +1 Fertile Ground|AFC +1 Fey Steed|AFC +1 Fleecemane Lion|AFC +1 Flood Plain|AFC +8 Forest|AFC +1 Fortified Village|AFC +1 Grasslands|AFC +1 Greater Good|AFC +1 Gryff's Boon|AFC +1 Halimar Depths|AFC +1 Heroic Intervention|AFC +1 Holy Avenger|AFC +1 Imprisoned in the Moon|AFC +4 Island|AFC +1 Kenrith's Transformation|AFC +1 Knight of Autumn|AFC +1 Lumbering Falls|AFC +1 Mantle of the Ancients|AFC +1 Masterwork of Ingenuity|AFC +1 Mishra's Factory|AFC +1 Moonsilver Spear|AFC +1 Nature's Lore|AFC +1 Netherese Puzzle-Ward|AFC +1 Paradise Druid|AFC +1 Path of Ancestry|AFC +2 Plains|AFC +1 Port Town|AFC +1 Prairie Stream|AFC +1 Prognostic Sphinx|AFC +1 Psychic Impetus|AFC +1 Puresteel Paladin|AFC +1 Rancor|AFC +1 Realm-Cloaked Giant|AFC +1 Ride the Avalanche|AFC +1 Riverwise Augur|AFC +1 Robe of Stars|AFC +1 Seaside Citadel|AFC +1 Serum Visions|AFC +1 Shielding Plax|AFC +1 Simic Growth Chamber|AFC +1 Skycloud Expanse|AFC +1 Sol Ring|AFC +1 Song of Inspiration|AFC +1 Sram, Senior Edificer|AFC +1 Storvald, Frost Giant Jarl|AFC +1 Sungrass Prairie|AFC +1 Swiftfoot Boots|AFC +1 Sword of Hours|AFC +1 Sword of the Animist|AFC +1 Terramorphic Expanse|AFC +1 Thriving Grove|AFC +1 Thriving Heath|AFC +1 Thriving Isle|AFC +1 Utopia Sprawl|AFC +1 Valiant Endeavor|AFC +1 Valorous Stance|AFC +1 Verdant Embrace|AFC +1 Viridian Longbow|AFC +1 Vitu-Ghazi, the City-Tree|AFC +1 Wild Growth|AFC +1 Winds of Rath|AFC +1 Winged Boots|AFC diff --git a/forge-gui/res/quest/commanderprecons/Breed Lethality.dck b/forge-gui/res/quest/commanderprecons/Breed Lethality [C16] [2016].dck similarity index 98% rename from forge-gui/res/quest/commanderprecons/Breed Lethality.dck rename to forge-gui/res/quest/commanderprecons/Breed Lethality [C16] [2016].dck index d9c7d48902d..13dea391189 100644 --- a/forge-gui/res/quest/commanderprecons/Breed Lethality.dck +++ b/forge-gui/res/quest/commanderprecons/Breed Lethality [C16] [2016].dck @@ -1,5 +1,5 @@ [metadata] -Name=Breed Lethality +Name=Breed Lethality [C16] [2016] [Commander] 1 Atraxa, Praetors' Voice+|C16 [Main] diff --git a/forge-gui/res/quest/commanderprecons/Breed Lethality (2018).dck b/forge-gui/res/quest/commanderprecons/Breed Lethality [CM2] [2018].dck similarity index 98% rename from forge-gui/res/quest/commanderprecons/Breed Lethality (2018).dck rename to forge-gui/res/quest/commanderprecons/Breed Lethality [CM2] [2018].dck index a4d91ddd97f..d14468c3284 100644 --- a/forge-gui/res/quest/commanderprecons/Breed Lethality (2018).dck +++ b/forge-gui/res/quest/commanderprecons/Breed Lethality [CM2] [2018].dck @@ -1,5 +1,5 @@ [metadata] -Name=Breed Lethality (2018) +Name=Breed Lethality [CM2] [2018] [Commander] 1 Atraxa, Praetors' Voice+|CM2 [Main] diff --git a/forge-gui/res/quest/commanderprecons/Built from Scratch.dck b/forge-gui/res/quest/commanderprecons/Built from Scratch [C14] [2014].dck similarity index 97% rename from forge-gui/res/quest/commanderprecons/Built from Scratch.dck rename to forge-gui/res/quest/commanderprecons/Built from Scratch [C14] [2014].dck index 455cc8b5ced..43f593a1af7 100644 --- a/forge-gui/res/quest/commanderprecons/Built from Scratch.dck +++ b/forge-gui/res/quest/commanderprecons/Built from Scratch [C14] [2014].dck @@ -1,5 +1,5 @@ [metadata] -Name=Built from Scratch +Name=Built from Scratch [C14] [2014] [Commander] 1 Daretti, Scrap Savant|C14 [Main] diff --git a/forge-gui/res/quest/commanderprecons/Built from Scratch (2018).dck b/forge-gui/res/quest/commanderprecons/Built from Scratch [CM2] [2018].dck similarity index 97% rename from forge-gui/res/quest/commanderprecons/Built from Scratch (2018).dck rename to forge-gui/res/quest/commanderprecons/Built from Scratch [CM2] [2018].dck index c9178a3bebd..61baf1358b2 100644 --- a/forge-gui/res/quest/commanderprecons/Built from Scratch (2018).dck +++ b/forge-gui/res/quest/commanderprecons/Built from Scratch [CM2] [2018].dck @@ -1,5 +1,5 @@ [metadata] -Name=Built from Scratch (2018) +Name=Built from Scratch [CM2] [2018] [Commander] 1 Daretti, Scrap Savant+|CM2 [Main] diff --git a/forge-gui/res/quest/commanderprecons/Call for Backup [MOC] [2023].dck b/forge-gui/res/quest/commanderprecons/Call for Backup [MOC] [2023].dck new file mode 100644 index 00000000000..eb6e3ad6cca --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Call for Backup [MOC] [2023].dck @@ -0,0 +1,95 @@ +[metadata] +Name=Call for Backup [MOC] [2023] +[Commander] +1 Bright-Palm, Soul Awakener|MOC|1 +[Main] +1 Abzan Battle Priest|MOC|1 +1 Abzan Falconer|MOC|1 +1 Alharu, Solemn Ritualist|MOC|1 +1 Arcane Signet|MOC|1 +1 Armorcraft Judge|MOC|1 +1 Brawn|MOC|1 +1 Bretagard Stronghold|MOC|1 +1 Canopy Vista|MOC|1 +1 Champion of Lambholt|MOC|1 +1 Cinder Glade|MOC|1 +1 Command Tower|MOC|1 +1 Commander's Sphere|MOC|1 +1 Conclave Mentor|MOC|1 +1 Conclave Sledge-Captain|MOC|1 +1 Constable of the Realm|MOC|1 +1 Cultivate|MOC|1 +1 Death-Greeter's Champion|MOC|1 +1 Dromoka's Command|MOC|1 +1 Elite Scaleguard|MOC|1 +1 Emergent Woodwurm|MOC|1 +1 Enduring Scalelord|MOC|1 +1 Evolving Wilds|MOC|1 +1 Exotic Orchard|MOC|1 +1 Falkenrath Exterminator|MOC|1 +1 Fertilid|MOC|1 +1 Field of Ruin|MOC|1 +1 Flamerush Rider|MOC|1 +1 Flameshadow Conjuring|MOC|1 +6 Forest|MOM|1 +1 Forgotten Ancient|MOC|1 +1 Fortified Village|MOC|1 +1 Fractured Powerstone|MOC|1 +1 Furycalm Snarl|MOC|1 +1 Game Trail|MOC|1 +1 Gavony Township|MOC|1 +1 Generous Gift|MOC|1 +1 Genesis Hydra|MOC|1 +1 Good-Fortune Unicorn|MOC|1 +1 Guardian Scalelord|MOC|1 +1 Gyre Sage|MOC|1 +1 Hamza, Guardian of Arashin|MOC|1 +1 Heaven // Earth|MOC|1 +1 High Sentinels of Arashin|MOC|1 +1 Hindervines|MOC|1 +1 Ichor Elixir|MOC|1 +1 Incubation Druid|MOC|1 +1 Inscription of Abundance|MOC|1 +1 Inspiring Call|MOC|1 +1 Ion Storm|MOC|1 +1 Jungle Shrine|MOC|1 +1 Juniper Order Ranger|MOC|1 +1 Kalonian Hydra|MOC|1 +1 Kessig Wolf Run|MOC|1 +1 Kodama's Reach|MOC|1 +1 Krenko, Tin Street Kingpin|MOC|1 +1 Krosan Verge|MOC|1 +1 Llanowar Reborn|MOC|1 +1 Managorger Hydra|MOC|1 +1 Mikaeus, the Lunarch|MOC|1 +1 Mindless Automaton|MOC|1 +1 Mirror-Style Master|MOC|1 +1 Mossfire Valley|MOC|1 +1 Mosswort Bridge|MOC|1 +2 Mountain|MOM|1 +1 Path of the Pyromancer|MOC|1 +1 Path of Ancestry|MOC|1 +5 Plains|MOM|1 +1 Pridemalkin|MOC|1 +1 Restoration Angel|MOC|1 +1 Return to Nature|MOC|1 +1 Rishkar, Peema Renegade|MOC|1 +1 Rogue's Passage|MOC|1 +1 Semester's End|MOC|1 +1 Shalai and Hallar|MOC|1 +1 Slurrk, All-Ingesting|MOC|1 +1 Sol Ring|MOC|1 +1 Strionic Resonator|MOC|1 +1 Sungrass Prairie|MOC|1 +1 Sunscorch Regent|MOC|1 +1 Swords to Plowshares|MOC|1 +1 Temple of Abandon|MOC|1 +1 Temple of Plenty|MOC|1 +1 Temple of the False God|MOC|1 +1 Temple of Triumph|MOC|1 +1 Terramorphic Expanse|MOC|1 +1 Together Forever|MOC|1 +1 Triskelion|MOC|1 +1 Uncivil Unrest|MOC|1 +1 Wood Elves|MOC|1 +[Sideboard] diff --git a/forge-gui/res/quest/commanderprecons/Call the Spirits.dck b/forge-gui/res/quest/commanderprecons/Call the Spirits [C15] [2015].dck similarity index 98% rename from forge-gui/res/quest/commanderprecons/Call the Spirits.dck rename to forge-gui/res/quest/commanderprecons/Call the Spirits [C15] [2015].dck index 230a8819d7d..92c55982594 100644 --- a/forge-gui/res/quest/commanderprecons/Call the Spirits.dck +++ b/forge-gui/res/quest/commanderprecons/Call the Spirits [C15] [2015].dck @@ -1,5 +1,5 @@ [metadata] -Name=Call the Spirits +Name=Call the Spirits [C15] [2015] Description=Daxos the Returned travels across Theros in a never-ending search, surrounded by spirits that are drawn to his power. As mighty enchantments enter the battlefield, the spirits he summons grow larger and larger, leaving his enemies overwhelmed. [Commander] 1 Daxos the Returned+|C15 diff --git a/forge-gui/res/quest/commanderprecons/Cavalry Charge [MOC] [2023].dck b/forge-gui/res/quest/commanderprecons/Cavalry Charge [MOC] [2023].dck new file mode 100644 index 00000000000..a04367c2f02 --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Cavalry Charge [MOC] [2023].dck @@ -0,0 +1,89 @@ +[metadata] +Name=Cavalry Charge [MOC] [2023] +[Commander] +1 Sidar Jabari of Zhalfir|MOC|1 +[Main] +1 Acclaimed Contender|MOC|1 +1 Adeline, Resplendent Cathar|MOC|1 +1 Arcane Sanctum|MOC|1 +1 Arcane Signet|MOC|1 +1 Arvad the Cursed|MOC|1 +1 Aryel, Knight of Windgrace|MOC|1 +1 Bojuka Bog|MOC|1 +1 Chivalric Alliance|MOC|1 +1 Choked Estuary|MOC|1 +1 Command Tower|MOC|1 +1 Commander's Sphere|MOC|1 +1 Conjurer's Mantle|MOC|1 +1 Corpse Knight|MOC|1 +1 Despark|MOC|1 +1 Distant Melody|MOC|1 +1 Elenda and Azor|MOC|1 +1 Ethersworn Adjudicator|MOC|1 +1 Evolving Wilds|MOC|1 +1 Exotic Orchard|MOC|1 +1 Ichor Elixir|MOC|1 +1 Exsanguinator Cavalry|MOC|1 +1 Fell the Mighty|MOC|1 +1 Fellwar Stone|MOC|1 +1 Foulmire Knight|MOC|1 +1 Fractured Powerstone|MOC|1 +1 Haakon, Stromgald Scourge|MOC|1 +1 Herald of Hoofbeats|MOC|1 +1 Herald's Horn|MOC|1 +1 Hero of Bladehold|MOC|1 +6 Island|MOM|1 +1 Josu Vess, Lich Knight|MOC|1 +1 Knight Exemplar|MOC|1 +1 Knight of the Last Breath|MOC|1 +1 Knight of the White Orchid|MOC|1 +1 Knights of the Black Rose|MOC|1 +1 Knights' Charge|MOC|1 +1 Liliana's Standard Bearer|MOC|1 +1 Locthwain Lancer|MOC|1 +1 Maul of the Skyclaves|MOC|1 +1 Midnight Reaper|MOC|1 +1 Mind Stone|MOC|1 +1 Murderous Rider|MOC|1 +1 Myriad Landscape|MOC|1 +1 Order of Midnight|MOC|1 +1 Orzhov Signet|MOC|1 +1 Painful Truths|MOC|1 +1 Path of the Enigma|MOC|1 +1 Path of Ancestry|MOC|1 +1 Path to Exile|MOC|1 +8 Plains|MOM|1 +1 Port Town|MOC|1 +1 Prairie Stream|MOC|1 +1 Promise of Loyalty|MOC|1 +1 Pull from Tomorrow|MOC|1 +1 Read the Bones|MOC|1 +1 Return to Dust|MOC|1 +1 Shineshadow Snarl|MOC|1 +1 Sigiled Sword of Valeron|MOC|1 +1 Silverwing Squadron|MOC|1 +1 Smitten Swordmaster|MOC|1 +1 Sol Ring|MOC|1 +1 Sunken Hollow|MOC|1 +5 Swamp|MOM|1 +1 Swords to Plowshares|MOC|1 +1 Syr Elenora, the Discerning|MOC|1 +1 Syr Konrad, the Grim|MOC|1 +1 Temple of Deceit|MOC|1 +1 Temple of Enlightenment|MOC|1 +1 Temple of Silence|MOC|1 +1 Temple of the False God|MOC|1 +1 Terramorphic Expanse|MOC|1 +1 Thriving Heath|MOC|1 +1 Thriving Isle|MOC|1 +1 Thriving Moor|MOC|1 +1 Time Wipe|MOC|1 +1 Unbreakable Formation|MOC|1 +1 Valiant Knight|MOC|1 +1 Vanquisher's Banner|MOC|1 +1 Vodalian Wave-Knight|MOC|1 +1 Vona, Butcher of Magan|MOC|1 +1 Wintermoor Commander|MOC|1 +1 Worthy Knight|MOC|1 +1 Xerex Strobe-Knight|MOM|1 +[Sideboard] \ No newline at end of file diff --git a/forge-gui/res/quest/commanderprecons/Counterpunch.dck b/forge-gui/res/quest/commanderprecons/Counterpunch [COM] [2011].dck similarity index 98% rename from forge-gui/res/quest/commanderprecons/Counterpunch.dck rename to forge-gui/res/quest/commanderprecons/Counterpunch [COM] [2011].dck index 3bbbd929d63..e98dc8c96ee 100644 --- a/forge-gui/res/quest/commanderprecons/Counterpunch.dck +++ b/forge-gui/res/quest/commanderprecons/Counterpunch [COM] [2011].dck @@ -1,5 +1,5 @@ [metadata] -Name=Counterpunch +Name=Counterpunch [COM] [2011] [Commander] 1 Ghave, Guru of Spores|COM [Main] diff --git a/forge-gui/res/quest/commanderprecons/Coven Counters [MIC] [2021].dck b/forge-gui/res/quest/commanderprecons/Coven Counters [MIC] [2021].dck new file mode 100644 index 00000000000..f84d2d7a421 --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Coven Counters [MIC] [2021].dck @@ -0,0 +1,82 @@ +[metadata] +Name=Coven Counters [MIC] [2021] +[commander] +1 Leinore, Autumn Sovereign+|MIC +[main] +1 Abzan Falconer|MIC +1 Ainok Bond-Kin|MIC +1 Angel of Glory's Rise|MIC +1 Arcane Signet|MIC +1 Avacyn's Pilgrim|MIC +1 Bastion Protector|MIC +1 Beast Within|MIC +1 Bestial Menace|MIC +1 Biogenic Upgrade|MIC +1 Blighted Woodland|MIC +1 Canopy Vista|MIC +1 Celebrate the Harvest|MIC +1 Celestial Judgment|MIC +1 Champion of Lambholt|MIC +1 Citadel Siege|MIC +1 Cleansing Nova|MIC +1 Command Tower|MIC +1 Curse of Clinging Webs|MIC +1 Curse of Conformity|MIC +1 Custodi Soulbinders|MIC +1 Dawnhart Wardens|MIC +1 Dearly Departed|MIC +1 Death's Presence|MIC +1 Elite Scaleguard|MIC +1 Enduring Scalelord|MIC +1 Eternal Witness|MIC +1 Exotic Orchard|MIC +12 Forest|MIC +1 Fortified Village|MIC +1 Growth Spasm|MIC +1 Gyre Sage|MIC +1 Herald of War|MIC +1 Heron's Grace Champion|MIC +1 Heronblade Elite|MIC +1 Hour of Reckoning|MIC +1 Inspiring Call|MIC +1 Juniper Order Ranger|MIC +1 Kessig Cagebreakers|MIC +1 Knight of the White Orchid|MIC +1 Krosan Verge|MIC +1 Kurbis, Harvest Celebrant|MIC +1 Kyler, Sigardian Emissary|MIC +1 Lifecrafter's Bestiary|MIC +1 Mikaeus, the Lunarch|MIC +1 Moonsilver Key|MIC +1 Moorland Rescuer|MIC +1 Myriad Landscape|MIC +1 Odric, Master Tactician|MIC +1 Orzhov Advokist|MIC +1 Path of Ancestry|MIC +12 Plains|MIC +1 Return to Dust|MIC +1 Riders of Gavony|MIC +1 Rogue's Passage|MIC +1 Ruinous Intrusion|MIC +1 Selesnya Sanctuary|MIC +1 Shamanic Revelation|MIC +1 Sigarda's Vanguard|MIC +1 Sigarda, Heron's Grace|MIC +1 Sigardian Zealot|MIC +1 Sol Ring|MIC +1 Somberwald Beastmaster|MIC +1 Somberwald Sage|MIC +1 Stalwart Pathlighter|MIC +1 Sungrass Prairie|MIC +1 Swiftfoot Boots|MIC +1 Swords to Plowshares|MIC +1 Talisman of Unity|MIC +1 Temple of Plenty|MIC +1 Temple of the False God|MIC +1 Trostani's Summoner|MIC +1 Unbreakable Formation|MIC +1 Verdurous Gearhulk|MIC +1 Victory's Envoy|MIC +1 Wall of Mourning|MIC +1 Wild Beastmaster|MIC +1 Yavimaya Elder|MIC diff --git a/forge-gui/res/quest/commanderprecons/Devour for Power (2018).dck b/forge-gui/res/quest/commanderprecons/Devour for Power [CM2] [2018].dck similarity index 98% rename from forge-gui/res/quest/commanderprecons/Devour for Power (2018).dck rename to forge-gui/res/quest/commanderprecons/Devour for Power [CM2] [2018].dck index 28a58e1f81d..adfa4961de1 100644 --- a/forge-gui/res/quest/commanderprecons/Devour for Power (2018).dck +++ b/forge-gui/res/quest/commanderprecons/Devour for Power [CM2] [2018].dck @@ -1,5 +1,5 @@ [metadata] -Name=Devour for Power (2018) +Name=Devour for Power [CM2] [2018] [Commander] 1 The Mimeoplasm+|CM2 [Main] diff --git a/forge-gui/res/quest/commanderprecons/Devour for Power.dck b/forge-gui/res/quest/commanderprecons/Devour for Power [COM] [2011].dck similarity index 98% rename from forge-gui/res/quest/commanderprecons/Devour for Power.dck rename to forge-gui/res/quest/commanderprecons/Devour for Power [COM] [2011].dck index 3d4c45a94c5..0aeba35deef 100644 --- a/forge-gui/res/quest/commanderprecons/Devour for Power.dck +++ b/forge-gui/res/quest/commanderprecons/Devour for Power [COM] [2011].dck @@ -1,5 +1,5 @@ [metadata] -Name=Devour for Power +Name=Devour for Power [COM] [2011] [Commander] 1 The Mimeoplasm|COM [Main] diff --git a/forge-gui/res/quest/commanderprecons/Divine Convocation [MOC] [2023].dck b/forge-gui/res/quest/commanderprecons/Divine Convocation [MOC] [2023].dck new file mode 100644 index 00000000000..c0b935bae70 --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Divine Convocation [MOC] [2023].dck @@ -0,0 +1,84 @@ +[metadata] +Name=Divine Convocation [MOC] [2023] +[Commander] +1 Kasla, the Broken Halo|MOC|1 +[Main] +1 Angel of Finality|MOC|1 +1 Angel of Salvation|MOC|1 +1 Arcane Signet|MOC|1 +1 Artistic Refusal|MOM|1 +1 Austere Command|MOC|1 +1 Banisher Priest|MOC|1 +1 Battle Screech|MOC|1 +1 Chant of Vitu-Ghazi|MOC|1 +1 Chasm Skulker|MOC|1 +1 Cloud of Faeries|MOC|1 +1 Command Tower|MOC|1 +1 Commander's Sphere|MOC|1 +1 Conclave Tribunal|MOC|1 +1 Cultivator's Caravan|MOC|1 +1 Cut Short|MOM|1 +1 Temporal Cleansing|MOM|1 +1 Wrenn's Resolve|MOM|1 +1 Deluxe Dragster|MOC|1 +1 Devouring Light|MOC|1 +1 Duergar Hedge-Mage|MOC|1 +1 Elspeth, Sun's Champion|MOC|1 +1 Emeria Angel|MOC|1 +1 Ephemeral Shields|MOC|1 +1 Evolving Wilds|MOC|1 +1 Exotic Orchard|MOC|1 +1 Fallowsage|MOC|1 +1 Flight of Equenauts|MOC|1 +1 Flockchaser Phantom|MOC|1 +1 Fractured Powerstone|MOC|1 +1 Frostboil Snarl|MOC|1 +1 Furycalm Snarl|MOC|1 +1 Goblin Instigator|MOC|1 +1 Goblin Medics|MOC|1 +1 Hour of Reckoning|MOC|1 +1 Impact Tremors|MOC|1 +1 Improbable Alliance|MOC|1 +8 Island|MOM|1 +1 Joyful Stormsculptor|MOM|1 +1 Keeper of the Accord|MOC|1 +1 Kher Keep|MOC|1 +1 Kykar, Wind's Fury|MOC|1 +1 Meeting of Minds|MOM|1 +1 Mentor of the Meek|MOC|1 +1 Migratory Route|MOC|1 +1 Mistmeadow Vanisher|MOC|1 +8 Mountain|MOM|1 +1 Mystic Monastery|MOC|1 +1 Nadir Kraken|MOC|1 +1 Nesting Dovehawk|MOC|1 +8 Plains|MOM|1 +1 Port Town|MOC|1 +1 Prairie Stream|MOC|1 +1 Rogue's Passage|MOC|1 +1 Secure the Wastes|MOC|1 +1 Seraph of the Masses|MOC|1 +1 Shatter the Source|MOM|1 +1 Skullclamp|MOC|1 +1 Skycloud Expanse|MOC|1 +1 Sol Ring|MOC|1 +1 Spirited Companion|MOC|1 +1 Stoke the Flames|MOM|1 +1 Suture Priest|MOC|1 +1 Swords to Plowshares|MOC|1 +1 Temple of Enlightenment|MOC|1 +1 Temple of Epiphany|MOC|1 +1 Temple of Triumph|MOC|1 +1 Terramorphic Expanse|MOC|1 +1 Tetsuko Umezawa, Fugitive|MOC|1 +1 The Locust God|MOC|1 +1 Venerated Loxodon|MOC|1 +1 Village Bell-Ringer|MOC|1 +1 Wand of the Worldsoul|MOC|1 +1 Wear // Tear|MOC|1 +1 Whirlwind of Thought|MOC|1 +1 Wildfire Awakener|MOC|1 +1 Ichor Elixir|MOC|1 +1 Path of the Ghosthunter|MOC|1 +1 Saint Traft and Rem Karolus|MOC|1 +[Sideboard] \ No newline at end of file diff --git a/forge-gui/res/quest/commanderprecons/Draconic Domination.dck b/forge-gui/res/quest/commanderprecons/Draconic Domination [C17] [2017].dck similarity index 98% rename from forge-gui/res/quest/commanderprecons/Draconic Domination.dck rename to forge-gui/res/quest/commanderprecons/Draconic Domination [C17] [2017].dck index 122b59351a0..319b83ceee3 100644 --- a/forge-gui/res/quest/commanderprecons/Draconic Domination.dck +++ b/forge-gui/res/quest/commanderprecons/Draconic Domination [C17] [2017].dck @@ -1,5 +1,5 @@ [metadata] -Name=Draconic Domination +Name=Draconic Domination [C17] [2017] [Commander] 1 The Ur-Dragon|C17 [Main] diff --git a/forge-gui/res/quest/commanderprecons/Draconic Rage [AFC] [2021].dck b/forge-gui/res/quest/commanderprecons/Draconic Rage [AFC] [2021].dck new file mode 100644 index 00000000000..8f848779fe2 --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Draconic Rage [AFC] [2021].dck @@ -0,0 +1,79 @@ +[metadata] +Name=Draconic Rage [AFC] [2021] +[commander] +1 Vrondiss, Rage of Ancients+|AFC +[main] +1 Anger|AFC +1 Arcane Signet|AFC +1 Atarka, World Render|AFC +1 Bag of Tricks|AFC +1 Barbarian Class|AFC +1 Beast Within|AFC +1 Berserker's Frenzy|AFC +1 Bogardan Hellkite|AFC +1 Chain Reaction|AFC +1 Chameleon Colossus|AFC +1 Chaos Dragon|AFC +1 Cinder Glade|AFC +1 Colossal Majesty|AFC +1 Command Tower|AFC +1 Commander's Sphere|AFC +1 Component Pouch|AFC +1 Crucible of the Spirit Dragon|AFC +1 Cultivate|AFC +1 Decree of Savagery|AFC +1 Demanding Dragon|AFC +1 Desert|AFC +1 Dragon's Hoard|AFC +1 Dragonborn Champion|AFC +1 Dragonlord's Servant|AFC +1 Dragonmaster Outcast|AFC +1 Dragonspeaker Shaman|AFC +1 Druid of Purification|AFC +1 Earth-Cult Elemental|AFC +1 Exotic Orchard|AFC +1 Explore|AFC +15 Forest|AFC +1 Game Trail|AFC +1 Garruk's Uprising|AFC +1 Gratuitous Violence|AFC +1 Gruul Signet|AFC +1 Gruul Turf|AFC +1 Haven of the Spirit Dragon|AFC +1 Heirloom Blade|AFC +1 Hoard-Smelter Dragon|AFC +1 Indomitable Might|AFC +1 Kindred Summons|AFC +1 Klauth's Will|AFC +1 Klauth, Unrivaled Ancient|AFC +1 Maddening Hex|AFC +1 Magmaquake|AFC +1 Mossfire Valley|AFC +1 Mosswort Bridge|AFC +12 Mountain|AFC +1 Neverwinter Hydra|AFC +1 Opportunistic Dragon|AFC +1 Outpost Siege|AFC +1 Path of Ancestry|AFC +1 Rampant Growth|AFC +1 Return of the Wildspeaker|AFC +1 Return to Nature|AFC +1 Rile|AFC +1 Rishkar's Expertise|AFC +1 Savage Ventmaw|AFC +1 Scourge of Valkas|AFC +1 Shamanic Revelation|AFC +1 Shivan Hellkite|AFC +1 Skyline Despot|AFC +1 Skyship Stalker|AFC +1 Sol Ring|AFC +1 Spit Flame|AFC +1 Sword of Hours|AFC +1 Taurean Mauler|AFC +1 Terror of Mount Velus|AFC +1 Thunderbreak Regent|AFC +1 Underdark Rift|AFC +1 Vengeful Ancestor|AFC +1 Warstorm Surge|AFC +1 Wild Endeavor|AFC +1 Wulfgar of Icewind Dale|AFC diff --git a/forge-gui/res/quest/commanderprecons/Dungeons of Death [AFC] [2021].dck b/forge-gui/res/quest/commanderprecons/Dungeons of Death [AFC] [2021].dck new file mode 100644 index 00000000000..68f749df5ba --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Dungeons of Death [AFC] [2021].dck @@ -0,0 +1,88 @@ +[metadata] +Name=Dungeons of Death [AFC] [2021] +[commander] +1 Sefris of the Hidden Ways+|AFC +[main] +1 Arcane Endeavor|AFC +1 Arcane Sanctum|AFC +1 Arcane Signet|AFC +1 Ashen Rider|AFC +1 Azorius Chancery|AFC +1 Baleful Strix|AFC +1 Bucknard's Everfull Purse|AFC +1 Burnished Hart|AFC +1 Cataclysmic Gearhulk|AFC +1 Champion of Wits|AFC +1 Choked Estuary|AFC +1 Clay Golem|AFC +1 Cloudblazer|AFC +1 Command Tower|AFC +1 Commander's Sphere|AFC +1 Component Pouch|AFC +1 Curator of Mysteries|AFC +1 Darkwater Catacombs|AFC +1 Despark|AFC +1 Dimir Aqueduct|AFC +1 Doomed Necromancer|AFC +1 Dungeon Map|AFC +1 Esper Panorama|AFC +1 Eternal Dragon|AFC +1 Evolving Wilds|AFC +1 Exotic Orchard|AFC +1 Extract Brain|AFC +1 Fellwar Stone|AFC +1 Forbidden Alchemy|AFC +1 Geier Reach Sanitarium|AFC +1 Grave Endeavor|AFC +1 Hama Pashar, Ruin Seeker|AFC +1 High Market|AFC +1 Hostage Taker|AFC +1 Immovable Rod|AFC +5 Island|AFC +1 Karmic Guide|AFC +1 Lightning Greaves|AFC +1 Merfolk Looter|AFC +1 Meteor Golem|AFC +1 Midnight Pathlighter|AFC +1 Minimus Containment|AFC +1 Minn, Wily Illusionist|AFC +1 Mulldrifter|AFC +1 Murder of Crows|AFC +1 Necromantic Selection|AFC +1 Necrotic Sliver|AFC +1 Nihiloor|AFC +1 Nimbus Maze|AFC +1 Obsessive Stitcher|AFC +1 Orzhov Basilica|AFC +1 Phantasmal Image|AFC +1 Phantom Steed|AFC +1 Plaguecrafter|AFC +7 Plains|AFC +1 Port Town|AFC +1 Prairie Stream|AFC +1 Propaganda|AFC +1 Radiant Solar|AFC +1 Reassembling Skeleton|AFC +1 Revivify|AFC +1 Rod of Absorption|AFC +1 Ronom Unicorn|AFC +1 Shriekmaw|AFC +1 Sol Ring|AFC +1 Solemn Simulacrum|AFC +1 Sun Titan|AFC +1 Sunblast Angel|AFC +1 Sunken Hollow|AFC +7 Swamp|AFC +1 Swords to Plowshares|AFC +1 Terramorphic Expanse|AFC +1 Thorough Investigation|AFC +1 Thriving Heath|AFC +1 Thriving Isle|AFC +1 Thriving Moor|AFC +1 Unburial Rites|AFC +1 Utter End|AFC +1 Vanish into Memory|AFC +1 Victimize|AFC +1 Wall of Omens|AFC +1 Wand of Orcus|AFC +1 Wayfarer's Bauble|AFC diff --git a/forge-gui/res/quest/commanderprecons/Elven Empire [KHC] [2021].dck b/forge-gui/res/quest/commanderprecons/Elven Empire [KHC] [2021].dck new file mode 100644 index 00000000000..3d8d8989517 --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Elven Empire [KHC] [2021].dck @@ -0,0 +1,77 @@ +[metadata] +Name=Elven Empire [KHC] [2021] +[commander] +1 Lathril, Blade of the Elves+|KHC +[main] +1 Abomination of Llanowar|KHC +1 Ambition's Cost|KHC +1 Arcane Signet|KHC +1 Beast Whisperer|KHC +1 Binding the Old Gods|KHC +1 Bounty of Skemfar|KHC +1 Canopy Tactician|KHC +1 Casualties of War|KHC +1 Command Tower|KHC +1 Crown of Skemfar|KHC +1 Cultivator of Blades|KHC +1 Dwynen, Gilt-Leaf Daen|KHC +1 Elderfang Ritualist|KHC +1 Elderfang Venom|KHC +1 Elven Ambush|KHC +1 Elvish Archdruid|KHC +1 Elvish Mystic|KHC +1 Elvish Promenade|KHC +1 Elvish Rejuvenator|KHC +1 End-Raze Forerunners|KHC +1 Eyeblight Cullers|KHC +1 Eyeblight Massacre|KHC +1 Farhaven Elf|KHC +16 Forest|KHC +1 Foul Orchard|KHC +1 Golgari Findbroker|KHC +1 Golgari Guildgate|KHC +1 Golgari Rot Farm|KHC +1 Harald, King of Skemfar|KHC +1 Harvest Season|KHC +1 Imperious Perfect|KHC +1 Jagged-Scar Archers|KHC +1 Jaspera Sentinel|KHC +1 Jungle Hollow|KHC +1 Llanowar Tribe|KHC +1 Lys Alana Huntmaster|KHC +1 Lys Alana Scarblade|KHC +1 Marwyn, the Nurturer|KHC +1 Masked Admirers|KHC +1 Miara, Thorn of the Glade|KHC +1 Moldervine Reclamation|KHC +1 Myriad Landscape|KHC +1 Nullmage Shepherd|KHC +1 Numa, Joraga Chieftain|KHC +1 Pact of the Serpent|KHC +1 Path of Ancestry|KHC +1 Poison the Cup|KHC +1 Poison-Tip Archer|KHC +1 Pride of the Perfect|KHC +1 Prowess of the Fair|KHC +1 Putrefy|KHC +1 Reclamation Sage|KHC +1 Return Upon the Tide|KHC +1 Rhys the Exiled|KHC +1 Roots of Wisdom|KHC +1 Ruthless Winnower|KHC +1 Serpent's Soul-Jar|KHC +1 Shaman of the Pack|KHC +1 Skemfar Elderhall|KHC +1 Skemfar Shadowsage|KHC +1 Sol Ring|KHC +1 Springbloom Druid|KHC +13 Swamp|KHC +1 Sylvan Messenger|KHC +1 Tergrid's Shadow|KHC +1 Timberwatch Elf|KHC +1 Twinblade Assassins|KHC +1 Voice of Many|KHC +1 Voice of the Woods|KHC +1 Wirewood Channeler|KHC +1 Wolverine Riders|KHC +1 Wood Elves|KHC diff --git a/forge-gui/res/quest/commanderprecons/Enhanced Evolution [C20] [2020].dck b/forge-gui/res/quest/commanderprecons/Enhanced Evolution [C20] [2020].dck new file mode 100644 index 00000000000..4ee98cf7bde --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Enhanced Evolution [C20] [2020].dck @@ -0,0 +1,89 @@ +[metadata] +Name=Enhanced Evolution [C20] [2020] +[commander] +1 Otrimi, the Ever-Playful+|C20 +[main] +1 Animist's Awakening|C20 +1 Arcane Signet|C20 +1 Archipelagore|C20 +1 Auspicious Starrix|C20 +1 Beast Whisperer|C20 +1 Beast Within|C20 +1 Blighted Woodland|C20 +1 Bonder's Ornament|C20 +1 Boneyard Lurker|C20 +1 Boneyard Mycodrax|C20 +1 Capricopian|C20 +1 Cavern Whisperer|C20 +1 Cazur, Ruthless Stalker|C20 +1 Chittering Harvester|C20 +1 Cold-Eyed Selkie|C20 +1 Command Tower|C20 +1 Darkwater Catacombs|C20 +1 Deadly Rollick|C20 +1 Deadly Tempest|C20 +1 Dimir Aqueduct|C20 +1 Dismal Backwater|C20 +1 Dreamtail Heron|C20 +1 Dredge the Mire|C20 +1 Endless Sands|C20 +1 Exotic Orchard|C20 +1 Fertilid|C20 +1 Find // Finality|C20 +11 Forest|C20 +1 Gaze of Granite|C20 +1 Genesis Hydra|C20 +1 Glowstone Recluse|C20 +1 Golgari Rot Farm|C20 +1 Heroes' Bane|C20 +1 Hungering Hydra|C20 +1 Illusory Ambusher|C20 +1 Insatiable Hemophage|C20 +2 Island|C20 +1 Jungle Hollow|C20 +1 Kodama's Reach|C20 +1 Krosan Grip|C20 +1 Lifecrafter's Bestiary|C20 +1 Llanowar Wastes|C20 +1 Manascape Refractor|C20 +1 Masked Admirers|C20 +1 Migration Path|C20 +1 Migratory Greathorn|C20 +1 Mind Spring|C20 +1 Mindleecher|C20 +1 Mortuary Mire|C20 +1 Mulldrifter|C20 +1 Myriad Landscape|C20 +1 Nissa, Steward of Elements|C20 +1 Opulent Palace|C20 +1 Parasitic Impetus|C20 +1 Pouncing Shoreshark|C20 +1 Predator Ooze|C20 +1 Predatory Impetus|C20 +1 Profane Command|C20 +1 Propaganda|C20 +1 Psychic Impetus|C20 +1 Putrefy|C20 +1 Reclamation Sage|C20 +1 Rogue's Passage|C20 +1 Sawtusk Demolisher|C20 +1 Shriekmaw|C20 +1 Silent Arbiter|C20 +1 Simic Growth Chamber|C20 +1 Soaring Seacliff|C20 +1 Sol Ring|C20 +1 Souvenir Snatcher|C20 +1 Sunken Hollow|C20 +5 Swamp|C20 +1 Temple of the False God|C20 +1 Thornwood Falls|C20 +1 Tidal Barracuda|C20 +1 Trumpeting Gnarr|C20 +1 Trygon Predator|C20 +1 Ukkima, Stalking Shadow|C20 +1 Vastwood Hydra|C20 +1 Villainous Wealth|C20 +1 Vorapede|C20 +1 Wydwen, the Biting Gale|C20 +1 Yavimaya Dryad|C20 +1 Zaxara, the Exemplary|C20 diff --git a/forge-gui/res/quest/commanderprecons/Entropic Uprising.dck b/forge-gui/res/quest/commanderprecons/Entropic Uprising [C16] [2016].dck similarity index 98% rename from forge-gui/res/quest/commanderprecons/Entropic Uprising.dck rename to forge-gui/res/quest/commanderprecons/Entropic Uprising [C16] [2016].dck index daa28afdf00..f361d730fe9 100644 --- a/forge-gui/res/quest/commanderprecons/Entropic Uprising.dck +++ b/forge-gui/res/quest/commanderprecons/Entropic Uprising [C16] [2016].dck @@ -1,5 +1,5 @@ [metadata] -Name=Entropic Uprising +Name=Entropic Uprising [C16] [2016] [Commander] 1 Yidris, Maelstrom Wielder+|C16 [Main] diff --git a/forge-gui/res/quest/commanderprecons/Eternal Bargain.dck b/forge-gui/res/quest/commanderprecons/Eternal Bargain [C13] [2013].dck similarity index 98% rename from forge-gui/res/quest/commanderprecons/Eternal Bargain.dck rename to forge-gui/res/quest/commanderprecons/Eternal Bargain [C13] [2013].dck index 8d7b164eace..8eeab822a64 100644 --- a/forge-gui/res/quest/commanderprecons/Eternal Bargain.dck +++ b/forge-gui/res/quest/commanderprecons/Eternal Bargain [C13] [2013].dck @@ -1,5 +1,5 @@ [metadata] -Name=Eternal Bargain +Name=Eternal Bargain [C13] [2013] [Commander] 1 Oloro, Ageless Ascetic|C13 [Main] diff --git a/forge-gui/res/quest/commanderprecons/Evasive Maneuvers.dck b/forge-gui/res/quest/commanderprecons/Evasive Maneuvers [C13] [2013].dck similarity index 98% rename from forge-gui/res/quest/commanderprecons/Evasive Maneuvers.dck rename to forge-gui/res/quest/commanderprecons/Evasive Maneuvers [C13] [2013].dck index 6bac05b6139..cbdeda09bfb 100644 --- a/forge-gui/res/quest/commanderprecons/Evasive Maneuvers.dck +++ b/forge-gui/res/quest/commanderprecons/Evasive Maneuvers [C13] [2013].dck @@ -1,5 +1,5 @@ [metadata] -Name=Evasive Maneuvers +Name=Evasive Maneuvers [C13] [2013] [Commander] 1 Derevi, Empyrial Tactician|C13 [Main] diff --git a/forge-gui/res/quest/commanderprecons/Evasive Maneuvers (2017).dck b/forge-gui/res/quest/commanderprecons/Evasive Maneuvers [CMA] [2017].dck similarity index 98% rename from forge-gui/res/quest/commanderprecons/Evasive Maneuvers (2017).dck rename to forge-gui/res/quest/commanderprecons/Evasive Maneuvers [CMA] [2017].dck index 07f0c0545ea..af3385e1bd7 100644 --- a/forge-gui/res/quest/commanderprecons/Evasive Maneuvers (2017).dck +++ b/forge-gui/res/quest/commanderprecons/Evasive Maneuvers [CMA] [2017].dck @@ -1,5 +1,5 @@ [metadata] -Name=Evasive Maneuvers (CMA) +Name=Evasive Maneuvers [CMA] [2017] [Commander] 1 Derevi, Empyrial Tactician|CMA [Main] diff --git a/forge-gui/res/quest/commanderprecons/Exquisite Invention [C18] [2018].dck b/forge-gui/res/quest/commanderprecons/Exquisite Invention [C18] [2018].dck new file mode 100644 index 00000000000..4f1aec3ea9c --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Exquisite Invention [C18] [2018].dck @@ -0,0 +1,81 @@ +[metadata] +Name=Exquisite Invention [C18] [2018] +[Commander] +1 Saheeli, the Gifted|C18|1 +[Main] +1 Aether Gale|C18|1 +1 Ancient Stone Idol|C18|1 +1 Blasphemous Act|C18|1 +1 Blinkmoth Urn|C18|1 +1 Bosh, Iron Golem|C18|1 +1 Brudiclad, Telchor Engineer|C18|1 +1 Buried Ruin|C18|1 +1 Chaos Warp|C18|1 +1 Chief of the Foundry|C18|1 +1 Command Tower|C18|1 +1 Commander's Sphere|C18|1 +1 Coveted Jewel|C18|1 +1 Darksteel Citadel|C18|1 +1 Darksteel Juggernaut|C18|1 +1 Dreamstone Hedron|C18|1 +1 Duplicant|C18|1 +1 Echo Storm|C18|1 +1 Enchanter's Bane|C18|1 +1 Endless Atlas|C18|1 +1 Etherium Sculptor|C18|1 +1 Forge of Heroes|C18|1 +1 Foundry of the Consuls|C18|1 +1 Geode Golem|C18|1 +1 Great Furnace|C18|1 +1 Hedron Archive|C18|1 +1 Hellkite Igniter|C18|1 +1 Highland Lake|C18|1 +1 Inkwell Leviathan|C18|1 +1 Into the Roil|C18|1 +15 Island|C18|1 +1 Izzet Boilerworks|C18|1 +1 Izzet Guildgate|C18|1 +1 Izzet Signet|C18|1 +1 Loyal Apprentice|C18|1 +1 Loyal Drake|C18|1 +1 Magmaquake|C18|1 +1 Magnifying Glass|C18|1 +1 Maverick Thopterist|C18|1 +1 Mimic Vat|C18|1 +1 Mind Stone|C18|1 +1 Mirrorworks|C18|1 +12 Mountain|C18|1 +1 Myr Battlesphere|C18|1 +1 Pilgrim's Eye|C18|1 +1 Prismatic Lens|C18|1 +1 Prototype Portal|C18|1 +1 Psychosis Crawler|C18|1 +1 Retrofitter Foundry|C18|1 +1 Reverse Engineer|C18|1 +1 Saheeli's Artistry|C18|1 +1 Saheeli's Directive|C18|1 +1 Scrabbling Claws|C18|1 +1 Scuttling Doom Engine|C18|1 +1 Seat of the Synod|C18|1 +1 Sharding Sphinx|C18|1 +1 Sol Ring|C18|1 +1 Soul of New Phyrexia|C18|1 +1 Steel Hellkite|C18|1 +1 Swiftfoot Boots|C18|1 +1 Swiftwater Cliffs|C18|1 +1 Tawnos, Urza's Apprentice|C18|1 +1 Thirst for Knowledge|C18|1 +1 Thopter Assembly|C18|1 +1 Thopter Engineer|C18|1 +1 Thopter Spy Network|C18|1 +1 Tidings|C18|1 +1 Treasure Nabber|C18|1 +1 Unstable Obelisk|C18|1 +1 Unwinding Clock|C18|1 +1 Varchild, Betrayer of Kjeldor|C18|1 +1 Vedalken Humiliator|C18|1 +1 Vessel of Endless Rest|C18|1 +1 Whirler Rogue|C18|1 +1 Worn Powerstone|C18|1 +[Sideboard] + diff --git a/forge-gui/res/quest/commanderprecons/Faceless Menace [C19] [2019].dck b/forge-gui/res/quest/commanderprecons/Faceless Menace [C19] [2019].dck new file mode 100644 index 00000000000..4224953a1b8 --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Faceless Menace [C19] [2019].dck @@ -0,0 +1,94 @@ +[metadata] +Name=Faceless Menace [C19] [2019] +[Commander] +1 Kadena, Slinking Sorcerer|C19|1 +[Main] +1 Ainok Survivalist|C19|1 +1 Apex Altisaur|C19|1 +1 Ash Barrens|C19|1 +1 Bane of the Living|C19|1 +1 Biomass Mutation|C19|1 +1 Bojuka Bog|C19|1 +1 Bounty of the Luxa|C19|1 +1 Chromeshell Crab|C19|1 +1 Command Tower|C19|1 +1 Cultivate|C19|1 +1 Darkwater Catacombs|C19|1 +1 Deathmist Raptor|C19|1 +1 Den Protector|C19|1 +1 Dimir Aqueduct|C19|1 +1 Echoing Truth|C19|1 +1 Evolving Wilds|C19|1 +1 Exotic Orchard|C19|1 +1 Explore|C19|1 +1 Farseek|C19|1 +7 Forest|C19|1 +1 Foul Orchard|C19|1 +1 Ghastly Conscription|C19|1 +1 Gift of Doom|C19|1 +1 Golgari Guildgate|C19|1 +1 Golgari Rot Farm|C19|1 +1 Great Oak Guardian|C19|1 +1 Grim Haruspex|C19|1 +1 Grismold, the Dreadsower|C19|1 +1 Hex|C19|1 +1 Hooded Hydra|C19|1 +1 Icefeather Aven|C19|1 +5 Island|C19|1 +1 Ixidron|C19|1 +1 Jungle Hollow|C19|1 +1 Kadena's Silencer|C19|1 +1 Kheru Spellsnatcher|C19|1 +1 Leadership Vacuum|C19|1 +1 Llanowar Wastes|C19|1 +1 Mire in Misery|C19|1 +1 Myriad Landscape|C19|1 +1 Nantuko Vigilante|C19|1 +1 Opulent Palace|C19|1 +1 Overwhelming Stampede|C19|1 +1 Pendant of Prosperity|C19|1 +1 Putrefy|C19|1 +1 Rayami, First of the Fallen|C19|1 +1 Reality Shift|C19|1 +1 Reliquary Tower|C19|1 +1 Road of Return|C19|1 +1 Sagu Mauler|C19|1 +1 Sakura-Tribe Elder|C19|1 +1 Scaretiller|C19|1 +1 Scroll of Fate|C19|1 +1 Secret Plans|C19|1 +1 Seedborn Muse|C19|1 +1 Shrine of the Forsaken Gods|C19|1 +1 Silumgar Assassin|C19|1 +1 Simic Growth Chamber|C19|1 +1 Simic Guildgate|C19|1 +1 Skinthinner|C19|1 +1 Sol Ring|C19|1 +1 Stratus Dancer|C19|1 +1 Strionic Resonator|C19|1 +1 Sudden Substitution|C19|1 +1 Sultai Charm|C19|1 +1 Sunken Hollow|C19|1 +3 Swamp|C19|1 +1 Temple of the False God|C19|1 +1 Tempt with Discovery|C19|1 +1 Terramorphic Expanse|C19|1 +1 Tezzeret's Gambit|C19|1 +1 Thelonite Hermit|C19|1 +1 Thespian's Stage|C19|1 +1 Thieving Amalgam|C19|1 +1 Thornwood Falls|C19|1 +1 Thought Sponge|C19|1 +1 Thousand Winds|C19|1 +1 Thran Dynamo|C19|1 +1 Trail of Mystery|C19|1 +1 Urban Evolution|C19|1 +1 Vesuvan Shapeshifter|C19|1 +1 Voice of Many|C19|1 +1 Volrath, the Shapestealer|C19|1 +1 Vraska the Unseen|C19|1 +1 Willbender|C19|1 +1 Woodland Stream|C19|1 +1 Yavimaya Coast|C19|1 +[Sideboard] + diff --git a/forge-gui/res/quest/commanderprecons/Feline Ferocity.dck b/forge-gui/res/quest/commanderprecons/Feline Ferocity [C17] [2017].dck similarity index 98% rename from forge-gui/res/quest/commanderprecons/Feline Ferocity.dck rename to forge-gui/res/quest/commanderprecons/Feline Ferocity [C17] [2017].dck index ede58f094b2..3d0cf148fd8 100644 --- a/forge-gui/res/quest/commanderprecons/Feline Ferocity.dck +++ b/forge-gui/res/quest/commanderprecons/Feline Ferocity [C17] [2017].dck @@ -1,5 +1,5 @@ [metadata] -Name=Feline Ferocity +Name=Feline Ferocity [C17] [2017] [Commander] 1 Arahbo, Roar of the World|C17 [Main] diff --git a/forge-gui/res/quest/commanderprecons/Forged in Stone.dck b/forge-gui/res/quest/commanderprecons/Forged in Stone [C14] [2014].dck similarity index 97% rename from forge-gui/res/quest/commanderprecons/Forged in Stone.dck rename to forge-gui/res/quest/commanderprecons/Forged in Stone [C14] [2014].dck index a5370a8504e..33b179085bb 100644 --- a/forge-gui/res/quest/commanderprecons/Forged in Stone.dck +++ b/forge-gui/res/quest/commanderprecons/Forged in Stone [C14] [2014].dck @@ -1,5 +1,5 @@ [metadata] -Name=Forged in Stone +Name=Forged in Stone [C14] [2014] [Commander] 1 Nahiri, the Lithomancer|C14 [Main] diff --git a/forge-gui/res/quest/commanderprecons/Growing Threat [MOC] [2023].dck b/forge-gui/res/quest/commanderprecons/Growing Threat [MOC] [2023].dck new file mode 100644 index 00000000000..4dca4072345 --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Growing Threat [MOC] [2023].dck @@ -0,0 +1,85 @@ +[metadata] +Name=Growing Threat [MOC] [2023] +[Commander] +1 Brimaz, Blight of Oreskos|MOC|1 +[Main] +1 Ambition's Cost|MOC|1 +1 Ancient Stone Idol|MOC|1 +1 Angel of the Ruins|MOC|1 +1 Arcane Signet|MOC|1 +1 Bitterthorn, Nissa's Animus|MOC|1 +1 Blade Splicer|MOC|1 +1 Blight Titan|MOC|1 +1 Bloodline Pretender|MOC|1 +1 Bojuka Bog|MOC|1 +1 Bone Shredder|MOC|1 +1 Burnished Hart|MOC|1 +1 Cataclysmic Gearhulk|MOC|1 +1 Command Tower|MOC|1 +1 Commander's Sphere|MOC|1 +1 Compleated Huntmaster|MOM|1 +1 Coveted Jewel|MOC|1 +1 Darksteel Splicer|MOC|1 +1 Despark|MOC|1 +1 Duplicant|MOC|1 +1 Evolving Wilds|MOC|1 +1 Excise the Imperfect|MOC|1 +1 Exotic Orchard|MOC|1 +1 Fetid Heath|MOC|1 +1 First-Sphere Gargantua|MOC|1 +1 Fractured Powerstone|MOC|1 +1 Go for the Throat|MOC|1 +1 Goldmire Bridge|MOC|1 +1 Graveshifter|MOC|1 +1 Hedron Archive|MOC|1 +1 Karn's Bastion|MOC|1 +1 Keskit, the Flesh Sculptor|MOC|1 +1 Massacre Wurm|MOC|1 +1 Master Splicer|MOC|1 +1 Meteor Golem|MOC|1 +1 Mind Stone|MOC|1 +1 Moira and Teshar|MOC|1 +1 Mortify|MOC|1 +1 Myr Battlesphere|MOC|1 +1 Nettlecyst|MOC|1 +1 Night's Whisper|MOC|1 +1 Noxious Gearhulk|MOC|1 +1 Orzhov Locket|MOC|1 +1 Orzhov Signet|MOC|1 +1 Path of Ancestry|MOC|1 +1 Phyrexian Delver|MOC|1 +1 Phyrexian Gargantua|MOM|1 +1 Phyrexian Ghoul|MOC|1 +1 Phyrexian Rager|MOC|1 +1 Phyrexian Rebirth|MOC|1 +1 Phyrexian Scriptures|MOC|1 +1 Phyrexian Triniform|MOC|1 +10 Plains|MOM|1 +1 Psychosis Crawler|MOC|1 +1 Scrap Trawler|MOC|1 +1 Sculpting Steel|MOC|1 +1 Scytheclaw|MOC|1 +1 Shattered Angel|MOC|1 +1 Shimmer Myr|MOC|1 +1 Shineshadow Snarl|MOC|1 +1 Silverquill Campus|MOC|1 +1 Sol Ring|MOC|1 +1 Soul of New Phyrexia|MOC|1 +1 Spire of Industry|MOC|1 +13 Swamp|MOM|1 +1 Swords to Plowshares|MOC|1 +1 Tainted Field|MOC|1 +1 Talisman of Hierarchy|MOC|1 +1 Temple of Silence|MOC|1 +1 Terramorphic Expanse|MOC|1 +1 Utter End|MOC|1 +1 Vault of the Archangel|MOC|1 +1 Victimize|MOC|1 +1 Vulpine Harvester|MOC|1 +1 Wayfarer's Bauble|MOC|1 +1 Yawgmoth's Vile Offering|MOC|1 +1 Ichor Elixir|MOC|1 +1 Path of the Schemer|MOC|1 +1 Filigree Vector|MOC|1 +[Sideboard] + diff --git a/forge-gui/res/quest/commanderprecons/Guided by Nature.dck b/forge-gui/res/quest/commanderprecons/Guided by Nature [C14] [2014].dck similarity index 98% rename from forge-gui/res/quest/commanderprecons/Guided by Nature.dck rename to forge-gui/res/quest/commanderprecons/Guided by Nature [C14] [2014].dck index 16143e672db..7ea9e4c12f6 100644 --- a/forge-gui/res/quest/commanderprecons/Guided by Nature.dck +++ b/forge-gui/res/quest/commanderprecons/Guided by Nature [C14] [2014].dck @@ -1,5 +1,5 @@ [metadata] -Name=Guided by Nature +Name=Guided by Nature [C14] [2014} [Commander] 1 Freyalise, Llanowar's Fury|C14 [Main] diff --git a/forge-gui/res/quest/commanderprecons/Guided by Nature (2017).dck b/forge-gui/res/quest/commanderprecons/Guided by Nature [CMA] [2017].dck similarity index 98% rename from forge-gui/res/quest/commanderprecons/Guided by Nature (2017).dck rename to forge-gui/res/quest/commanderprecons/Guided by Nature [CMA] [2017].dck index b49376b3216..c48b0e15f4d 100644 --- a/forge-gui/res/quest/commanderprecons/Guided by Nature (2017).dck +++ b/forge-gui/res/quest/commanderprecons/Guided by Nature [CMA] [2017].dck @@ -1,5 +1,5 @@ [metadata] -Name=Guided by Nature (CMA) +Name=Guided by Nature [CMA] [2017] [Commander] 1 Freyalise, Llanowar's Fury|CMA [Main] diff --git a/forge-gui/res/quest/commanderprecons/Heads I Win, Tails You Lose [SLD] [2021].dck b/forge-gui/res/quest/commanderprecons/Heads I Win, Tails You Lose [SLD] [2021].dck new file mode 100644 index 00000000000..e70699e2846 --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Heads I Win, Tails You Lose [SLD] [2021].dck @@ -0,0 +1,91 @@ +[metadata] +Name=Heads I Win, Tails You Lose [SLD] [2021] +[commander] +1 Okaun, Eye of Chaos+|SLD +1 Zndrsplt, Eye of Wisdom+|SLD +[main] +1 Academy Ruins|SLD +1 Arcane Signet|SLD +1 Blasphemous Act|SLD +1 Bloodsworn Steward|SLD +1 Boompile|SLD +1 Buried Ruin|SLD +1 Cascade Bluffs|SLD +1 Chance Encounter|SLD +1 Chandra's Ignition|SLD +1 Chaos Warp|SLD +1 Command Tower|SLD +1 Commander's Plate|SLD +1 Counterspell|SLD +1 Crooked Scales|SLD +1 Daretti, Scrap Savant|SLD +1 Desolate Lighthouse|SLD +1 Embercleave|SLD +1 Exotic Orchard|SLD +1 Fabricate|SLD +1 Fiery Gambit|SLD +1 Flamekin Village|SLD +1 Footfall Crater|SLD +1 Frenetic Sliver|SLD +1 Gamble|SLD +1 Goblin Archaeologist|SLD +1 Goblin Engineer|SLD +1 Goblin Kaboomist|SLD +1 Great Furnace|SLD +1 Impulsive Maneuvers|SLD +1 Inventors' Fair|SLD +7 Island|SLD +1 Izzet Boilerworks|SLD +1 Izzet Signet|SLD +1 Karplusan Minotaur|SLD +1 Krark's Thumb|SLD +1 Krark, the Thumbless|SLD +1 Lightning Greaves|SLD +1 Long-Term Plans|SLD +1 Mind Stone|SLD +1 Mirror March|SLD +1 Mogg Assassin|SLD +8 Mountain|SLD +1 Muddle the Mixture|SLD +1 Myriad Landscape|SLD +1 Negate|SLD +1 Niv-Mizzet, Parun|SLD +1 Path of Ancestry|SLD +1 Planar Chaos|SLD +1 Ponder|SLD +1 Preordain|SLD +1 Propaganda|SLD +1 Ral Zarek|SLD +1 Reliquary Tower|SLD +1 Reshape|SLD +1 Risky Move|SLD +1 Rogue's Passage|SLD +1 Sakashima the Impostor|SLD +1 Seize the Day|SLD +1 Serum Visions|SLD +1 Shadowspear|SLD +1 Shivan Reef|SLD +1 Slip Through Space|SLD +1 Sol Ring|SLD +1 Spark Double|SLD +1 Spinerock Knoll|SLD +1 Squee's Revenge|SLD +1 Stitch in Time|SLD +1 Sulfur Falls|SLD +1 Swiftfoot Boots|SLD +1 Sword of Vengeance|SLD +1 Talisman of Creativity|SLD +1 Tavern Scoundrel|SLD +1 Temple of Epiphany|SLD +1 Temple of the False God|SLD +1 Temur Battle Rage|SLD +1 The Locust God|SLD +1 Thought Vessel|SLD +1 Tolaria West|SLD +1 Training Center|SLD +1 Tribute Mage|SLD +1 Vandalblast|SLD +1 Wandering Fumarole|SLD +1 Whir of Invention|SLD +1 Whispersilk Cloak|SLD +1 Yusri, Fortune's Flame|SLD diff --git a/forge-gui/res/quest/commanderprecons/Heavenly Inferno (2017).dck b/forge-gui/res/quest/commanderprecons/Heavenly Inferno [CMA] [2017].dck similarity index 98% rename from forge-gui/res/quest/commanderprecons/Heavenly Inferno (2017).dck rename to forge-gui/res/quest/commanderprecons/Heavenly Inferno [CMA] [2017].dck index 7b0eb065777..ce64ad90c0e 100644 --- a/forge-gui/res/quest/commanderprecons/Heavenly Inferno (2017).dck +++ b/forge-gui/res/quest/commanderprecons/Heavenly Inferno [CMA] [2017].dck @@ -1,5 +1,5 @@ [metadata] -Name=Heavenly Inferno (CMA) +Name=Heavenly Inferno [CMA] [2017] [Commander] 1 Kaalia of the Vast|CMA [Main] diff --git a/forge-gui/res/quest/commanderprecons/Heavenly Inferno.dck b/forge-gui/res/quest/commanderprecons/Heavenly Inferno [COM] [2011].dck similarity index 98% rename from forge-gui/res/quest/commanderprecons/Heavenly Inferno.dck rename to forge-gui/res/quest/commanderprecons/Heavenly Inferno [COM] [2011].dck index 42813ef3c63..1f255a03da3 100644 --- a/forge-gui/res/quest/commanderprecons/Heavenly Inferno.dck +++ b/forge-gui/res/quest/commanderprecons/Heavenly Inferno [COM] [2011].dck @@ -1,5 +1,5 @@ [metadata] -Name=Heavenly Inferno +Name=Heavenly Inferno [COM] [2011] [Commander] 1 Kaalia of the Vast|COM [Main] diff --git a/forge-gui/res/quest/commanderprecons/Invent Superiority.dck b/forge-gui/res/quest/commanderprecons/Invent Superiority [C16] [2016].dck similarity index 98% rename from forge-gui/res/quest/commanderprecons/Invent Superiority.dck rename to forge-gui/res/quest/commanderprecons/Invent Superiority [C16] [2016].dck index 5f18c105b7b..b98d8e95359 100644 --- a/forge-gui/res/quest/commanderprecons/Invent Superiority.dck +++ b/forge-gui/res/quest/commanderprecons/Invent Superiority [C16] [2016].dck @@ -1,5 +1,5 @@ [metadata] -Name=Invent Superiority +Name=Invent Superiority [C16] [2016] [Commander] 1 Breya, Etherium Shaper+|C16 [Main] diff --git a/forge-gui/res/quest/commanderprecons/Land's Wrath [ZNC] [2020].dck b/forge-gui/res/quest/commanderprecons/Land's Wrath [ZNC] [2020].dck new file mode 100644 index 00000000000..0f08b40746d --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Land's Wrath [ZNC] [2020].dck @@ -0,0 +1,86 @@ +[metadata] +Name=Land's Wrath [ZNC] [2020] +[commander] +1 Obuun, Mul Daya Ancestor+|ZNC +[main] +1 Acidic Slime|ZNC +1 Arcane Signet|ZNC +1 Armorcraft Judge|ZNC +1 Banishing Light|ZNC +1 Emeria Angel|ZNC +1 Evolution Sage|ZNC +1 Harmonize|ZNC +1 Multani, Yavimaya's Avatar|ZNC +1 Naya Panorama|ZNC +1 Planar Outburst|ZNC +1 Retreat to Kazandu|ZNC +1 Return of the Wildspeaker|ZNC +1 Sylvan Advocate|ZNC +1 Terramorphic Expanse|ZNC +1 Treacherous Terrain|ZNC +1 Tuskguard Captain|ZNC +1 Yavimaya Elder|ZNC +1 Zendikar's Roil|ZNC +1 Abundance|ZNC +1 Abzan Falconer|ZNC +1 Admonition Angel|ZNC +1 Beanstalk Giant|ZNC +1 Blighted Woodland|ZNC +1 Boros Garrison|ZNC +1 Boros Guildgate|ZNC +1 Circuitous Route|ZNC +1 Command Tower|ZNC +1 Condemn|ZNC +1 Crush Contraband|ZNC +1 Cryptic Caves|ZNC +1 Elite Scaleguard|ZNC +1 Elvish Rejuvenator|ZNC +1 Embodiment of Insight|ZNC +1 Emeria Shepherd|ZNC +1 Evolving Wilds|ZNC +1 Far Wanderings|ZNC +1 Fertilid|ZNC +10 Forest|ZNC +1 Geode Rager|ZNC +1 Ground Assault|ZNC +1 Gruul Guildgate|ZNC +1 Gruul Turf|ZNC +1 Harrow|ZNC +1 Hour of Revelation|ZNC +1 Inspiring Call|ZNC +1 Jungle Shrine|ZNC +1 Keeper of Fables|ZNC +1 Khalni Heart Expedition|ZNC +1 Kodama's Reach|ZNC +1 Kor Cartographer|ZNC +1 Krosan Verge|ZNC +1 Living Twister|ZNC +1 Mina and Denn, Wildborn|ZNC +4 Mountain|ZNC +1 Murasa Rootgrazer|ZNC +1 Myriad Landscape|ZNC +1 Naya Charm|ZNC +1 Needle Spires|ZNC +1 Nissa's Renewal|ZNC +1 Omnath, Locus of Rage|ZNC +7 Plains|ZNC +1 Rampaging Baloths|ZNC +1 Retreat to Emeria|ZNC +1 Rites of Flourishing|ZNC +1 Roiling Regrowth|ZNC +1 Sandstone Oracle|ZNC +1 Satyr Wayfinder|ZNC +1 Scaretiller|ZNC +1 Seer's Sundial|ZNC +1 Selesnya Guildgate|ZNC +1 Selesnya Sanctuary|ZNC +1 Sol Ring|ZNC +1 Sporemound|ZNC +1 Springbloom Druid|ZNC +1 Struggle // Survive|ZNC +1 Sun Titan|ZNC +1 Sylvan Reclamation|ZNC +1 The Mending of Dominaria|ZNC +1 Together Forever|ZNC +1 Trove Warden|ZNC +1 Waker of the Wilds|ZNC diff --git a/forge-gui/res/quest/commanderprecons/Lorehold Legacies [C21] [2021].dck b/forge-gui/res/quest/commanderprecons/Lorehold Legacies [C21] [2021].dck new file mode 100644 index 00000000000..75abccfd041 --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Lorehold Legacies [C21] [2021].dck @@ -0,0 +1,86 @@ +[metadata] +Name=Lorehold Legacies [C21] [2021] +[commander] +1 Osgir, the Reconstructor+|C21 +[main] +1 Alibou, Ancient Witness|C21 +1 Ancient Den|C21 +1 Angel of the Ruins|C21 +1 Arcane Signet|C21 +1 Archaeomancer's Map|C21 +1 Audacious Reshapers|C21 +1 Battlefield Forge|C21 +1 Battlemage's Bracers|C21 +1 Boros Charm|C21 +1 Boros Garrison|C21 +1 Boros Locket|C21 +1 Bosh, Iron Golem|C21 +1 Bronze Guardian|C21 +1 Burnished Hart|C21 +1 Chain Reaction|C21 +1 Cleansing Nova|C21 +1 Combustible Gearhulk|C21 +1 Command Tower|C21 +1 Commander's Sphere|C21 +1 Cursed Mirror|C21 +1 Daretti, Scrap Savant|C21 +1 Darksteel Citadel|C21 +1 Darksteel Mutation|C21 +1 Digsite Engineer|C21 +1 Dispatch|C21 +1 Dispeller's Capsule|C21 +1 Duplicant|C21 +1 Excavation Technique|C21 +1 Exotic Orchard|C21 +1 Faithless Looting|C21 +1 Feldon of the Third Path|C21 +1 Forgotten Cave|C21 +1 Great Furnace|C21 +1 Hedron Archive|C21 +1 Hellkite Igniter|C21 +1 Hellkite Tyrant|C21 +1 Hoard-Smelter Dragon|C21 +1 Ichor Wellspring|C21 +1 Jor Kadeen, the Prevailer|C21 +1 Key to the City|C21 +1 Laelia, the Blade Reforged|C21 +1 Lorehold Campus|C21 +1 Losheel, Clockwork Scholar|C21 +1 Meteor Golem|C21 +1 Mind Stone|C21 +1 Monologue Tax|C21 +12 Mountain|C21 +1 Mycosynth Wellspring|C21 +1 Myr Battlesphere|C21 +1 Myriad Landscape|C21 +1 Phyrexia's Core|C21 +1 Pia Nalaar|C21 +1 Pilgrim's Eye|C21 +8 Plains|C21 +1 Quicksmith Genius|C21 +1 Reconstruct History|C21 +1 Return to Dust|C21 +1 Rip Apart|C21 +1 Rogue's Passage|C21 +1 Rout|C21 +1 Ruin Grinder|C21 +1 Sanctum Gargoyle|C21 +1 Scrap Trawler|C21 +1 Sculpting Steel|C21 +1 Secluded Steppe|C21 +1 Secret Rendezvous|C21 +1 Slayers' Stronghold|C21 +1 Sol Ring|C21 +1 Solemn Simulacrum|C21 +1 Steel Hellkite|C21 +1 Steel Overseer|C21 +1 Study Hall|C21 +1 Sun Titan|C21 +1 Sunhome, Fortress of the Legion|C21 +1 Temple of the False God|C21 +1 Temple of Triumph|C21 +1 Thopter Engineer|C21 +1 Thousand-Year Elixir|C21 +1 Triplicate Titan|C21 +1 Unstable Obelisk|C21 +1 Wake the Past|C21 diff --git a/forge-gui/res/quest/commanderprecons/Merciless Rage [C19] [2019].dck b/forge-gui/res/quest/commanderprecons/Merciless Rage [C19] [2019].dck new file mode 100644 index 00000000000..aa9b514b1c1 --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Merciless Rage [C19] [2019].dck @@ -0,0 +1,88 @@ +[metadata] +Name=Merciless Rage [C19] [2019] +[Commander] +1 Anje Falkenrath|C19|1 +[Main] +1 Aeon Engine|C19|1 +1 Akoum Refuge|C19|1 +1 Alchemist's Greeting|C19|1 +1 Anje's Ravager|C19|1 +1 Archfiend of Spite|C19|1 +1 Armillary Sphere|C19|1 +1 Ash Barrens|C19|1 +1 Asylum Visitor|C19|1 +1 Avacyn's Judgment|C19|1 +1 Barren Moor|C19|1 +1 Beacon of Unrest|C19|1 +1 Big Game Hunter|C19|1 +1 Bloodfell Caves|C19|1 +1 Bloodhall Priest|C19|1 +1 Bloodthirsty Blade|C19|1 +1 Bone Miser|C19|1 +1 Boneyard Parley|C19|1 +1 Call to the Netherworld|C19|1 +1 Chainer, Nightmare Adept|C19|1 +1 Champion of Stray Souls|C19|1 +1 Chaos Warp|C19|1 +1 Cinder Barrens|C19|1 +1 Command Tower|C19|1 +1 Curse of Fool's Wisdom|C19|1 +1 Dark Withering|C19|1 +1 Doomed Necromancer|C19|1 +1 Drownyard Temple|C19|1 +1 Evolving Wilds|C19|1 +1 Exotic Orchard|C19|1 +1 Faith of the Devoted|C19|1 +1 Fiery Temper|C19|1 +1 Flayer of the Hatebound|C19|1 +1 Forgotten Cave|C19|1 +1 From Under the Floorboards|C19|1 +1 Geier Reach Sanitarium|C19|1 +1 Geth, Lord of the Vault|C19|1 +1 Gorgon Recluse|C19|1 +1 Grave Scrabbler|C19|1 +1 Greven, Predator Captain|C19|1 +1 Grimoire of the Dead|C19|1 +1 Hate Mirage|C19|1 +1 Hedonist's Trove|C19|1 +1 Hedron Archive|C19|1 +1 In Garruk's Wake|C19|1 +1 K'rrik, Son of Yawgmoth|C19|1 +1 Key to the City|C19|1 +1 Magus of the Wheel|C19|1 +1 Malevolent Whispers|C19|1 +1 Memorial to Folly|C19|1 +1 Meteor Golem|C19|1 +1 Mire in Misery|C19|1 +1 Mortuary Mire|C19|1 +10 Mountain|C19|1 +1 Murderous Compulsion|C19|1 +1 Myriad Landscape|C19|1 +1 Nightmare Unmaking|C19|1 +1 Nightshade Assassin|C19|1 +1 Ob Nixilis Reignited|C19|1 +1 Overseer of the Damned|C19|1 +1 Plaguecrafter|C19|1 +1 Rakdos Carnarium|C19|1 +1 Rakdos Guildgate|C19|1 +1 Rakdos Locket|C19|1 +1 Rix Maadi, Dungeon Palace|C19|1 +1 Sanctum of Eternity|C19|1 +1 Sanitarium Skeleton|C19|1 +1 Scaretiller|C19|1 +1 Skyfire Phoenix|C19|1 +1 Sol Ring|C19|1 +1 Solemn Simulacrum|C19|1 +1 Soul of Innistrad|C19|1 +1 Squee, Goblin Nabob|C19|1 +1 Stromkirk Occultist|C19|1 +10 Swamp|C19|1 +1 Temple of the False God|C19|1 +1 Terramorphic Expanse|C19|1 +1 The Eldest Reborn|C19|1 +1 Violent Eruption|C19|1 +1 Warstorm Surge|C19|1 +1 Wildfire Devils|C19|1 +1 Zombie Infestation|C19|1 +[Sideboard] + diff --git a/forge-gui/res/quest/commanderprecons/Mind Seize.dck b/forge-gui/res/quest/commanderprecons/Mind Seize [C13] [2013].dck similarity index 98% rename from forge-gui/res/quest/commanderprecons/Mind Seize.dck rename to forge-gui/res/quest/commanderprecons/Mind Seize [C13] [2013].dck index cdad91e1de9..53adada3df9 100644 --- a/forge-gui/res/quest/commanderprecons/Mind Seize.dck +++ b/forge-gui/res/quest/commanderprecons/Mind Seize [C13] [2013].dck @@ -1,5 +1,5 @@ [metadata] -Name=Mind Seize +Name=Mind Seize [C13] [2013] [Commander] 1 Jeleva, Nephalia's Scourge|C13 [Main] diff --git a/forge-gui/res/quest/commanderprecons/Mirror Mastery.dck b/forge-gui/res/quest/commanderprecons/Mirror Mastery [COM] [2011].dck similarity index 98% rename from forge-gui/res/quest/commanderprecons/Mirror Mastery.dck rename to forge-gui/res/quest/commanderprecons/Mirror Mastery [COM] [2011].dck index 97c2d662ec2..22dd8dbc019 100644 --- a/forge-gui/res/quest/commanderprecons/Mirror Mastery.dck +++ b/forge-gui/res/quest/commanderprecons/Mirror Mastery [COM] [2011].dck @@ -1,5 +1,5 @@ [metadata] -Name=Mirror Mastery +Name=Mirror Mastery [COM] [2011] [Commander] 1 Riku of Two Reflections|COM [Main] diff --git a/forge-gui/res/quest/commanderprecons/Mystic Intellect [C19] [2019].dck b/forge-gui/res/quest/commanderprecons/Mystic Intellect [C19] [2019].dck new file mode 100644 index 00000000000..21f1174c74d --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Mystic Intellect [C19] [2019].dck @@ -0,0 +1,88 @@ +[metadata] +Name=Mystic Intellect [C19] [2019] +[Commander] +1 Sevinne, the Chronoclasm|C19|1 +[Main] +1 Armillary Sphere|C19|1 +1 Ash Barrens|C19|1 +1 Azorius Chancery|C19|1 +1 Azorius Locket|C19|1 +1 Backdraft Hellkite|C19|1 +1 Bloodthirsty Blade|C19|1 +1 Boros Garrison|C19|1 +1 Boros Guildgate|C19|1 +1 Burning Vengeance|C19|1 +1 Burnished Hart|C19|1 +1 Chemister's Insight|C19|1 +1 Clever Impersonator|C19|1 +1 Cliffside Rescuer|C19|1 +1 Command Tower|C19|1 +1 Commander's Sphere|C19|1 +1 Crackling Drake|C19|1 +1 Deep Analysis|C19|1 +1 Desperate Ravings|C19|1 +1 Devil's Play|C19|1 +1 Divine Reckoning|C19|1 +1 Dockside Extortionist|C19|1 +1 Dusk // Dawn|C19|1 +1 Elsha of the Infinite|C19|1 +1 Empowered Autogenerator|C19|1 +1 Evolving Wilds|C19|1 +1 Exotic Orchard|C19|1 +1 Fact or Fiction|C19|1 +1 Faithless Looting|C19|1 +1 Farm // Market|C19|1 +1 Fervent Denial|C19|1 +1 Gerrard, Weatherlight Hero|C19|1 +1 Ghostly Prison|C19|1 +1 Guttersnipe|C19|1 +1 Highland Lake|C19|1 +1 Ignite the Future|C19|1 +1 Increasing Devotion|C19|1 +1 Increasing Vengeance|C19|1 +8 Island|C19|1 +1 Izzet Boilerworks|C19|1 +1 Izzet Guildgate|C19|1 +1 Izzet Locket|C19|1 +1 Jace's Sanctum|C19|1 +1 Leadership Vacuum|C19|1 +1 Magmaquake|C19|1 +1 Mandate of Peace|C19|1 +1 Mass Diminish|C19|1 +4 Mountain|C19|1 +1 Myriad Landscape|C19|1 +1 Mystic Monastery|C19|1 +1 Mystic Retrieval|C19|1 +1 Oona's Grace|C19|1 +9 Plains|C19|1 +1 Prairie Stream|C19|1 +1 Pramikon, Sky Rampart|C19|1 +1 Prismatic Strands|C19|1 +1 Pristine Angel|C19|1 +1 Pristine Skywise|C19|1 +1 Purify the Grave|C19|1 +1 Ral Zarek|C19|1 +1 Ray of Distortion|C19|1 +1 Refuse // Cooperate|C19|1 +1 River Kelpie|C19|1 +1 Rolling Temblor|C19|1 +1 Runic Repetition|C19|1 +1 Scaretiller|C19|1 +1 Secrets of the Dead|C19|1 +1 Sevinne's Reclamation|C19|1 +1 Sol Ring|C19|1 +1 Stone Quarry|C19|1 +1 Storm Herd|C19|1 +1 Sun Titan|C19|1 +1 Swiftwater Cliffs|C19|1 +1 Talrand, Sky Summoner|C19|1 +1 Temple of the False God|C19|1 +1 Terramorphic Expanse|C19|1 +1 Thalia's Geistcaller|C19|1 +1 Think Twice|C19|1 +1 Tranquil Cove|C19|1 +1 Wall of Stolen Identity|C19|1 +1 Wind-Scarred Crag|C19|1 +1 Zetalpa, Primal Dawn|C19|1 +[Sideboard] + diff --git a/forge-gui/res/quest/commanderprecons/Nature of the Beast.dck b/forge-gui/res/quest/commanderprecons/Nature of the Beast [C13] [2013].dck similarity index 98% rename from forge-gui/res/quest/commanderprecons/Nature of the Beast.dck rename to forge-gui/res/quest/commanderprecons/Nature of the Beast [C13] [2013].dck index 9bb8c733881..a6ba115d625 100644 --- a/forge-gui/res/quest/commanderprecons/Nature of the Beast.dck +++ b/forge-gui/res/quest/commanderprecons/Nature of the Beast [C13] [2013].dck @@ -1,5 +1,5 @@ [metadata] -Name=Nature of the Beast +Name=Nature of the Beast [C13] [2013] [Commander] 1 Marath, Will of the Wild|C13 [Main] diff --git a/forge-gui/res/quest/commanderprecons/Nature's Vengeance [C18] [2018].dck b/forge-gui/res/quest/commanderprecons/Nature's Vengeance [C18] [2018].dck new file mode 100644 index 00000000000..24717c0a27a --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Nature's Vengeance [C18] [2018].dck @@ -0,0 +1,91 @@ +[metadata] +Name=Nature's Vengeance [C18] [2018] +[Commander] +1 Lord Windgrace|C18|1 +[Main] +1 Acidic Slime|C18|1 +1 Akoum Refuge|C18|1 +1 Avenger of Zendikar|C18|1 +1 Baloth Woodcrasher|C18|1 +1 Barren Moor|C18|1 +1 Blighted Woodland|C18|1 +1 Bloodtracker|C18|1 +1 Bojuka Bog|C18|1 +1 Borderland Explorer|C18|1 +1 Budoka Gardener|C18|1 +1 Centaur Vinecrasher|C18|1 +1 Chain Reaction|C18|1 +1 Charnelhoard Wurm|C18|1 +1 Command Tower|C18|1 +1 Consign to Dust|C18|1 +1 Crash of Rhino Beetles|C18|1 +1 Cultivate|C18|1 +1 Deathreap Ritual|C18|1 +1 Decimate|C18|1 +1 Emissary of Grudges|C18|1 +1 Evolving Wilds|C18|1 +1 Explore|C18|1 +1 Explosive Vegetation|C18|1 +1 Far Wanderings|C18|1 +1 Farhaven Elf|C18|1 +1 Flameblast Dragon|C18|1 +7 Forest|C18|1 +1 Forge of Heroes|C18|1 +1 Forgotten Cave|C18|1 +1 Fury Storm|C18|1 +1 Gaze of Granite|C18|1 +1 Golgari Rot Farm|C18|1 +1 Grapple with the Past|C18|1 +1 Grim Backwoods|C18|1 +1 Grisly Salvage|C18|1 +1 Gruul Turf|C18|1 +1 Gyrus, Waker of Corpses|C18|1 +1 Harrow|C18|1 +1 Haunted Fengraf|C18|1 +1 Hunting Wilds|C18|1 +1 Jund Panorama|C18|1 +1 Jungle Hollow|C18|1 +1 Kazandu Refuge|C18|1 +1 Khalni Garden|C18|1 +1 Khalni Heart Expedition|C18|1 +1 Lavalanche|C18|1 +1 Loyal Apprentice|C18|1 +1 Loyal Guardian|C18|1 +1 Loyal Subordinate|C18|1 +1 Moldgraf Monstrosity|C18|1 +1 Moonlight Bargain|C18|1 +5 Mountain|C18|1 +1 Mountain Valley|C18|1 +1 Myriad Landscape|C18|1 +1 Nesting Dragon|C18|1 +1 Putrefy|C18|1 +1 Rakdos Carnarium|C18|1 +1 Rampaging Baloths|C18|1 +1 Reality Scramble|C18|1 +1 Retreat to Hagra|C18|1 +1 Rocky Tar Pit|C18|1 +1 Rubblehulk|C18|1 +1 Ruinous Path|C18|1 +1 Sakura-Tribe Elder|C18|1 +1 Savage Lands|C18|1 +1 Savage Twister|C18|1 +1 Scute Mob|C18|1 +1 Seer's Sundial|C18|1 +1 Sol Ring|C18|1 +1 Soul of Innistrad|C18|1 +1 Stitch Together|C18|1 +6 Swamp|C18|1 +1 Temple of the False God|C18|1 +1 Terramorphic Expanse|C18|1 +1 Thantis, the Warweaver|C18|1 +1 Tranquil Thicket|C18|1 +1 Turntimber Sower|C18|1 +1 Warped Landscape|C18|1 +1 Whiptongue Hydra|C18|1 +1 Windgrace's Judgment|C18|1 +1 Worm Harvest|C18|1 +1 Xantcha, Sleeper Agent|C18|1 +1 Yavimaya Elder|C18|1 +1 Zendikar Incarnate|C18|1 +[Sideboard] + diff --git a/forge-gui/res/quest/commanderprecons/Open Hostility.dck b/forge-gui/res/quest/commanderprecons/Open Hostility [C16] [2016].dck similarity index 98% rename from forge-gui/res/quest/commanderprecons/Open Hostility.dck rename to forge-gui/res/quest/commanderprecons/Open Hostility [C16] [2016].dck index fbde79d0378..68fb248783b 100644 --- a/forge-gui/res/quest/commanderprecons/Open Hostility.dck +++ b/forge-gui/res/quest/commanderprecons/Open Hostility [C16] [2016].dck @@ -1,5 +1,5 @@ [metadata] -Name=Open Hostility +Name=Open Hostility [C16] [2016] [Commander] 1 Saskia the Unyielding+|C16 [Main] diff --git a/forge-gui/res/quest/commanderprecons/Peer Through Time.dck b/forge-gui/res/quest/commanderprecons/Peer Through Time [C14] [2014].dck similarity index 97% rename from forge-gui/res/quest/commanderprecons/Peer Through Time.dck rename to forge-gui/res/quest/commanderprecons/Peer Through Time [C14] [2014].dck index b183e2bb81b..a6343f15dab 100644 --- a/forge-gui/res/quest/commanderprecons/Peer Through Time.dck +++ b/forge-gui/res/quest/commanderprecons/Peer Through Time [C14] [2014].dck @@ -1,5 +1,5 @@ [metadata] -Name=Peer Through Time +Name=Peer Through Time [C14] [2014] [Commander] 1 Teferi, Temporal Archmage|C14 [Main] diff --git a/forge-gui/res/quest/commanderprecons/Phantom Premonition [KHC] [2021].dck b/forge-gui/res/quest/commanderprecons/Phantom Premonition [KHC] [2021].dck new file mode 100644 index 00000000000..e426ba77d17 --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Phantom Premonition [KHC] [2021].dck @@ -0,0 +1,81 @@ +[metadata] +Name=Phantom Premonition [KHC] [2021] +[commander] +1 Ranar the Ever-Watchful+|KHC +[main] +1 Angel of Finality|KHC +1 Angel of Serenity|KHC +1 Arcane Artisan|KHC +1 Arcane Signet|KHC +1 Azorius Chancery|KHC +1 Azorius Guildgate|KHC +1 Azorius Signet|KHC +1 Banishing Light|KHC +1 Behold the Multiverse|KHC +1 Brago, King Eternal|KHC +1 Burnished Hart|KHC +1 Cleansing Nova|KHC +1 Cloudblazer|KHC +1 Cloudgoat Ranger|KHC +1 Command Tower|KHC +1 Commander's Sphere|KHC +1 Cosmic Intervention|KHC +1 Cryptic Caves|KHC +1 Curse of the Swine|KHC +1 Day of the Dragons|KHC +1 Eerie Interlude|KHC +1 Empyrean Eagle|KHC +1 Ethereal Valkyrie|KHC +1 Evangel of Heliod|KHC +1 Flickerwisp|KHC +1 Gates of Istfell|KHC +1 Geist-Honored Monk|KHC +1 Ghostly Flicker|KHC +1 Ghostly Prison|KHC +1 Glacial Floodplain|KHC +1 Goldnight Commander|KHC +1 Hero of Bretagard|KHC +1 Inspired Sphinx|KHC +1 Iron Verdict|KHC +12 Island|KHC +1 Kor Cartographer|KHC +1 Marble Diamond|KHC +1 Marshal's Anthem|KHC +1 Meandering River|KHC +1 Meteor Golem|KHC +1 Migratory Route|KHC +1 Mind Stone|KHC +1 Mist Raven|KHC +1 Mistmeadow Witch|KHC +1 Momentary Blink|KHC +1 Mulldrifter|KHC +1 Myriad Landscape|KHC +1 Niko Defies Destiny|KHC +1 Opal Palace|KHC +13 Plains|KHC +1 Ravenform|KHC +1 Replicating Ring|KHC +1 Restoration Angel|KHC +1 Return to Dust|KHC +1 Sage of the Beyond|KHC +1 Saw It Coming|KHC +1 Sea Gate Oracle|KHC +1 Sejiri Refuge|KHC +1 Sky Diamond|KHC +1 Sol Ring|KHC +1 Soulherder|KHC +1 Spectral Deluge|KHC +1 Stoic Farmer|KHC +1 Storm Herd|KHC +1 Sun Titan|KHC +1 Surtland Elementalist|KHC +1 Swiftfoot Boots|KHC +1 Synthetic Destiny|KHC +1 Tales of the Ancestors|KHC +1 Thunderclap Wyvern|KHC +1 Tranquil Cove|KHC +1 Vega, the Watcher|KHC +1 Wall of Omens|KHC +1 Warhorn Blast|KHC +1 Whirler Rogue|KHC +1 Windfall|KHC diff --git a/forge-gui/res/quest/commanderprecons/Planar Portal [AFC] [2021].dck b/forge-gui/res/quest/commanderprecons/Planar Portal [AFC] [2021].dck new file mode 100644 index 00000000000..a2fd6ec565e --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Planar Portal [AFC] [2021].dck @@ -0,0 +1,79 @@ +[metadata] +Name=Planar Portal [AFC] [2021] +[commander] +1 Prosper, Tome-Bound+|AFC +[main] +1 Apex of Power|AFC +1 Arcane Signet|AFC +1 Bag of Devouring|AFC +1 Bedevil|AFC +1 Bituminous Blast|AFC +1 Bojuka Bog|AFC +1 Bucknard's Everfull Purse|AFC +1 Chaos Channeler|AFC +1 Chaos Wand|AFC +1 Chaos Warp|AFC +1 Chittering Witch|AFC +1 Command Tower|AFC +1 Commander's Sphere|AFC +1 Commune with Lava|AFC +1 Consuming Vapors|AFC +1 Danse Macabre|AFC +1 Dark-Dweller Oracle|AFC +1 Dead Man's Chest|AFC +1 Death Tyrant|AFC +1 Dire Fleet Daredevil|AFC +1 Disrupt Decorum|AFC +1 Dream Pillager|AFC +1 Ebony Fly|AFC +1 Etali, Primal Storm|AFC +1 Exotic Orchard|AFC +1 Fellwar Stone|AFC +1 Fevered Suspicion|AFC +1 Fiend of the Shadows|AFC +1 Fiendlash|AFC +1 Foreboding Ruins|AFC +1 Gonti, Lord of Luxury|AFC +1 Grim Hireling|AFC +1 Hellish Rebuke|AFC +1 Hex|AFC +1 Hurl Through Hell|AFC +1 Ignite the Future|AFC +1 Izzet Chemister|AFC +1 Karazikar, the Eye Tyrant|AFC +1 Light Up the Stage|AFC +1 Lorcan, Warlock Collector|AFC +1 Loyal Apprentice|AFC +1 Marionette Master|AFC +1 Mind Stone|AFC +1 Mortuary Mire|AFC +13 Mountain|AFC +1 Ogre Slumlord|AFC +1 Orazca Relic|AFC +1 Phthisis|AFC +1 Piper of the Swarm|AFC +1 Pontiff of Blight|AFC +1 Rakdos Carnarium|AFC +1 Rakdos Charm|AFC +1 Rakdos Signet|AFC +1 Reckless Endeavor|AFC +1 Shadowblood Ridge|AFC +1 Share the Spoils|AFC +1 Shiny Impetus|AFC +1 Smoldering Marsh|AFC +1 Sol Ring|AFC +1 Spinerock Knoll|AFC +14 Swamp|AFC +1 Tainted Peak|AFC +1 Talisman of Indulgence|AFC +1 Tectonic Giant|AFC +1 Terminate|AFC +1 Theater of Horrors|AFC +1 Throes of Chaos|AFC +1 Underdark Rift|AFC +1 Unstable Obelisk|AFC +1 Vandalblast|AFC +1 Warlock Class|AFC +1 Wild-Magic Sorcerer|AFC +1 You Find Some Prisoners|AFC +1 Zhalfirin Void|AFC diff --git a/forge-gui/res/quest/commanderprecons/Plunder the Graves.dck b/forge-gui/res/quest/commanderprecons/Plunder the Graves [C15] [2015].dck similarity index 97% rename from forge-gui/res/quest/commanderprecons/Plunder the Graves.dck rename to forge-gui/res/quest/commanderprecons/Plunder the Graves [C15] [2015].dck index 47e0af76f8f..358b4ea2c04 100644 --- a/forge-gui/res/quest/commanderprecons/Plunder the Graves.dck +++ b/forge-gui/res/quest/commanderprecons/Plunder the Graves [C15] [2015].dck @@ -1,5 +1,5 @@ [metadata] -Name=Plunder the Graves +Name=Plunder the Graves [C15] [2015] [Commander] 1 Meren of Clan Nel Toth+|C15 [Main] diff --git a/forge-gui/res/quest/commanderprecons/Plunder the Graves (2017).dck b/forge-gui/res/quest/commanderprecons/Plunder the Graves [CMA] [2017].dck similarity index 97% rename from forge-gui/res/quest/commanderprecons/Plunder the Graves (2017).dck rename to forge-gui/res/quest/commanderprecons/Plunder the Graves [CMA] [2017].dck index a3ec2824fc0..d81e98ffce3 100644 --- a/forge-gui/res/quest/commanderprecons/Plunder the Graves (2017).dck +++ b/forge-gui/res/quest/commanderprecons/Plunder the Graves [CMA] [2017].dck @@ -1,5 +1,5 @@ [metadata] -Name=Plunder the Graves (CMA) +Name=Plunder the Graves [CMA] [2017] [Commander] 1 Meren of Clan Nel Toth+|CMA [Main] diff --git a/forge-gui/res/quest/commanderprecons/Political Puppets.dck b/forge-gui/res/quest/commanderprecons/Political Puppets [COM] [2011].dck similarity index 97% rename from forge-gui/res/quest/commanderprecons/Political Puppets.dck rename to forge-gui/res/quest/commanderprecons/Political Puppets [COM] [2011].dck index a81eaf275a1..c9204b8cf00 100644 --- a/forge-gui/res/quest/commanderprecons/Political Puppets.dck +++ b/forge-gui/res/quest/commanderprecons/Political Puppets [COM] [2011].dck @@ -1,5 +1,5 @@ [metadata] -Name=Political Puppets +Name=Political Puppets [COM] [2011] [Commander] 1 Zedruu the Greathearted|COM [Main] diff --git a/forge-gui/res/quest/commanderprecons/Power Hungry.dck b/forge-gui/res/quest/commanderprecons/Power Hungry [C13] [2013].dck similarity index 98% rename from forge-gui/res/quest/commanderprecons/Power Hungry.dck rename to forge-gui/res/quest/commanderprecons/Power Hungry [C13] [2013].dck index 98a89e515b1..770de61ea73 100644 --- a/forge-gui/res/quest/commanderprecons/Power Hungry.dck +++ b/forge-gui/res/quest/commanderprecons/Power Hungry [C13] [2013].dck @@ -1,5 +1,5 @@ [metadata] -Name=Power Hungry +Name=Power Hungry [C13] [2013] [Commander] 1 Prossh, Skyraider of Kher|C13 [Main] diff --git a/forge-gui/res/quest/commanderprecons/Primal Genesis [C19] [2019] .dck b/forge-gui/res/quest/commanderprecons/Primal Genesis [C19] [2019] .dck new file mode 100644 index 00000000000..4e22dbf8b6c --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Primal Genesis [C19] [2019] .dck @@ -0,0 +1,90 @@ +[metadata] +Name=Primal Genesis [C19] [2019] +[Commander] +1 Ghired, Conclave Exile|C19|1 +[Main] +1 Angel of Sanctions|C19|1 +1 Ash Barrens|C19|1 +1 Atla Palani, Nest Tender|C19|1 +1 Beast Within|C19|1 +1 Blossoming Sands|C19|1 +1 Boros Garrison|C19|1 +1 Cinder Glade|C19|1 +1 Cliffside Rescuer|C19|1 +1 Colossal Majesty|C19|1 +1 Command Tower|C19|1 +1 Commander's Insignia|C19|1 +1 Cultivate|C19|1 +1 Desolation Twin|C19|1 +1 Doomed Artisan|C19|1 +1 Dragonmaster Outcast|C19|1 +1 Druid's Deliverance|C19|1 +1 Elemental Bond|C19|1 +1 Emmara Tandris|C19|1 +1 Evolving Wilds|C19|1 +1 Exotic Orchard|C19|1 +1 Explore|C19|1 +1 Farseek|C19|1 +1 Feldon of the Third Path|C19|1 +1 Flamerush Rider|C19|1 +8 Forest|C19|1 +1 Fresh Meat|C19|1 +1 Full Flowering|C19|1 +1 Gargoyle Castle|C19|1 +1 Garruk's Packleader|C19|1 +1 Garruk, Primal Hunter|C19|1 +1 Ghired's Belligerence|C19|1 +1 Giant Adephage|C19|1 +1 Graypelt Refuge|C19|1 +1 Growing Ranks|C19|1 +1 Gruul Turf|C19|1 +1 Harmonize|C19|1 +1 Hate Mirage|C19|1 +1 Heart-Piercer Manticore|C19|1 +1 Hour of Reckoning|C19|1 +1 Idol of Oblivion|C19|1 +1 Intangible Virtue|C19|1 +1 Jungle Shrine|C19|1 +1 Kazandu Refuge|C19|1 +1 Krosan Verge|C19|1 +1 Lightning Greaves|C19|1 +1 Marisi, Breaker of the Coil|C19|1 +1 Mimic Vat|C19|1 +1 Momentous Fall|C19|1 +4 Mountain|C19|1 +1 Myriad Landscape|C19|1 +1 Naya Charm|C19|1 +1 Naya Panorama|C19|1 +1 Ohran Frostfang|PLIST|1 +1 Phyrexian Rebirth|C19|1 +7 Plains|C19|1 +1 Rampaging Baloths|C19|1 +1 Roc Egg|C19|1 +1 Rogue's Passage|C19|1 +1 Rootborn Defenses|C19|1 +1 Rugged Highlands|C19|1 +1 Sakura-Tribe Elder|C19|1 +1 Scaretiller|C19|1 +1 Second Harvest|C19|1 +1 Selesnya Eulogist|C19|1 +1 Selesnya Sanctuary|C19|1 +1 Shamanic Revelation|C19|1 +1 Slice in Twain|C19|1 +1 Sol Ring|C19|1 +1 Song of the Worldsoul|C19|1 +1 Soul Foundry|C19|1 +1 Soul of Zendikar|C19|1 +1 Sundering Growth|C19|1 +1 Sungrass Prairie|C19|1 +1 Tahngarth, First Mate|C19|1 +1 Tectonic Hellion|C19|1 +1 Terramorphic Expanse|C19|1 +1 Thragtusk|C19|1 +1 Trostani's Judgment|C19|1 +1 Trostani, Selesnya's Voice|C19|1 +1 Vitu-Ghazi Guildmage|C19|1 +1 Voice of Many|C19|1 +1 Wayfaring Temple|C19|1 +1 Wingmate Roc|C19|1 +[Sideboard] + diff --git a/forge-gui/res/quest/commanderprecons/Prismari Performance [C21] [2021].dck b/forge-gui/res/quest/commanderprecons/Prismari Performance [C21] [2021].dck new file mode 100644 index 00000000000..18ffa1fb7ae --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Prismari Performance [C21] [2021].dck @@ -0,0 +1,88 @@ +[metadata] +Name=Prismari Performance [C21] [2021] + +[commander] +1 Zaffai, Thunder Conductor+|C21 +[main] +1 Aether Gale|C21 +1 Aetherspouts|C21 +1 Apex of Power|C21 +1 Arcane Signet|C21 +1 Blasphemous Act|C21 +1 Blighted Cataract|C21 +1 Brainstorm|C21 +1 Brass's Bounty|C21 +1 Call the Skybreaker|C21 +1 Charmbreaker Devils|C21 +1 Command Tower|C21 +1 Crackling Drake|C21 +1 Creative Technique|C21 +1 Dazzling Sphinx|C21 +1 Desert of the Fervent|C21 +1 Desert of the Mindful|C21 +1 Dig Through Time|C21 +1 Diluvian Primordial|C21 +1 Dualcaster Mage|C21 +1 Elemental Masterpiece|C21 +1 Elementalist's Palette|C21 +1 Epic Experiment|C21 +1 Erratic Cyclops|C21 +1 Etali, Primal Storm|C21 +1 Exotic Orchard|C21 +1 Expressive Iteration|C21 +1 Faithless Looting|C21 +1 Fiery Encore|C21 +1 Fiery Fall|C21 +1 Forgotten Cave|C21 +1 Hedron Archive|C21 +1 Humble Defector|C21 +1 Inferno Project|C21 +1 Inspiring Refrain|C21 +10 Island|C21 +1 Izzet Boilerworks|C21 +1 Izzet Signet|C21 +1 Jaya Ballard|C21 +1 Letter of Acceptance|C21 +1 Living Lore|C21 +1 Lonely Sandbar|C21 +1 Mage-Ring Network|C21 +1 Mana Geyser|C21 +1 Memorial to Genius|C21 +1 Metallurgic Summonings|C21 +1 Mind Stone|C21 +1 Mind's Desire|C21 +9 Mountain|C21 +1 Muse Vortex|C21 +1 Myriad Landscape|C21 +1 Naru Meha, Master Wizard|C21 +1 Octavia, Living Thesis|C21 +1 Ponder|C21 +1 Prismari Campus|C21 +1 Pyromancer's Goggles|C21 +1 Radiant Performer|C21 +1 Reinterpret|C21 +1 Reliquary Tower|C21 +1 Resculpt|C21 +1 Rionya, Fire Dancer|C21 +1 Rootha, Mercurial Artist|C21 +1 Rousing Refrain|C21 +1 Scavenger Grounds|C21 +1 Seething Song|C21 +1 Serum Visions|C21 +1 Shivan Reef|C21 +1 Sly Instigator|C21 +1 Sol Ring|C21 +1 Storm-Kiln Artist|C21 +1 Study Hall|C21 +1 Sunbird's Invocation|C21 +1 Surge to Victory|C21 +1 Swarm Intelligence|C21 +1 Talisman of Creativity|C21 +1 Talrand, Sky Summoner|C21 +1 Temple of Epiphany|C21 +1 Temple of the False God|C21 +1 Traumatic Visions|C21 +1 Treasure Cruise|C21 +1 Veyran, Voice of Duality|C21 +1 Volcanic Vision|C21 +1 Wildfire Devils|C21 diff --git a/forge-gui/res/quest/commanderprecons/Quantum Quandrix [C21] [2021].dck b/forge-gui/res/quest/commanderprecons/Quantum Quandrix [C21] [2021].dck new file mode 100644 index 00000000000..f947931e495 --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Quantum Quandrix [C21] [2021].dck @@ -0,0 +1,85 @@ +[metadata] +Name=Quantum Quandrix [C21] [2021] +[commander] +1 Adrix and Nev, Twincasters+|C21 +[main] +1 Lonely Sandbar|C21 +1 Mosswort Bridge|C21 +1 Arashi, the Sky Asunder|C21 +1 Arcane Signet|C21 +1 Beast Within|C21 +1 Biomass Mutation|C21 +1 Biomathematician|C21 +1 Blighted Woodland|C21 +1 Champion of Wits|C21 +1 Coiling Oracle|C21 +1 Command Tower|C21 +1 Commander's Insight|C21 +1 Crafty Cutpurse|C21 +1 Curiosity Crafter|C21 +1 Curse of the Swine|C21 +1 Deekah, Fractal Theorist|C21 +1 Desolation Twin|C21 +1 Esix, Fractal Bloom|C21 +1 Eureka Moment|C21 +1 Exotic Orchard|C21 +1 Ezuri's Predation|C21 +11 Forest|C21 +1 Forgotten Ancient|C21 +1 Fractal Harness|C21 +1 Garruk, Primal Hunter|C21 +1 Geometric Nexus|C21 +1 Golden Ratio|C21 +1 Guardian Augmenter|C21 +1 Hornet Nest|C21 +1 Hornet Queen|C21 +1 Hydra Broodmaster|C21 +1 Idol of Oblivion|C21 +1 Incubation // Incongruity|C21 +1 Incubation Druid|C21 +10 Island|C21 +1 Kaseto, Orochi Archmage|C21 +1 Kazandu Tuskcaller|C21 +1 Kodama's Reach|C21 +1 Krosan Grip|C21 +1 Llanowar Reborn|C21 +1 Lumbering Falls|C21 +1 Managorger Hydra|C21 +1 Master Biomancer|C21 +1 Myriad Landscape|C21 +1 Nissa's Expedition|C21 +1 Novijen, Heart of Progress|C21 +1 Opal Palace|C21 +1 Oran-Rief, the Vastwood|C21 +1 Oversimplify|C21 +1 Paradox Zone|C21 +1 Perplexing Test|C21 +1 Plaxcaster Frogling|C21 +1 Primal Empathy|C21 +1 Quandrix Campus|C21 +1 Quandrix Cultivator|C21 +1 Rampaging Baloths|C21 +1 Rampant Growth|C21 +1 Rapid Hybridization|C21 +1 Reef Worm|C21 +1 Replication Technique|C21 +1 Return of the Wildspeaker|C21 +1 Rite of Replication|C21 +1 Rogue's Passage|C21 +1 Ruxa, Patient Professor|C21 +1 Sequence Engine|C21 +1 Shamanic Revelation|C21 +1 Simic Growth Chamber|C21 +1 Simic Signet|C21 +1 Sol Ring|C21 +1 Spawning Kraken|C21 +1 Spitting Image|C21 +1 Study Hall|C21 +1 Temple of Mystery|C21 +1 Temple of the False God|C21 +1 Terastodon|C21 +1 Theoretical Duplication|C21 +1 Tranquil Thicket|C21 +1 Trygon Predator|C21 +1 Yavimaya Coast|C21 +1 Zimone, Quandrix Prodigy|C21 diff --git a/forge-gui/res/quest/commanderprecons/Reap the Tides [CMR] [2020].dck b/forge-gui/res/quest/commanderprecons/Reap the Tides [CMR] [2020].dck new file mode 100644 index 00000000000..e3bd8cbbb55 --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Reap the Tides [CMR] [2020].dck @@ -0,0 +1,76 @@ +[metadata] +Name=Reap the Tides [CMR] [2020] +[commander] +1 Aesi, Tyrant of Gyre Strait+|CMR +[main] +1 Acidic Slime|CMR +1 Arcane Denial|CMR +1 Avenger of Zendikar|CMR +1 Beast Within|CMR +1 Blighted Woodland|CMR +1 Coiling Oracle|CMR +1 Command Tower|CMR +1 Compulsive Research|CMR +1 Coral Atoll|CMR +1 Counterspell|CMR +1 Cultivate|CMR +1 Elder Deep-Fiend|CMR +1 Eternal Witness|CMR +1 Evolving Wilds|CMR +1 Explore|CMR +1 Fact or Fiction|CMR +1 Fathom Mage|CMR +15 Forest|CMR +1 Growth Spiral|CMR +1 Harmonize|CMR +1 Into the Roil|CMR +1 Ior Ruin Expedition|CMR +15 Island|CMR +1 Jungle Basin|CMR +1 Khalni Heart Expedition|CMR +1 Kodama's Reach|CMR +1 Meloku the Clouded Mirror|CMR +1 Memorial to Genius|CMR +1 Meteor Golem|CMR +1 Molimo, Maro-Sorcerer|CMR +1 Mulldrifter|CMR +1 Murkfiend Liege|CMR +1 Nezahal, Primal Tide|CMR +1 Peel from Reality|CMR +1 Rampaging Baloths|CMR +1 Rampant Growth|CMR +1 Ramunap Excavator|CMR +1 Reclamation Sage|CMR +1 Reliquary Tower|CMR +1 Retreat to Kazandu|CMR +1 Scourge of Fleets|CMR +1 Search for Tomorrow|CMR +1 Seer's Sundial|CMR +1 Sharktocrab|CMR +1 Shipbreaker Kraken|CMR +1 Simic Charm|CMR +1 Simic Growth Chamber|CMR +1 Simic Guildgate|CMR +1 Simic Signet|CMR +1 Simic Sky Swallower|CMR +1 Slinn Voda, the Rising Deep|CMR +1 Sol Ring|CMR +1 Sphinx of Uthuun|CMR +1 Spitting Image|CMR +1 Sporemound|CMR +1 Stormtide Leviathan|CMR +1 Stumpsquall Hydra|CMR +1 Swiftfoot Boots|CMR +1 Terastodon|CMR +1 Terramorphic Expanse|CMR +1 Thornwood Falls|CMR +1 Trench Behemoth|CMR +1 Tromokratis|CMR +1 Urban Evolution|CMR +1 Verdant Sun's Avatar|CMR +1 Vivid Creek|CMR +1 Vivid Grove|CMR +1 Whelming Wave|CMR +1 Wickerbough Elder|CMR +1 Woodland Stream|CMR +1 Yavimaya Elder|CMR diff --git a/forge-gui/res/quest/commanderprecons/Riveteer Rampage [NCC] [2022].dck b/forge-gui/res/quest/commanderprecons/Riveteer Rampage [NCC] [2022].dck index 919cd277bd9..8dcfb0c8130 100644 --- a/forge-gui/res/quest/commanderprecons/Riveteer Rampage [NCC] [2022].dck +++ b/forge-gui/res/quest/commanderprecons/Riveteer Rampage [NCC] [2022].dck @@ -16,6 +16,7 @@ Name=Riveteer Rampage [NCC] [2022] 1 Command Tower|NCC|1 1 Commander's Sphere|NCC|1 1 Deathbringer Regent|NCC|1 +1 Aether Snap|NCC|1 1 Deathreap Ritual|NCC|1 1 Disciple of Bolas|NCC|1 1 Dodgy Jalopy|NCC|1 diff --git a/forge-gui/res/quest/commanderprecons/Ruthless Regiment [C20] [2020].dck b/forge-gui/res/quest/commanderprecons/Ruthless Regiment [C20] [2020].dck new file mode 100644 index 00000000000..19ebd3b53c6 --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Ruthless Regiment [C20] [2020].dck @@ -0,0 +1,91 @@ +[metadata] +Name=Ruthless Regiment [C20] [2020] +[commander] +1 Jirina Kudro+|C20 +[main] +1 Ambition's Cost|C20 +1 Battlefield Forge|C20 +1 Bojuka Bog|C20 +1 Boros Garrison|C20 +1 Boros Signet|C20 +1 Dearly Departed|C20 +1 Devout Chaplain|C20 +1 Disciple of Bolas|C20 +1 Evolving Wilds|C20 +1 Exotic Orchard|C20 +1 Fumiko the Lowblood|C20 +1 Increasing Devotion|C20 +1 Knight of the White Orchid|C20 +1 Magus of the Disk|C20 +4 Mountain|C20 +1 Orzhov Basilica|C20 +1 Orzhov Signet|C20 +8 Plains|C20 +1 Rakdos Carnarium|C20 +1 Rakdos Signet|C20 +1 Riders of Gavony|C20 +1 Shadowblood Ridge|C20 +1 Skullclamp|C20 +1 Sol Ring|C20 +1 Spinerock Knoll|C20 +4 Swamp|C20 +1 Temple of the False God|C20 +1 Terminate|C20 +1 Thraben Doomsayer|C20 +1 Vigilante Justice|C20 +1 Windbrisk Heights|C20 +1 Frontline Medic|C20 +1 Shared Animosity|C20 +1 Odric, Master Tactician|C20 +1 Banisher Priest|C20 +1 Xathrid Necromancer|C20 +1 Cavalry Pegasus|C20 +1 Titan of Eternal Fire|C20 +1 Command Tower|C20 +1 Unexpectedly Absent|C20 +1 Bloodfell Caves|C20 +1 Crackling Doom|C20 +1 Nomad Outpost|C20 +1 Scoured Barrens|C20 +1 Wind-Scarred Crag|C20 +1 Commander's Sphere|C20 +1 Myriad Landscape|C20 +1 Alesha, Who Smiles at Death|C20 +1 Humble Defector|C20 +1 Outpost Siege|C20 +1 Painful Truths|C20 +1 Smoldering Marsh|C20 +1 Zulaport Cutthroat|C20 +1 Magus of the Wheel|C20 +1 Nahiri, the Harbinger|C20 +1 Thalia's Lieutenant|C20 +1 Adriana, Captain of the Guard|C20 +1 Path of Ancestry|C20 +1 Heirloom Blade|C20 +1 Captivating Crew|C20 +1 Unclaimed Territory|C20 +1 Garna, the Bloodflame|C20 +1 Cleansing Nova|C20 +1 Citywide Bust|C20 +1 Bounty Agent|C20 +1 Arcane Signet|C20 +1 Verge Rangers|C20 +1 Kelsien, the Plague|C20 +1 Titan Hunter|C20 +1 Trynn, Champion of Freedom|C20 +1 Call the Coppercoats|C20 +1 General's Enforcer|C20 +1 Dire Tactics|C20 +1 Parasitic Impetus|C20 +1 Shiny Impetus|C20 +1 Silvar, Devourer of the Free|C20 +1 Species Specialist|C20 +1 Sanctuary Lockdown|C20 +1 Bonder's Ornament|C20 +1 Bastion of Remembrance|C20 +1 Fireflux Squad|C20 +1 Flawless Maneuver|C20 +1 Frontier Warmonger|C20 +1 Martial Impetus|C20 +1 Molten Echoes|C20 +1 Sanctuary Blade|C20 diff --git a/forge-gui/res/quest/commanderprecons/Seize Control.dck b/forge-gui/res/quest/commanderprecons/Seize Control [C15] [2015].dck similarity index 98% rename from forge-gui/res/quest/commanderprecons/Seize Control.dck rename to forge-gui/res/quest/commanderprecons/Seize Control [C15] [2015].dck index 882891a5553..5ff8aa9960a 100644 --- a/forge-gui/res/quest/commanderprecons/Seize Control.dck +++ b/forge-gui/res/quest/commanderprecons/Seize Control [C15] [2015].dck @@ -1,5 +1,5 @@ [metadata] -Name=Seize Control +Name=Seize Control [C15] [2015] [Commander] 1 Mizzix of the Izmagnus+|C15 [Main] diff --git a/forge-gui/res/quest/commanderprecons/Silverquill Statement [C21] [2021].dck b/forge-gui/res/quest/commanderprecons/Silverquill Statement [C21] [2021].dck new file mode 100644 index 00000000000..0a8cd228bde --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Silverquill Statement [C21] [2021].dck @@ -0,0 +1,82 @@ +[metadata] +Name=Silverquill Statement [C21] [2021] +[commander] +1 Breena, the Demagogue+|C21 +[main] +1 Ambition's Cost|C21 +1 Angel of Serenity|C21 +1 Arcane Signet|C21 +1 Author of Shadows|C21 +1 Barren Moor|C21 +1 Bloodthirsty Blade|C21 +1 Bojuka Bog|C21 +1 Bold Plagiarist|C21 +1 Boreas Charger|C21 +1 Caves of Koilos|C21 +1 Citadel Siege|C21 +1 Combat Calligrapher|C21 +1 Command Tower|C21 +1 Coveted Jewel|C21 +1 Cunning Rhetoric|C21 +1 Curse of Disturbance|C21 +1 Deathbringer Liege|C21 +1 Deathbringer Regent|C21 +1 Debtors' Knell|C21 +1 Duelist's Heritage|C21 +1 Elite Scaleguard|C21 +1 Exotic Orchard|C21 +1 Fain, the Broker|C21 +1 Felisa, Fang of Silverquill|C21 +1 Fracture|C21 +1 Ghostly Prison|C21 +1 Gideon, Champion of Justice|C21 +1 Guardian Archon|C21 +1 Hunted Lammasu|C21 +1 Incarnation Technique|C21 +1 Infernal Offering|C21 +1 Inkshield|C21 +1 Keen Duelist|C21 +1 Knight of the White Orchid|C21 +1 Magister of Worth|C21 +1 Martial Impetus|C21 +1 Mikokoro, Center of the Sea|C21 +1 Mind Stone|C21 +1 Myriad Landscape|C21 +1 Necropolis Regent|C21 +1 Nils, Discipline Enforcer|C21 +1 Oblation|C21 +1 Opal Palace|C21 +1 Oreskos Explorer|C21 +1 Orzhov Advokist|C21 +1 Orzhov Basilica|C21 +1 Orzhov Signet|C21 +1 Parasitic Impetus|C21 +1 Pendant of Prosperity|C21 +14 Plains|C21 +1 Promise of Loyalty|C21 +1 Rogue's Passage|C21 +1 Scholarship Sponsor|C21 +1 Secluded Steppe|C21 +1 Secret Rendezvous|C21 +1 Selfless Squire|C21 +1 Silverquill Campus|C21 +1 Sol Ring|C21 +1 Soul Snare|C21 +1 Spectral Searchlight|C21 +1 Stalking Leonin|C21 +1 Stinging Study|C21 +1 Study Hall|C21 +1 Sunscorch Regent|C21 +10 Swamp|C21 +1 Tainted Field|C21 +1 Temple of Silence|C21 +1 Temple of the False God|C21 +1 Tempting Contract|C21 +1 Teysa, Envoy of Ghosts|C21 +1 Together Forever|C21 +1 Tragic Arrogance|C21 +1 Utter End|C21 +1 Victory Chimes|C21 +1 Vow of Duty|C21 +1 Windborn Muse|C21 +1 Zetalpa, Primal Dawn|C21 diff --git a/forge-gui/res/quest/commanderprecons/Sneak Attack [ZNC] [2020].dck b/forge-gui/res/quest/commanderprecons/Sneak Attack [ZNC] [2020].dck new file mode 100644 index 00000000000..aea6ef3929b --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Sneak Attack [ZNC] [2020].dck @@ -0,0 +1,76 @@ +[metadata] +Name=Sneak Attack [ZNC] [2020] +[commander] +1 Anowon, the Ruin Thief+|ZNC +[main] +1 Aetherize|ZNC +1 Arcane Signet|ZNC +1 Blackblade Reforged|ZNC +1 Bonehoard|ZNC +1 Changeling Outcast|ZNC +1 Command Tower|ZNC +1 Commander's Sphere|ZNC +1 Consuming Aberration|ZNC +1 Dimir Aqueduct|ZNC +1 Dimir Guildgate|ZNC +1 Dimir Keyrune|ZNC +1 Dimir Locket|ZNC +1 Dimir Signet|ZNC +1 Dismal Backwater|ZNC +1 Distant Melody|ZNC +1 Endless Obedience|ZNC +1 Enigma Thief|ZNC +1 Extract from Darkness|ZNC +1 Fact or Fiction|ZNC +1 Faerie Vandal|ZNC +1 Fated Return|ZNC +1 Frogtosser Banneret|ZNC +1 Gonti, Lord of Luxury|ZNC +1 Heirloom Blade|ZNC +1 In Garruk's Wake|ZNC +1 Invisible Stalker|ZNC +15 Island|ZNC +1 Jwar Isle Refuge|ZNC +1 Latchkey Faerie|ZNC +1 Lazav, Dimir Mastermind|ZNC +1 Marang River Prowler|ZNC +1 Marsh Flitter|ZNC +1 Master Thief|ZNC +1 Merfolk Windrobber|ZNC +1 Military Intelligence|ZNC +1 Mind Stone|ZNC +1 Murder|ZNC +1 Myriad Landscape|ZNC +1 Necromantic Selection|ZNC +1 Nighthowler|ZNC +1 Nightveil Sprite|ZNC +1 Notion Thief|ZNC +1 Notorious Throng|ZNC +1 Obelisk of Urd|ZNC +1 Ogre Slumlord|ZNC +1 Oona's Blackguard|ZNC +1 Oona, Queen of the Fae|ZNC +1 Open into Wonder|ZNC +1 Price of Fame|ZNC +1 Rise from the Grave|ZNC +1 Rogue's Passage|ZNC +1 Scourge of Fleets|ZNC +1 Scytheclaw|ZNC +1 Sepulchral Primordial|ZNC +1 Silumgar's Command|ZNC +1 Slither Blade|ZNC +1 Soaring Thought-Thief|ZNC +1 Sol Ring|ZNC +1 Soul Manipulation|ZNC +1 Spinal Embrace|ZNC +1 Stinkdrinker Bandit|ZNC +1 Stolen Identity|ZNC +1 Submerged Boneyard|ZNC +1 Sure-Footed Infiltrator|ZNC +15 Swamp|ZNC +1 Sygg, River Cutthroat|ZNC +1 Syr Konrad, the Grim|ZNC +1 Triton Shorestalker|ZNC +1 Whirler Rogue|ZNC +1 Whispersteel Dagger|ZNC +1 Zulaport Cutthroat|ZNC diff --git a/forge-gui/res/quest/commanderprecons/Spirit Squadron [VOC] [2021].dck b/forge-gui/res/quest/commanderprecons/Spirit Squadron [VOC] [2021].dck new file mode 100644 index 00000000000..328421b05e9 --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Spirit Squadron [VOC] [2021].dck @@ -0,0 +1,83 @@ +[metadata] +Name=Spirit Squadron [VOC] [2021] +[commander] +1 Millicent, Restless Revenant+|VOC +[main] +1 Angel of Flight Alabaster|VOC +1 Arcane Denial|VOC +1 Arcane Signet|VOC +1 Azorius Chancery|VOC +1 Azorius Locket|VOC +1 Azorius Signet|VOC +1 Benevolent Offering|VOC +1 Boreas Charger|VOC +1 Breath of the Sleepless|VOC +1 Bygone Bishop|VOC +1 Command Tower|VOC +1 Commander's Sphere|VOC +1 Crush Contraband|VOC +1 Custodi Soulbinders|VOC +1 Custodi Squire|VOC +1 Darksteel Mutation|VOC +1 Disorder in the Court|VOC +1 Distant Melody|VOC +1 Donal, Herald of Wings|VOC +1 Dovin, Grand Arbiter|VOC +1 Drogskol Captain|VOC +1 Drogskol Reinforcements|VOC +1 Ethereal Investigator|VOC +1 Exotic Orchard|VOC +1 Fell the Mighty|VOC +1 Field of Souls|VOC +1 Flood of Tears|VOC +1 Geist of Saint Traft|VOC +1 Ghostly Pilferer|VOC +1 Ghostly Prison|VOC +1 Hallowed Spiritkeeper|VOC +1 Hanged Executioner|VOC +1 Haunted Library|VOC +1 Haunting Imitation|VOC +1 Imprisoned in the Moon|VOC +11 Island|VOC +1 Kami of the Crescent Moon|VOC +1 Karmic Guide|VOC +1 Kirtar's Wrath|VOC +1 Knight of the White Orchid|VOC +1 Marble Diamond|VOC +1 Mentor of the Meek|VOC +1 Midnight Clock|VOC +1 Mirror Entity|VOC +1 Moorland Haunt|VOC +1 Myriad Landscape|VOC +1 Nebelgast Herald|VOC +1 Occult Epiphany|VOC +1 Oyobi, Who Split the Heavens|VOC +1 Path of Ancestry|VOC +12 Plains|VOC +1 Port Town|VOC +1 Prairie Stream|VOC +1 Priest of the Blessed Graf|VOC +1 Promise of Bunrei|VOC +1 Rattlechains|VOC +1 Reconnaissance Mission|VOC +1 Remorseful Cleric|VOC +1 Rhoda, Geist Avenger|VOC +1 Shacklegeist|VOC +1 Sire of the Storm|VOC +1 Sky Diamond|VOC +1 Skycloud Expanse|VOC +1 Sol Ring|VOC +1 Spectral Arcanist|VOC +1 Spectral Sailor|VOC +1 Spectral Shepherd|VOC +1 Storm of Souls|VOC +1 Sudden Salvation|VOC +1 Supreme Phantom|VOC +1 Swords to Plowshares|VOC +1 Temple of Enlightenment|VOC +1 Temple of the False God|VOC +1 Timin, Youthful Geist|VOC +1 Twilight Drover|VOC +1 Unclaimed Territory|VOC +1 Verity Circle|VOC +1 Windborn Muse|VOC diff --git a/forge-gui/res/quest/commanderprecons/Stalward Unity.dck b/forge-gui/res/quest/commanderprecons/Stalward Unity [C16] [2016].dck similarity index 98% rename from forge-gui/res/quest/commanderprecons/Stalward Unity.dck rename to forge-gui/res/quest/commanderprecons/Stalward Unity [C16] [2016].dck index 81a04f8d991..0a51226e2ef 100644 --- a/forge-gui/res/quest/commanderprecons/Stalward Unity.dck +++ b/forge-gui/res/quest/commanderprecons/Stalward Unity [C16] [2016].dck @@ -1,5 +1,5 @@ [metadata] -Name=Stalwart Unity +Name=Stalwart Unity [C16] [2016] [Commander] 1 Kynaios and Tiro of Meletis+|C16 [Main] diff --git a/forge-gui/res/quest/commanderprecons/Subjective Reality [C18] [2018].dck b/forge-gui/res/quest/commanderprecons/Subjective Reality [C18] [2018].dck new file mode 100644 index 00000000000..149fc7e7c3d --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Subjective Reality [C18] [2018].dck @@ -0,0 +1,92 @@ +[metadata] +Name=Subjective Reality [C18] [2018] +[Commander] +1 Yuriko, the Tiger's Shadow|C18|1 +[Main] +1 Adarkar Valkyrie|C18|1 +1 Aethermage's Touch|C18|1 +1 Akroma's Vengeance|C18|1 +1 Aminatou's Augury|C18|1 +1 Aminatou, the Fateshifter|C18|1 +1 Arcane Sanctum|C18|1 +1 Army of the Damned|C18|1 +1 Azorius Chancery|C18|1 +1 Azorius Guildgate|C18|1 +1 Azorius Signet|C18|1 +1 Banishing Stroke|C18|1 +1 Barren Moor|C18|1 +1 Boreas Charger|C18|1 +1 Brainstorm|C18|1 +1 Cloudform|C18|1 +1 Command Tower|C18|1 +1 Commander's Sphere|C18|1 +1 Conundrum Sphinx|C18|1 +1 Crib Swap|C18|1 +1 Crystal Ball|C18|1 +1 Devastation Tide|C18|1 +1 Dimir Aqueduct|C18|1 +1 Dimir Guildgate|C18|1 +1 Dimir Signet|C18|1 +1 Dismal Backwater|C18|1 +1 Djinn of Wishes|C18|1 +1 Dream Cache|C18|1 +1 Duskmantle Seer|C18|1 +1 Enigma Sphinx|C18|1 +1 Entreat the Angels|C18|1 +1 Entreat the Dead|C18|1 +1 Esper Charm|C18|1 +1 Forge of Heroes|C18|1 +1 Forsaken Sanctuary|C18|1 +1 Geode Golem|C18|1 +1 Halimar Depths|C18|1 +1 High Priest of Penance|C18|1 +5 Island|C18|1 +1 Isolated Watchtower|C18|1 +1 Jeskai Infiltrator|C18|1 +1 Jwar Isle Refuge|C18|1 +1 Lightform|C18|1 +1 Lonely Sandbar|C18|1 +1 Loyal Subordinate|C18|1 +1 Loyal Unicorn|C18|1 +1 Magus of the Balance|C18|1 +1 Meandering River|C18|1 +1 Mind Stone|C18|1 +1 Mortify|C18|1 +1 Mortuary Mire|C18|1 +1 Mulldrifter|C18|1 +1 New Benalia|C18|1 +1 Night Incarnate|C18|1 +1 Ninja of the Deep Hours|C18|1 +1 Orzhov Basilica|C18|1 +1 Orzhov Guildgate|C18|1 +1 Orzhov Signet|C18|1 +1 Phyrexian Delver|C18|1 +1 Pilgrim's Eye|C18|1 +8 Plains|C18|1 +1 Ponder|C18|1 +1 Portent|C18|1 +1 Predict|C18|1 +1 Primordial Mist|C18|1 +1 Return to Dust|C18|1 +1 Scoured Barrens|C18|1 +1 Secluded Steppe|C18|1 +1 Seer's Lantern|C18|1 +1 Sejiri Refuge|C18|1 +1 Serra Avatar|C18|1 +1 Sigiled Starfish|C18|1 +1 Silent-Blade Oni|C18|1 +1 Skull Storm|C18|1 +1 Sol Ring|C18|1 +1 Sower of Discord|C18|1 +1 Sphinx of Jwar Isle|C18|1 +1 Sphinx of Uthuun|C18|1 +1 Submerged Boneyard|C18|1 +3 Swamp|C18|1 +1 Telling Time|C18|1 +1 Terminus|C18|1 +1 Tranquil Cove|C18|1 +1 Treasure Hunt|C18|1 +1 Utter End|C18|1 +1 Varina, Lich Queen|C18|1 +1 Yennett, Cryptic Sovereign|C18|1 +[Sideboard] diff --git a/forge-gui/res/quest/commanderprecons/Swell the Host.dck b/forge-gui/res/quest/commanderprecons/Swell the Host [C15] [2015].dck similarity index 98% rename from forge-gui/res/quest/commanderprecons/Swell the Host.dck rename to forge-gui/res/quest/commanderprecons/Swell the Host [C15] [2015].dck index f51b12c9904..e29b222977b 100644 --- a/forge-gui/res/quest/commanderprecons/Swell the Host.dck +++ b/forge-gui/res/quest/commanderprecons/Swell the Host [C15] [2015].dck @@ -1,5 +1,5 @@ [metadata] -Name=Swell the Host +Name=Swell the Host [C15] [2015] [Commander] 1 Ezuri, Claw of Progress+|C15 [Main] diff --git a/forge-gui/res/quest/commanderprecons/Sworn to Darkness.dck b/forge-gui/res/quest/commanderprecons/Sworn to Darkness [C14] [2014].dck similarity index 97% rename from forge-gui/res/quest/commanderprecons/Sworn to Darkness.dck rename to forge-gui/res/quest/commanderprecons/Sworn to Darkness [C14] [2014].dck index b88fc93ee80..8cef088c332 100644 --- a/forge-gui/res/quest/commanderprecons/Sworn to Darkness.dck +++ b/forge-gui/res/quest/commanderprecons/Sworn to Darkness [C14] [2014].dck @@ -1,5 +1,5 @@ [metadata] -Name=Sworn to Darkness +Name=Sworn to Darkness [C14] [2014] [Commander] 1 Ob Nixilis of the Black Oath|C14 [Main] diff --git a/forge-gui/res/quest/commanderprecons/Symbiotic Swarm [C20] [2020].dck b/forge-gui/res/quest/commanderprecons/Symbiotic Swarm [C20] [2020].dck new file mode 100644 index 00000000000..d2ac01fc0c0 --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Symbiotic Swarm [C20] [2020].dck @@ -0,0 +1,89 @@ +[metadata] +Name=Symbiotic Swarm [C20] [2020] +[commander] +1 Kathril, Aspect Warper+|C20 +[main] +1 Abzan Ascendancy|C20 +1 Abzan Charm|C20 +1 Acidic Slime|C20 +1 Aerial Responder|C20 +1 Ajani Unyielding|C20 +1 Akroma, Angel of Wrath|C20 +1 Angel of Finality|C20 +1 Arcane Signet|C20 +1 Archon of Valor's Reach|C20 +1 Avenging Huntbonder|C20 +1 Blighted Woodland|C20 +1 Blood Curdle|C20 +1 Blossoming Sands|C20 +1 Bonder's Ornament|C20 +1 Cairn Wanderer|C20 +1 Canopy Vista|C20 +1 Cartographer's Hawk|C20 +1 Cataclysmic Gearhulk|C20 +1 Caves of Koilos|C20 +1 Command Tower|C20 +1 Commander's Sphere|C20 +1 Cultivate|C20 +1 Daring Fiendbonder|C20 +1 Deadbridge Chant|C20 +1 Deathsprout|C20 +1 Despark|C20 +1 Duneblast|C20 +1 Ever After|C20 +1 Evolving Wilds|C20 +1 Exotic Orchard|C20 +4 Forest|C20 +1 Gavony Township|C20 +1 Golgari Rot Farm|C20 +1 Grim Backwoods|C20 +1 Grisly Salvage|C20 +1 Harmonize|C20 +1 Hornet Queen|C20 +1 Jungle Hollow|C20 +1 Kalemne's Captain|C20 +1 Karametra, God of Harvests|C20 +1 Krosan Verge|C20 +1 Majestic Myriarch|C20 +1 Martial Impetus|C20 +1 Memorial to Folly|C20 +1 Mimic Vat|C20 +1 Myriad Landscape|C20 +1 Nesting Grounds|C20 +1 Netherborn Altar|C20 +1 Nikara, Lair Scavenger|C20 +1 Nyx Weaver|C20 +1 Obscuring Haze|C20 +1 Odric, Lunarch Marshal|C20 +1 Orzhov Basilica|C20 +1 Parasitic Impetus|C20 +7 Plains|C20 +1 Predatory Impetus|C20 +1 Reveillark|C20 +1 Sakura-Tribe Elder|C20 +1 Sandsteppe Citadel|C20 +1 Satyr Wayfinder|C20 +1 Scoured Barrens|C20 +1 Selective Adaptation|C20 +1 Selesnya Sanctuary|C20 +1 Skullwinder|C20 +1 Slippery Bogbonder|C20 +1 Sol Ring|C20 +1 Solemn Recruit|C20 +1 Soul of Innistrad|C20 +1 Soulflayer|C20 +1 Splinterfright|C20 +1 Sunblast Angel|C20 +1 Sungrass Prairie|C20 +7 Swamp|C20 +1 Swiftfoot Boots|C20 +1 Tayam, Luminous Enigma|C20 +1 Titanoth Rex|C20 +1 Together Forever|C20 +1 Unbreakable Bond|C20 +1 Unburial Rites|C20 +1 Vampire Nighthawk|C20 +1 Vitality Hunter|C20 +1 Void Beckoner|C20 +1 Yannik, Scavenging Sentinel|C20 +1 Zetalpa, Primal Dawn|C20 diff --git a/forge-gui/res/quest/commanderprecons/Timeless Wisdom [C20] [2020].dck b/forge-gui/res/quest/commanderprecons/Timeless Wisdom [C20] [2020].dck new file mode 100644 index 00000000000..47a77993553 --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Timeless Wisdom [C20] [2020].dck @@ -0,0 +1,92 @@ +[metadata] +Name=Timeless Wisdom [C20] [2020] +[commander] +1 Gavi, Nest Warden+|C20 +[main] +1 Akroma's Vengeance|C20 +1 Azorius Chancery|C20 +1 Azorius Signet|C20 +1 Boros Garrison|C20 +1 Boros Signet|C20 +1 Decree of Justice|C20 +1 Drifting Meadow|C20 +1 Eternal Dragon|C20 +1 Exotic Orchard|C20 +1 Fluctuator|C20 +1 Forgotten Cave|C20 +1 Hoofprints of the Stag|C20 +5 Island|C20 +1 Isperia, Supreme Judge|C20 +1 Izzet Boilerworks|C20 +1 Izzet Signet|C20 +1 Lightning Rift|C20 +1 Lonely Sandbar|C20 +1 Mercurial Chemister|C20 +6 Mountain|C20 +1 Niv-Mizzet, the Firemind|C20 +4 Plains|C20 +1 Psychosis Crawler|C20 +1 Reliquary Tower|C20 +1 Remote Isle|C20 +1 Secluded Steppe|C20 +1 Shivan Reef|C20 +1 Skycloud Expanse|C20 +1 Slice and Dice|C20 +1 Smoldering Crater|C20 +1 Sol Ring|C20 +1 Spirit Cairn|C20 +1 Sun Titan|C20 +1 Temple of the False God|C20 +1 Windfall|C20 +1 Command Tower|C20 +1 Mystic Monastery|C20 +1 Commander's Sphere|C20 +1 Myriad Landscape|C20 +1 Prairie Stream|C20 +1 Chandra, Flamecaller|C20 +1 Descend upon the Sinful|C20 +1 Ash Barrens|C20 +1 Migratory Route|C20 +1 Cast Out|C20 +1 Curator of Mysteries|C20 +1 Drake Haven|C20 +1 Hieroglyphic Illumination|C20 +1 Irrigated Farmland|C20 +1 Vizier of Tumbling Sands|C20 +1 New Perspectives|C20 +1 Abandoned Sarcophagus|C20 +1 Desert of the Fervent|C20 +1 Desert of the Mindful|C20 +1 Desert of the True|C20 +1 Hostile Desert|C20 +1 Nimble Obstructionist|C20 +1 The Locust God|C20 +1 Portal Mage|C20 +1 Astral Drift|C20 +1 Tectonic Reformation|C20 +1 Arcane Signet|C20 +1 Valiant Rescuer|C20 +1 Zenith Flare|C20 +1 Cryptic Trilobite|C20 +1 Crystalline Resonance|C20 +1 Dismantling Wave|C20 +1 Agitator Ant|C20 +1 Psychic Impetus|C20 +1 Rooting Moloch|C20 +1 Raugrin Crystal|C20 +1 Reconnaissance Mission|C20 +1 Herald of the Forgotten|C20 +1 Neutralize|C20 +1 Spellpyre Phoenix|C20 +1 Surly Badgersaur|C20 +1 Shiny Impetus|C20 +1 Shabraz, the Skyshark|C20 +1 Savai Thundermane|C20 +1 Boon of the Wish-Giver|C20 +1 Bonder's Ornament|C20 +1 Brallin, Skyshark Rider|C20 +1 Ethereal Forager|C20 +1 Ominous Seas|C20 +1 Fierce Guardianship|C20 +1 Martial Impetus|C20 +1 Akim, the Soaring Wind|C20 diff --git a/forge-gui/res/quest/commanderprecons/Tinker Time [MOC] [2023].dck b/forge-gui/res/quest/commanderprecons/Tinker Time [MOC] [2023].dck new file mode 100644 index 00000000000..f0e18010d9e --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Tinker Time [MOC] [2023].dck @@ -0,0 +1,86 @@ +[metadata] +Name=Tinker Time [MOC] [2023] +[Commander] +1 Gimbal, Gremlin Prodigy|MOC|1 +[Main] +1 Academy Manufactor|MOC|1 +1 Aid from the Cowl|MOC|1 +1 Arcane Signet|MOC|1 +1 Bloodforged Battle-Axe|MOC|1 +1 Brass's Bounty|MOC|1 +1 Chaos Warp|MOC|1 +1 Cinder Glade|MOC|1 +1 Combine Chrysalis|MOC|1 +1 Command Tower|MOC|1 +1 Crack Open|MOC|1 +1 Curse of Opulence|MOC|1 +1 Cutthroat Negotiator|MOC|1 +1 Echo Storm|MOC|1 +1 Everquill Phoenix|MOC|1 +1 Evolving Wilds|MOC|1 +1 Exotic Orchard|MOC|1 +1 Feldon of the Third Path|MOC|1 +1 Fiery Confluence|MOC|1 +7 Forest|MOM|1 +1 Fractured Powerstone|MOC|1 +1 Frontier Bivouac|MOC|1 +1 Frostboil Snarl|MOC|1 +1 Game Trail|MOC|1 +1 Ghirapur Aether Grid|MOC|1 +1 Gilded Goose|MOC|1 +1 Gruul Signet|MOC|1 +1 Hedron Detonator|MOC|1 +1 Hellkite Igniter|MOC|1 +1 Rashmi and Ragavan|MOC|1 +1 Imprisoned in the Moon|MOC|1 +1 Inspiring Statuary|MOC|1 +8 Island|MOM|1 +1 Izzet Signet|MOC|1 +1 Junk Winder|MOC|1 +1 Master of Etherium|MOC|1 +1 Masterful Replication|MOC|1 +8 Mountain|MOM|1 +1 Myriad Landscape|MOC|1 +1 Pain Distributor|MOC|1 +1 Path of Ancestry|MOC|1 +1 Perplexing Test|MOC|1 +1 Pia and Kiran Nalaar|MOC|1 +1 Reality Shift|MOC|1 +1 Replicating Ring|MOC|1 +1 Reverse Engineer|MOC|1 +1 Rise and Shine|MOC|1 +1 Root Out|MOC|1 +1 Saheeli's Artistry|MOC|1 +1 Saheeli, Sublime Artificer|MOC|1 +1 Sandsteppe War Riders|MOC|1 +1 Schema Thief|MOC|1 +1 Sharding Sphinx|MOC|1 +1 Shimmer Dragon|MOC|1 +1 Simic Growth Chamber|MOC|1 +1 Simic Signet|MOC|1 +1 Skyclave Relic|MOC|1 +1 Sol Ring|MOC|1 +1 Spell Swindle|MOC|1 +1 Spine of Ish Sah|MOC|1 +1 Stroke of Genius|MOC|1 +1 Struggle // Survive|MOC|1 +1 Temple of Abandon|MOC|1 +1 Temple of Epiphany|MOC|1 +1 Temple of Mystery|MOC|1 +1 Terramorphic Expanse|MOC|1 +1 Thopter Assembly|MOC|1 +1 Thopter Spy Network|MOC|1 +1 Thoughtcast|MOC|1 +1 Tireless Provisioner|MOC|1 +1 Tireless Tracker|MOC|1 +1 Vampires' Vengeance|MOC|1 +1 Vedalken Humiliator|MOC|1 +1 Vineglimmer Snarl|MOC|1 +1 Weirding Wood|MOC|1 +1 Whirler Rogue|MOC|1 +1 Workshop Elders|MOC|1 +1 Dance with Calamity|MOC|1 +1 Ichor Elixir|MOC|1 +1 Path of the Animist|MOC|1 +[Sideboard] + diff --git a/forge-gui/res/quest/commanderprecons/Undead Unleashed [MIC] [2021].dck b/forge-gui/res/quest/commanderprecons/Undead Unleashed [MIC] [2021].dck new file mode 100644 index 00000000000..34127a56332 --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Undead Unleashed [MIC] [2021].dck @@ -0,0 +1,79 @@ +[metadata] +Name=Undead Unleashed [MIC] [2021] +[commander] +1 Wilhelt, the Rotcleaver+|MIC +[main] +1 Aetherspouts|MIC +1 Arcane Signet|MIC +1 Army of the Damned|MIC +1 Bojuka Bog|MIC +1 Butcher of Malakir|MIC +1 Cemetery Reaper|MIC +1 Charcoal Diamond|MIC +1 Choked Estuary|MIC +1 Cleaver Skaab|MIC +1 Command Tower|MIC +1 Commander's Sphere|MIC +1 Corpse Augur|MIC +1 Crowded Crypt|MIC +1 Curse of the Restless Dead|MIC +1 Curse of Unbinding|MIC +1 Dark Salvation|MIC +1 Darkwater Catacombs|MIC +1 Death Baron|MIC +1 Dimir Aqueduct|MIC +1 Diregraf Captain|MIC +1 Diregraf Colossus|MIC +1 Distant Melody|MIC +1 Dread Summons|MIC +1 Dreadhorde Invasion|MIC +1 Drown in Dreams|MIC +1 Eater of Hope|MIC +1 Eloise, Nephalia Sleuth|MIC +1 Empty the Laboratory|MIC +1 Endless Ranks of the Dead|MIC +1 Eternal Skylord|MIC +1 Exotic Orchard|MIC +1 Feed the Swarm|MIC +1 Fleshbag Marauder|MIC +1 Forgotten Creation|MIC +1 Ghouls' Night Out|MIC +1 Gisa and Geralf|MIC +1 Gleaming Overseer|MIC +1 Go for the Throat|MIC +1 Gorex, the Tombshell|MIC +1 Gravespawn Sovereign|MIC +1 Havengul Runebinder|MIC +1 Hordewing Skaab|MIC +1 Hour of Eternity|MIC +12 Island|MIC +1 Liliana's Devotee|MIC +1 Liliana's Mastery|MIC +1 Liliana, Death's Majesty|MIC +1 Lord of the Accursed|MIC +1 Midnight Reaper|MIC +1 Mortuary Mire|MIC +1 Myriad Landscape|MIC +1 Open the Graves|MIC +1 Overseer of the Damned|MIC +1 Path of Ancestry|MIC +1 Prowling Geistcatcher|MIC +1 Ravenous Rotbelly|MIC +1 Rooftop Storm|MIC +1 Ruthless Deathfang|MIC +1 Shadow Kin|MIC +1 Sky Diamond|MIC +1 Sol Ring|MIC +1 Spark Reaper|MIC +1 Stitcher Geralf|MIC +1 Sunken Hollow|MIC +15 Swamp|MIC +1 Syphon Flesh|MIC +1 Tainted Isle|MIC +1 Talisman of Dominance|MIC +1 Temple of Deceit|MIC +1 Tomb Tyrant|MIC +1 Unclaimed Territory|MIC +1 Undead Alchemist|MIC +1 Undead Augur|MIC +1 Zombie Apocalypse|MIC diff --git a/forge-gui/res/quest/commanderprecons/Vampiric Bloodline [VOC] [2021].dck b/forge-gui/res/quest/commanderprecons/Vampiric Bloodline [VOC] [2021].dck new file mode 100644 index 00000000000..8469e006843 --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Vampiric Bloodline [VOC] [2021].dck @@ -0,0 +1,81 @@ +[metadata] +Name=Vampiric Bloodline [VOC] [2021] +[commander] +1 Strefan, Maurer Progenitor+|VOC +[main] +1 Ancient Craving|VOC +1 Anje's Ravager|VOC +1 Anowon, the Ruin Sage|VOC +1 Arcane Signet|VOC +1 Arterial Alchemy|VOC +1 Avacyn's Judgment|VOC +1 Blasphemous Act|VOC +1 Blood Artist|VOC +1 Bloodline Necromancer|VOC +1 Bloodlord of Vaasgoth|VOC +1 Bloodsworn Steward|VOC +1 Bloodtithe Harvester|VOC +1 Bloodtracker|VOC +1 Butcher of Malakir|VOC +1 Champion of Dusk|VOC +1 Charcoal Diamond|VOC +1 Command Tower|VOC +1 Commander's Sphere|VOC +1 Cordial Vampire|VOC +1 Crimson Honor Guard|VOC +1 Crossway Troublemakers|VOC +1 Damnable Pact|VOC +1 Dark Impostor|VOC +1 Exotic Orchard|VOC +1 Falkenrath Gorger|VOC +1 Falkenrath Noble|VOC +1 Feed the Swarm|VOC +1 Fire Diamond|VOC +1 Foreboding Ruins|VOC +1 Glass-Cast Heart|VOC +1 Imposing Grandeur|VOC +1 Indulgent Aristocrat|VOC +1 Kamber, the Plunderer|VOC +1 Laurine, the Diversion|VOC +1 Malakir Bloodwitch|VOC +1 Markov Enforcer|VOC +1 Midnight Arsonist|VOC +1 Mob Rule|VOC +1 Molten Echoes|VOC +11 Mountain|VOC +1 Myriad Landscape|VOC +1 Necropolis Regent|VOC +1 Night's Whisper|VOC +1 Nirkana Revenant|VOC +1 Olivia's Wrath|VOC +1 Path of Ancestry|VOC +1 Patron of the Vein|VOC +1 Predators' Hour|VOC +1 Rakdos Carnarium|VOC +1 Rakdos Charm|VOC +1 Rakdos Signet|VOC +1 Rakish Heir|VOC +1 Sanctum Seeker|VOC +1 Scion of Opulence|VOC +1 Shadowblood Ridge|VOC +1 Shadowgrange Archfiend|VOC +1 Sinister Waltz|VOC +1 Smoldering Marsh|VOC +1 Sol Ring|VOC +1 Stensia Masquerade|VOC +1 Stromkirk Captain|VOC +1 Stromkirk Condemned|VOC +1 Stromkirk Occultist|VOC +14 Swamp|VOC +1 Swiftfoot Boots|VOC +1 Tainted Peak|VOC +1 Temple of Malice|VOC +1 Temple of the False God|VOC +1 Timothar, Baron of Bats|VOC +1 Unclaimed Territory|VOC +1 Underworld Connections|VOC +1 Unstable Obelisk|VOC +1 Urge to Feed|VOC +1 Vampire Nighthawk|VOC +1 Vampiric Dragon|VOC +1 Vandalblast|VOC diff --git a/forge-gui/res/quest/commanderprecons/Vampiric Bloodlust.dck b/forge-gui/res/quest/commanderprecons/Vampiric Bloodlust [C17] [2017].dck similarity index 98% rename from forge-gui/res/quest/commanderprecons/Vampiric Bloodlust.dck rename to forge-gui/res/quest/commanderprecons/Vampiric Bloodlust [C17] [2017].dck index 803a57b18b8..9535ecf5a1d 100644 --- a/forge-gui/res/quest/commanderprecons/Vampiric Bloodlust.dck +++ b/forge-gui/res/quest/commanderprecons/Vampiric Bloodlust [C17] [2017].dck @@ -1,5 +1,5 @@ [metadata] -Name=Vampiric Bloodlust +Name=Vampiric Bloodlust [C17] [2017] [Commander] 1 Edgar Markov|C17 [Main] diff --git a/forge-gui/res/quest/commanderprecons/Wade into Battle.dck b/forge-gui/res/quest/commanderprecons/Wade into Battle [C15] [2015].dck similarity index 98% rename from forge-gui/res/quest/commanderprecons/Wade into Battle.dck rename to forge-gui/res/quest/commanderprecons/Wade into Battle [C15] [2015].dck index 3e1cb229e8f..b08c7e85c40 100644 --- a/forge-gui/res/quest/commanderprecons/Wade into Battle.dck +++ b/forge-gui/res/quest/commanderprecons/Wade into Battle [C15] [2015].dck @@ -1,5 +1,5 @@ [metadata] -Name=Wade into Battle +Name=Wade into Battle [C15] [2015] [Commander] 1 Kalemne, Disciple of Iroas+|C15 [Main] diff --git a/forge-gui/res/quest/commanderprecons/Wade into Battle (2018).dck b/forge-gui/res/quest/commanderprecons/Wade into Battle [CM2] [2018].dck similarity index 98% rename from forge-gui/res/quest/commanderprecons/Wade into Battle (2018).dck rename to forge-gui/res/quest/commanderprecons/Wade into Battle [CM2] [2018].dck index 6a92517fc9c..4e6fa0740b6 100644 --- a/forge-gui/res/quest/commanderprecons/Wade into Battle (2018).dck +++ b/forge-gui/res/quest/commanderprecons/Wade into Battle [CM2] [2018].dck @@ -1,5 +1,5 @@ [metadata] -Name=Wade into Battle (2018) +Name=Wade into Battle [CM2] [2018] [Commander] 1 Kalemne, Disciple of Iroas+|CM2 [Main] diff --git a/forge-gui/res/quest/commanderprecons/Witherbloom Witchcraft [C21] [2021].dck b/forge-gui/res/quest/commanderprecons/Witherbloom Witchcraft [C21] [2021].dck new file mode 100644 index 00000000000..863b6d73d79 --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Witherbloom Witchcraft [C21] [2021].dck @@ -0,0 +1,84 @@ +[metadata] +Name=Witherbloom Witchcraft [C21] [2021] +[commander] +1 Willowdusk, Essence Seer+|C21 +[main] +1 Ageless Entity|C21 +1 Alhammarret's Archive|C21 +1 Ancient Craving|C21 +1 Arcane Signet|C21 +1 Blight Mound|C21 +1 Blighted Woodland|C21 +1 Bloodthirsty Aerialist|C21 +1 Bloodtracker|C21 +1 Blossoming Bogbeast|C21 +1 Command Tower|C21 +1 Cultivate|C21 +1 Damnable Pact|C21 +1 Deadly Tempest|C21 +1 Defiant Bloodlord|C21 +1 Dina, Soul Steeper|C21 +1 Druidic Satchel|C21 +1 Elixir of Immortality|C21 +1 Epicure of Blood|C21 +1 Essence Pulse|C21 +1 Exotic Orchard|C21 +1 Ezzaroot Channeler|C21 +1 Feed the Swarm|C21 +11 Forest|C21 +1 Gaze of Granite|C21 +1 Gift of Paradise|C21 +1 Gingerbread Cabin|C21 +1 Gluttonous Troll|C21 +1 Golgari Rot Farm|C21 +1 Greed|C21 +1 Gyome, Master Chef|C21 +1 Healing Technique|C21 +1 High Market|C21 +1 Honor Troll|C21 +1 Jungle Hollow|C21 +1 Leyline Prowler|C21 +1 Llanowar Wastes|C21 +1 Loxodon Warhammer|C21 +1 Marshland Bloodcaster|C21 +1 Moldervine Reclamation|C21 +1 Mortality Spear|C21 +1 Myriad Landscape|C21 +1 Nissa's Renewal|C21 +1 Noxious Gearhulk|C21 +1 Ob Nixilis Reignited|C21 +1 Paradise Plume|C21 +1 Pest Infestation|C21 +1 Pristine Talisman|C21 +1 Pulse of Murasa|C21 +1 Radiant Fountain|C21 +1 Rampant Growth|C21 +1 Reckless Spite|C21 +1 Revival Experiment|C21 +1 Rogue's Passage|C21 +1 Sangromancer|C21 +1 Sanguine Bond|C21 +1 Sapling of Colfenor|C21 +1 Sapseep Forest|C21 +1 Silversmote Ghoul|C21 +1 Sol Ring|C21 +1 Sproutback Trudge|C21 +1 Study Hall|C21 +1 Suffer the Past|C21 +1 Sun Droplet|C21 +11 Swamp|C21 +1 Tainted Wood|C21 +1 Talisman of Resilience|C21 +1 Taste of Death|C21 +1 Temple of Malady|C21 +1 Temple of the False God|C21 +1 Tivash, Gloom Summoner|C21 +1 Trudge Garden|C21 +1 Vampire Nighthawk|C21 +1 Veinwitch Coven|C21 +1 Venser's Journal|C21 +1 Verdant Sun's Avatar|C21 +1 Well of Lost Dreams|C21 +1 Witch's Clinic|C21 +1 Witherbloom Campus|C21 +1 Yedora, Grave Gardener|C21 diff --git a/forge-gui/src/main/java/forge/deck/CommanderDeckGenerator.java b/forge-gui/src/main/java/forge/deck/CommanderDeckGenerator.java index a06fd4e2bb3..d31776e2c2c 100644 --- a/forge-gui/src/main/java/forge/deck/CommanderDeckGenerator.java +++ b/forge-gui/src/main/java/forge/deck/CommanderDeckGenerator.java @@ -1,6 +1,7 @@ package forge.deck; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import com.google.common.base.Predicate; @@ -27,9 +28,12 @@ public class CommanderDeckGenerator extends DeckProxy implements Comparable(PaperCard.class); String matrixKey = (format.equals(DeckFormat.TinyLeaders) ? DeckFormat.Commander : format).toString(); //use Commander for Tiny Leaders - Iterable legendNames = CardRelationMatrixGenerator.cardPools.get(matrixKey).keySet(); - for (String legendName : legendNames) { - uniqueCards.add(FModel.getMagicDb().getCommonCards().getUniqueByName(legendName)); + HashMap matrixPool = CardRelationMatrixGenerator.cardPools.get(matrixKey); + if (matrixPool != null) { + Iterable legendNames = matrixPool.keySet(); + for (String legendName : legendNames) { + uniqueCards.add(FModel.getMagicDb().getCommonCards().getUniqueByName(legendName)); + } } } else { diff --git a/forge-gui/src/main/java/forge/player/HumanPlaySpellAbility.java b/forge-gui/src/main/java/forge/player/HumanPlaySpellAbility.java index 4e0341325ae..7a4c4e16d4f 100644 --- a/forge-gui/src/main/java/forge/player/HumanPlaySpellAbility.java +++ b/forge-gui/src/main/java/forge/player/HumanPlaySpellAbility.java @@ -30,6 +30,7 @@ import forge.card.MagicColor; import forge.game.Game; import forge.game.GameActionUtil; import forge.game.GameObject; +import forge.game.ability.AbilityKey; import forge.game.ability.AbilityUtils; import forge.game.card.Card; import forge.game.card.CardPlayOption; @@ -82,6 +83,7 @@ public class HumanPlaySpellAbility { boolean keywordColor = false; // freeze Stack. No abilities should go onto the stack while I'm filling requirements. + boolean refreeze = game.getStack().isFrozen(); game.getStack().freezeStack(); if (ability.isSpell() && !c.isCopiedSpell()) { @@ -175,6 +177,9 @@ public class HumanPlaySpellAbility { } else { GameActionUtil.rollbackAbility(ability, fromZone, zonePosition, payment, c); } + if (!refreeze) { + game.getStack().unfreezeStack(); + } if (manaTypeConversion || manaColorConversion || keywordColor) { manapool.restoreColorReplacements(); @@ -192,8 +197,10 @@ public class HumanPlaySpellAbility { if (skipStack) { AbilityUtils.resolve(ability); - // Should unfreeze stack - game.getStack().unfreezeStack(); + // Should unfreeze stack (but if it was a RE with a cause better to let it be handled by that) + if (!ability.isReplacementAbility() || ability.getRootAbility().getReplacingObject(AbilityKey.Cause) == null) { + game.getStack().unfreezeStack(); + } } else { ensureAbilityHasDescription(ability); game.getStack().addAndUnfreeze(ability); diff --git a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java index 53e7386d85e..17f3d55596f 100644 --- a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java +++ b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java @@ -682,7 +682,11 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont return min; } final ImmutableList.Builder choices = ImmutableList.builder(); - for (int i = 0; i <= max - min; i++) { + // todo check for X cost or any max value for optional costs like multikicker, etc to determine the correct max value, + // fixes crash for word of command OutOfMemoryError when selecting a card with announce X or Multikicker since + // it will build from 0 to Integer.MAX_VALUE... + int size = max == Integer.MAX_VALUE ? 9 : max - min; + for (int i = 0; i <= size; i++) { choices.add(Integer.valueOf(i + min)); } return getGui().one(title, choices.build()).intValue();