diff --git a/README.md b/README.md index 0a969ed0a74..e1e94874b13 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ This file is tarball, and may need to be extracted twice depending on which prog We recommend extracting to a new folder rather than on top of an existing installation. **For users who have played Forge before all of your user data is stored separately so you don't have to worry about losing it on upgrade.** -Java 8 or later is required to run Forge. Please make sure is the right version is installed in your enviroment. Check the user guide for more info. +Java 8 or later is required to run Forge. Please make sure is the right version is installed in your environment. Check the user guide for more info. For Android users, download the APK file from [Snapshot Build](https://downloads.cardforge.org/dailysnapshots/) to your device. On first run, Forge will download all needed data. @@ -47,4 +47,4 @@ You can also play against the AI in a variety of formats, such as Sealed, Draft, ## Questions If you have any questions, please join the Discord channel. Read the #rules and the frequently-asked-questions. -If your question is not answered there, feel free to ask in the #help channel. \ No newline at end of file +If your question is not answered there, feel free to ask in the #help channel. diff --git a/forge-adventure/pom.xml b/forge-adventure/pom.xml index 50623a0175c..1cdc2f9b211 100644 --- a/forge-adventure/pom.xml +++ b/forge-adventure/pom.xml @@ -3,7 +3,7 @@ forge forge - 1.6.65-SNAPSHOT + 1.6.66-SNAPSHOT 4.0.0 diff --git a/forge-ai/pom.xml b/forge-ai/pom.xml index 9cae8944433..8b2743db97b 100644 --- a/forge-ai/pom.xml +++ b/forge-ai/pom.xml @@ -6,7 +6,7 @@ forge forge - 1.6.65-SNAPSHOT + 1.6.66-SNAPSHOT forge-ai diff --git a/forge-ai/src/main/java/forge/ai/AiController.java b/forge-ai/src/main/java/forge/ai/AiController.java index 966300ee475..14915df4a79 100644 --- a/forge-ai/src/main/java/forge/ai/AiController.java +++ b/forge-ai/src/main/java/forge/ai/AiController.java @@ -923,6 +923,10 @@ public class AiController { if (checkCurseEffects(sa)) { return AiPlayDecision.CurseEffects; } + // TODO maybe other location for this? + if (!sa.isLegalAfterStack()) { + return AiPlayDecision.AnotherTime; + } Card spellHost = card; if (sa.isSpell()) { spellHost = CardCopyService.getLKICopy(spellHost); @@ -930,10 +934,6 @@ public class AiController { spellHost.setLastKnownZone(game.getStackZone()); // need to add to stack to make check Restrictions respect stack cmc spellHost.setCastFrom(card.getZone()); } - // TODO maybe other location for this? - if (!sa.isLegalAfterStack()) { - return AiPlayDecision.AnotherTime; - } if (!sa.checkRestrictions(spellHost, player)) { return AiPlayDecision.AnotherTime; } @@ -946,7 +946,7 @@ public class AiController { } } if (sa instanceof Spell) { - if (card.isPermanent()) { + if (sa.getApi() == ApiType.PermanentCreature || sa.getApi() == ApiType.PermanentNoncreature) { return canPlayFromEffectAI((Spell) sa, false, true); } if (!player.cantLoseForZeroOrLessLife() && player.canLoseLife() && diff --git a/forge-ai/src/main/java/forge/ai/AiCostDecision.java b/forge-ai/src/main/java/forge/ai/AiCostDecision.java index 0da8034e52f..fd176603ff0 100644 --- a/forge-ai/src/main/java/forge/ai/AiCostDecision.java +++ b/forge-ai/src/main/java/forge/ai/AiCostDecision.java @@ -651,7 +651,7 @@ public class AiCostDecision extends CostDecisionMakerBase { // TODO sort negatives to remove from best Cards first? for (final Card crd : negatives) { for (Map.Entry e : table.filterToRemove(crd).entrySet()) { - if (ComputerUtil.isNegativeCounter(e.getKey(), crd)) { + if (ComputerUtil.isNegativeCounter(e.getKey(), crd) && crd.canRemoveCounters(e.getKey())) { int over = Math.min(e.getValue(), c - toRemove); if (over > 0) { toRemove += over; @@ -762,7 +762,7 @@ public class AiCostDecision extends CostDecisionMakerBase { } } - // if table is empty, than no counter was removed + // if table is empty, then no counter was removed return table.isEmpty() ? null : PaymentDecision.counters(table); } diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtil.java b/forge-ai/src/main/java/forge/ai/ComputerUtil.java index af51c5afa0b..3af26c3358f 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtil.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtil.java @@ -836,10 +836,9 @@ public class ComputerUtil { } public static CardCollection chooseUntapType(final Player ai, final String type, final Card activate, final boolean untap, final int amount, SpellAbility sa) { - CardCollection typeList = - CardLists.getValidCards(ai.getCardsIn(ZoneType.Battlefield), type.split(";"), activate.getController(), activate, sa); + CardCollection typeList = CardLists.getValidCards(ai.getCardsIn(ZoneType.Battlefield), type.split(";"), activate.getController(), activate, sa); - typeList = CardLists.filter(typeList, Presets.TAPPED); + typeList = CardLists.filter(typeList, Presets.TAPPED, c -> c.getCounters(CounterEnumType.STUN) == 0 || c.canRemoveCounters(CounterType.get(CounterEnumType.STUN))); if (untap) { typeList.remove(activate); @@ -851,12 +850,7 @@ public class ComputerUtil { CardLists.sortByPowerDesc(typeList); - final CardCollection untapList = new CardCollection(); - - for (int i = 0; i < amount; i++) { - untapList.add(typeList.get(i)); - } - return untapList; + return typeList.subList(0, amount); } public static CardCollection chooseReturnType(final Player ai, final String type, final Card activate, final Card target, final int amount, SpellAbility sa) { diff --git a/forge-ai/src/main/java/forge/ai/ability/CountersRemoveAi.java b/forge-ai/src/main/java/forge/ai/ability/CountersRemoveAi.java index 6a307d80773..d386ad08d87 100644 --- a/forge-ai/src/main/java/forge/ai/ability/CountersRemoveAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/CountersRemoveAi.java @@ -221,6 +221,8 @@ public class CountersRemoveAi extends SpellAbilityAi { sa.getTargets().add(ComputerUtilCard.getBestCreatureAI(aiUndyingList)); return true; } + + // TODO stun counters with canRemoveCounters check // remove P1P1 counters from opposing creatures CardCollection oppP1P1List = CardLists.filter(list, diff --git a/forge-core/pom.xml b/forge-core/pom.xml index 7499150ba81..7d1ec0902c0 100644 --- a/forge-core/pom.xml +++ b/forge-core/pom.xml @@ -6,7 +6,7 @@ forge forge - 1.6.65-SNAPSHOT + 1.6.66-SNAPSHOT forge-core diff --git a/forge-core/src/main/java/forge/card/DeckHints.java b/forge-core/src/main/java/forge/card/DeckHints.java index ef38a23da89..6b7d2b0435a 100644 --- a/forge-core/src/main/java/forge/card/DeckHints.java +++ b/forge-core/src/main/java/forge/card/DeckHints.java @@ -224,7 +224,7 @@ public class DeckHints { return true; } for (String tok : card.getTokens()) { - if (tdb != null && tdb.containsRule(tok) && predicate.apply(tdb.getToken(tok).getRules())) { + if (tdb != null && tdb.containsRule(tok) && rulesWithTokens(predicate).apply(tdb.getToken(tok).getRules())) { return true; } } diff --git a/forge-game/pom.xml b/forge-game/pom.xml index 653a151451c..4bf1976d31e 100644 --- a/forge-game/pom.xml +++ b/forge-game/pom.xml @@ -6,7 +6,7 @@ forge forge - 1.6.65-SNAPSHOT + 1.6.66-SNAPSHOT forge-game diff --git a/forge-game/src/main/java/forge/game/GameEntity.java b/forge-game/src/main/java/forge/game/GameEntity.java index 285514b2189..a6c986b9d94 100644 --- a/forge-game/src/main/java/forge/game/GameEntity.java +++ b/forge-game/src/main/java/forge/game/GameEntity.java @@ -309,8 +309,10 @@ public abstract class GameEntity extends GameObject implements IIdentifiable { abstract public void setCounters(final Map allCounters); + abstract public boolean canRemoveCounters(final CounterType type); + abstract public boolean canReceiveCounters(final CounterType type); - abstract public void subtractCounter(final CounterType counterName, final int n, final Player remover); + abstract public int subtractCounter(final CounterType counterName, final int n, final Player remover); abstract public void clearCounters(); public boolean canReceiveCounters(final CounterEnumType type) { @@ -331,8 +333,8 @@ public abstract class GameEntity extends GameObject implements IIdentifiable { addCounter(CounterType.get(counterType), n, source, table); } - public void subtractCounter(final CounterEnumType counterName, final int n, final Player remover) { - subtractCounter(CounterType.get(counterName), n, remover); + public int subtractCounter(final CounterEnumType counterName, final int n, final Player remover) { + return subtractCounter(CounterType.get(counterName), n, remover); } abstract public void addCounterInternal(final CounterType counterType, final int n, final Player source, final boolean fireEvents, GameEntityCounterTable table, Map params); diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java index 13a3c0697f7..2896cb0ada7 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java @@ -4,7 +4,6 @@ import com.google.common.base.Predicates; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.common.collect.Maps; - import forge.card.CardStateName; import forge.card.CardType; import forge.game.*; @@ -27,7 +26,9 @@ import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.Pair; -import java.util.*; +import java.util.Arrays; +import java.util.List; +import java.util.Map; public class ChangeZoneEffect extends SpellAbilityEffect { @@ -1085,8 +1086,10 @@ public class ChangeZoneEffect extends SpellAbilityEffect { String selectPrompt = sa.hasParam("SelectPrompt") ? sa.getParam("SelectPrompt") : MessageUtil.formatMessage(Localizer.getInstance().getMessage("lblSelectCardFromPlayerZone", "{player's}", Lang.joinHomogenous(origin, ZoneType::getTranslatedName).toLowerCase()), decider, player); final String totalcmc = sa.getParam("WithTotalCMC"); final String totalpower = sa.getParam("WithTotalPower"); + final String totalCardTypes = sa.getParam("WithTotalCardTypes"); int totcmc = AbilityUtils.calculateAmount(source, totalcmc, sa); int totpower = AbilityUtils.calculateAmount(source, totalpower, sa); + int totCardTypes = AbilityUtils.calculateAmount(source, totalCardTypes, sa); CardCollection chosenCards = new CardCollection(); if (changeType.startsWith("EACH")) { @@ -1160,6 +1163,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect { } } + // If we're choosing multiple cards, only need to show the reveal dialog the first time through. boolean shouldReveal = (i == 0); Card c = null; @@ -1170,6 +1174,10 @@ public class ChangeZoneEffect extends SpellAbilityEffect { c = Aggregates.random(fetchList); } else if (defined && !chooseFromDef) { c = Iterables.getFirst(fetchList, null); + } else if (totalCardTypes != null) { + String title = selectPrompt; + title += "\nCard types left: " + Math.max(totCardTypes, 0); + c = decider.getController().chooseSingleCardForZoneChange(destination, origin, sa, fetchList, shouldReveal ? delayedReveal : null, title, !mandatory, decider); } else { String title = selectPrompt; if (changeNum > 1) { //indicate progress if multiple cards being chosen @@ -1202,6 +1210,13 @@ public class ChangeZoneEffect extends SpellAbilityEffect { if (totalpower != null) { totpower -= c.getCurrentPower(); } + if (totalCardTypes != null) { + totCardTypes -= Iterables.size(c.getType().getCoreTypes()); + } + } + + if (totalCardTypes != null && totCardTypes > 0) { + chosenCards.clear(); } } @@ -1537,7 +1552,8 @@ public class ChangeZoneEffect extends SpellAbilityEffect { && !sa.hasParam("AtRandom") && (!sa.hasParam("Defined") || sa.hasParam("ChooseFromDefined")) && !sa.hasParam("WithTotalCMC") - && !sa.hasParam("WithTotalPower"); + && !sa.hasParam("WithTotalPower") + && !sa.hasParam("WithTotalCardTypes"); } /** diff --git a/forge-game/src/main/java/forge/game/ability/effects/CountersMoveEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CountersMoveEffect.java index 1f22a9db209..55f85d87356 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CountersMoveEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CountersMoveEffect.java @@ -101,8 +101,7 @@ public class CountersMoveEffect extends SpellAbilityEffect { // uses for multi sources -> one defined/target // this needs given counter type if (sa.hasParam("ValidSource")) { - CardCollectionView srcCards = game.getCardsIn(ZoneType.Battlefield); - srcCards = CardLists.getValidCards(srcCards, sa.getParam("ValidSource"), activator, host, sa); + CardCollectionView srcCards = CardLists.getValidCards(game.getCardsIn(ZoneType.Battlefield), sa.getParam("ValidSource"), activator, host, sa); List tgtCards = getDefinedCardsOrTargeted(sa); if (tgtCards.isEmpty()) { @@ -147,11 +146,6 @@ public class CountersMoveEffect extends SpellAbilityEffect { Map countersToAdd = Maps.newHashMap(); for (Card src : srcCards) { - // rule 121.5: If the first and second objects are the same object, nothing happens - if (src.equals(dest)) { - continue; - } - if ("All".equals(counterName)) { final Map tgtCounters = Maps.newHashMap(src.getCounters()); for (Map.Entry e : tgtCounters.entrySet()) { @@ -183,8 +177,7 @@ public class CountersMoveEffect extends SpellAbilityEffect { params.put("CounterType", cType); params.put("Source", source); - CardCollectionView tgtCards = game.getCardsIn(ZoneType.Battlefield); - tgtCards = CardLists.getValidCards(tgtCards, sa.getParam("ValidDefined"), activator, host, sa); + CardCollectionView tgtCards = CardLists.getValidCards(game.getCardsIn(ZoneType.Battlefield), sa.getParam("ValidDefined"), activator, host, sa); if (counterNum.equals("Any")) { tgtCards = activator.getController().chooseCardsForEffect( @@ -203,6 +196,9 @@ public class CountersMoveEffect extends SpellAbilityEffect { if (!dest.canReceiveCounters(cType)) { continue; } + if (!source.canRemoveCounters(cType)) { + continue; + } Card cur = game.getCardState(dest, null); if (cur == null || !cur.equalsWithGameTimestamp(dest)) { @@ -287,7 +283,7 @@ public class CountersMoveEffect extends SpellAbilityEffect { final List typeChoices = Lists.newArrayList(); // get types of counters for (CounterType ct : tgtCounters.keySet()) { - if (dest.canReceiveCounters(ct)) { + if (dest.canReceiveCounters(ct) && source.canRemoveCounters(cType)) { typeChoices.add(ct); } } @@ -337,6 +333,9 @@ public class CountersMoveEffect extends SpellAbilityEffect { if (!dest.canReceiveCounters(cType)) { return; } + if (!src.canRemoveCounters(cType)) { + return; + } int cmax = src.getCounters(cType); if (cmax <= 0) { diff --git a/forge-game/src/main/java/forge/game/ability/effects/CountersPutOrRemoveEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CountersPutOrRemoveEffect.java index 0b4f50aa69f..90c56c66c70 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CountersPutOrRemoveEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CountersPutOrRemoveEffect.java @@ -127,7 +127,18 @@ public class CountersPutOrRemoveEffect extends SpellAbilityEffect { putCounter = !Expressions.compare(value, operator, operandValue); } else { - putCounter = pc.chooseBinary(sa, prompt, BinaryChoiceType.AddOrRemove, params); + boolean canReceive = tgtCard.canReceiveCounters(ctype); + boolean canRemove = tgtCard.canRemoveCounters(ctype); + if (!canReceive && !canRemove) { + return; + } + if (canReceive && !canRemove) { + putCounter = true; + } else if (!canReceive && canRemove) { + putCounter = false; + } else { + putCounter = pc.chooseBinary(sa, prompt, BinaryChoiceType.AddOrRemove, params); + } } if (putCounter) { diff --git a/forge-game/src/main/java/forge/game/ability/effects/CountersRemoveAllEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CountersRemoveAllEffect.java index 459b6d7371f..4a9de811f88 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CountersRemoveAllEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CountersRemoveAllEffect.java @@ -63,8 +63,7 @@ public class CountersRemoveAllEffect extends SpellAbilityEffect { for (final Card tgtCard : cards) { if (sa.hasParam("AllCounterTypes")) { for (Map.Entry e : Lists.newArrayList(tgtCard.getCounters().entrySet())) { - numberRemoved += e.getValue(); - tgtCard.subtractCounter(e.getKey(), e.getValue(), sa.getActivatingPlayer()); + numberRemoved += tgtCard.subtractCounter(e.getKey(), e.getValue(), sa.getActivatingPlayer()); } //tgtCard.getCounters().clear(); continue; @@ -74,7 +73,7 @@ public class CountersRemoveAllEffect extends SpellAbilityEffect { } if (counterAmount > 0) { - tgtCard.subtractCounter(CounterType.getType(type), counterAmount, sa.getActivatingPlayer()); + numberRemoved += tgtCard.subtractCounter(CounterType.getType(type), counterAmount, sa.getActivatingPlayer()); game.updateLastStateForCard(tgtCard); } } diff --git a/forge-game/src/main/java/forge/game/ability/effects/CountersRemoveEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CountersRemoveEffect.java index d2baf42e9e3..524d430a95d 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CountersRemoveEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CountersRemoveEffect.java @@ -110,8 +110,7 @@ public class CountersRemoveEffect extends SpellAbilityEffect { // Removing energy if (type.equals("All")) { for (Map.Entry e : Lists.newArrayList(tgtPlayer.getCounters().entrySet())) { - tgtPlayer.subtractCounter(e.getKey(), e.getValue(), activator); - totalRemoved += e.getValue(); + totalRemoved += tgtPlayer.subtractCounter(e.getKey(), e.getValue(), activator); } } else { if (num.equals("All")) { @@ -120,8 +119,7 @@ public class CountersRemoveEffect extends SpellAbilityEffect { if (type.equals("Any")) { totalRemoved += removeAnyType(tgtPlayer, cntToRemove, sa); } else { - tgtPlayer.subtractCounter(counterType, cntToRemove, activator); - totalRemoved += cntToRemove; + totalRemoved += tgtPlayer.subtractCounter(counterType, cntToRemove, activator); } } } @@ -165,11 +163,11 @@ public class CountersRemoveEffect extends SpellAbilityEffect { if (gameCard == null || !tgtCard.equalsWithGameTimestamp(gameCard)) { continue; } + final Zone zone = game.getZoneOf(gameCard); if (type.equals("All")) { for (Map.Entry e : Lists.newArrayList(gameCard.getCounters().entrySet())) { - gameCard.subtractCounter(e.getKey(), e.getValue(), activator); - totalRemoved += e.getValue(); + totalRemoved += gameCard.subtractCounter(e.getKey(), e.getValue(), activator); } game.updateLastStateForCard(gameCard); continue; @@ -180,6 +178,9 @@ public class CountersRemoveEffect extends SpellAbilityEffect { if (type.equals("Any")) { totalRemoved += removeAnyType(gameCard, cntToRemove, sa); } else { + if (!tgtCard.canRemoveCounters(counterType)) { + continue; + } cntToRemove = Math.min(cntToRemove, gameCard.getCounters(counterType)); if (zone.is(ZoneType.Battlefield) || zone.is(ZoneType.Exile)) { @@ -221,14 +222,18 @@ public class CountersRemoveEffect extends SpellAbilityEffect { final Player activator = sa.getActivatingPlayer(); final PlayerController pc = activator.getController(); final Map tgtCounters = Maps.newHashMap(entity.getCounters()); + for (CounterType ct : ImmutableList.copyOf(tgtCounters.keySet())) { + if (!entity.canRemoveCounters(ct)) { + tgtCounters.remove(ct); + } + } while (cntToRemove > 0 && !tgtCounters.isEmpty()) { Map params = Maps.newHashMap(); params.put("Target", entity); String prompt = Localizer.getInstance().getMessage("lblSelectCountersTypeToRemove"); - CounterType chosenType = pc.chooseCounterType( - ImmutableList.copyOf(tgtCounters.keySet()), sa, prompt, params); + CounterType chosenType = pc.chooseCounterType(ImmutableList.copyOf(tgtCounters.keySet()), sa, prompt, params); int max = Math.min(cntToRemove, tgtCounters.get(chosenType)); // remove selection so player can't cheat additional trigger by choosing the same type multiple times 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 e7ffd5e6ff1..f413b32e8f3 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -1600,6 +1600,21 @@ public class Card extends GameEntity implements Comparable, IHasSVars, ITr return true; } + @Override + public final boolean canRemoveCounters(final CounterType type) { + if (isPhasedOut()) { + return false; + } + final Map repParams = AbilityKey.mapFromAffected(this); + repParams.put(AbilityKey.CounterType, type); + repParams.put(AbilityKey.Result, 0); + repParams.put(AbilityKey.IsDamage, false); + if (game.getReplacementHandler().cantHappenCheck(ReplacementType.RemoveCounter, repParams)) { + return false; + } + return true; + } + @Override public void addCounterInternal(final CounterType counterType, final int n, final Player source, final boolean fireEvents, GameEntityCounterTable table, Map params) { int addAmount = n; @@ -1736,11 +1751,11 @@ public class Card extends GameEntity implements Comparable, IHasSVars, ITr } @Override - public final void subtractCounter(final CounterType counterName, final int n, final Player remover) { - subtractCounter(counterName, n, remover, false); + public final int subtractCounter(final CounterType counterName, final int n, final Player remover) { + return subtractCounter(counterName, n, remover, false); } - public final void subtractCounter(final CounterType counterName, final int n, final Player remover, final boolean isDamage) { + public final int subtractCounter(final CounterType counterName, final int n, final Player remover, final boolean isDamage) { int oldValue = getCounters(counterName); int newValue = Math.max(oldValue - n, 0); @@ -1758,12 +1773,14 @@ public class Card extends GameEntity implements Comparable, IHasSVars, ITr newValue = 0; } break; + case Replaced: + return 0; default: break; } final int delta = oldValue - newValue; - if (delta == 0) { return; } + if (delta == 0) { return 0; } int powerBonusBefore = getPowerBonusFromCounters(); int toughnessBonusBefore = getToughnessBonusFromCounters(); @@ -1800,6 +1817,8 @@ public class Card extends GameEntity implements Comparable, IHasSVars, ITr runParams.put(AbilityKey.CounterAmount, delta); runParams.put(AbilityKey.NewCounterAmount, newValue); getGame().getTriggerHandler().runTrigger(TriggerType.CounterRemovedOnce, runParams, false); + + return delta; } @Override diff --git a/forge-game/src/main/java/forge/game/cost/CostRemoveAnyCounter.java b/forge-game/src/main/java/forge/game/cost/CostRemoveAnyCounter.java index 95818b6eff9..c68f97212ff 100644 --- a/forge-game/src/main/java/forge/game/cost/CostRemoveAnyCounter.java +++ b/forge-game/src/main/java/forge/game/cost/CostRemoveAnyCounter.java @@ -70,10 +70,16 @@ public class CostRemoveAnyCounter extends CostPart { int allCounters = 0; for (Card c : validCards) { if (this.counter != null) { + if (!c.canRemoveCounters(this.counter)) { + continue; + } allCounters += c.getCounters(this.counter); } else { - for (Integer value : c.getCounters().values()) { - allCounters += value; + for (Map.Entry entry : c.getCounters().entrySet()) { + if (!c.canRemoveCounters(entry.getKey())) { + continue; + } + allCounters += entry.getValue(); } } } diff --git a/forge-game/src/main/java/forge/game/cost/CostUntap.java b/forge-game/src/main/java/forge/game/cost/CostUntap.java index 0fbebd0bbed..2a4a800be0c 100644 --- a/forge-game/src/main/java/forge/game/cost/CostUntap.java +++ b/forge-game/src/main/java/forge/game/cost/CostUntap.java @@ -21,6 +21,8 @@ import com.google.common.collect.Maps; import forge.game.ability.AbilityKey; import forge.game.card.Card; import forge.game.card.CardCollection; +import forge.game.card.CounterEnumType; +import forge.game.card.CounterType; import forge.game.player.Player; import forge.game.spellability.SpellAbility; import forge.game.trigger.TriggerType; @@ -78,7 +80,8 @@ public class CostUntap extends CostPart { @Override public final boolean canPay(final SpellAbility ability, final Player payer, final boolean effect) { final Card source = ability.getHostCard(); - return source.isTapped() && !source.isAbilitySick(); + return source.isTapped() && !source.isAbilitySick() && + (source.getCounters(CounterEnumType.STUN) == 0 || source.canRemoveCounters(CounterType.get(CounterEnumType.STUN))); } @Override diff --git a/forge-game/src/main/java/forge/game/cost/CostUntapType.java b/forge-game/src/main/java/forge/game/cost/CostUntapType.java index 4fc1cbd34bc..4cc9894e32d 100644 --- a/forge-game/src/main/java/forge/game/cost/CostUntapType.java +++ b/forge-game/src/main/java/forge/game/cost/CostUntapType.java @@ -23,6 +23,8 @@ import forge.game.card.Card; import forge.game.card.CardCollection; import forge.game.card.CardCollectionView; import forge.game.card.CardLists; +import forge.game.card.CounterEnumType; +import forge.game.card.CounterType; import forge.game.card.CardPredicates.Presets; import forge.game.player.Player; import forge.game.spellability.SpellAbility; @@ -90,7 +92,7 @@ public class CostUntapType extends CostPartWithList { if (!canUntapSource) { typeList.remove(source); } - typeList = CardLists.filter(typeList, Presets.TAPPED); + typeList = CardLists.filter(typeList, Presets.TAPPED, c -> c.getCounters(CounterEnumType.STUN) == 0 || c.canRemoveCounters(CounterType.get(CounterEnumType.STUN))); final int amount = this.getAbilityAmount(ability); return (typeList.size() != 0) && (typeList.size() >= amount); diff --git a/forge-game/src/main/java/forge/game/phase/PhaseHandler.java b/forge-game/src/main/java/forge/game/phase/PhaseHandler.java index 78f7dba82e5..ce824a67032 100644 --- a/forge-game/src/main/java/forge/game/phase/PhaseHandler.java +++ b/forge-game/src/main/java/forge/game/phase/PhaseHandler.java @@ -1049,6 +1049,7 @@ public class PhaseHandler implements java.io.Serializable { for (SpellAbility sa : chosenSa) { Card saHost = sa.getHostCard(); final Zone originZone = saHost.getZone(); + final CardZoneTable triggerList = new CardZoneTable(game.getLastStateBattlefield(), game.getLastStateGraveyard()); if (pPlayerPriority.getController().playChosenSpellAbility(sa)) { // 117.3c If a player has priority when they cast a spell, activate an ability, [play a land] @@ -1064,7 +1065,6 @@ public class PhaseHandler implements java.io.Serializable { // Need to check if Zone did change if (currentZone != null && originZone != null && !currentZone.equals(originZone) && (sa.isSpell() || sa.isLandAbility())) { // currently there can be only one Spell put on the Stack at once, or Land Abilities be played - final CardZoneTable triggerList = new CardZoneTable(game.getLastStateBattlefield(), game.getLastStateGraveyard()); triggerList.put(originZone.getZoneType(), currentZone.getZoneType(), saHost); triggerList.triggerChangesZoneAll(game, sa); } diff --git a/forge-game/src/main/java/forge/game/player/Player.java b/forge-game/src/main/java/forge/game/player/Player.java index 02d9db748e2..df35d49a727 100644 --- a/forge-game/src/main/java/forge/game/player/Player.java +++ b/forge-game/src/main/java/forge/game/player/Player.java @@ -855,6 +855,14 @@ public class Player extends GameEntity implements Comparable { return true; } + public final boolean canRemoveCounters(final CounterType type) { + if (!isInGame()) { + return false; + } + // no RE affecting players currently, skip check for performance + return true; + } + @Override public void addCounterInternal(final CounterType counterType, final int n, final Player source, final boolean fireEvents, GameEntityCounterTable table, Map params) { int addAmount = n; @@ -896,12 +904,12 @@ public class Player extends GameEntity implements Comparable { } @Override - public void subtractCounter(CounterType counterName, int num, final Player remover) { + public int subtractCounter(CounterType counterName, int num, final Player remover) { int oldValue = getCounters(counterName); int newValue = Math.max(oldValue - num, 0); final int delta = oldValue - newValue; - if (delta == 0) { return; } + if (delta == 0) { return 0; } setCounters(counterName, newValue, null, true); @@ -917,6 +925,7 @@ public class Player extends GameEntity implements Comparable { getGame().getTriggerHandler().runTrigger(TriggerType.CounterRemoved, runParams, false); } */ + return delta; } public final void clearCounters() { diff --git a/forge-gui-android/AndroidManifest.xml b/forge-gui-android/AndroidManifest.xml index b493a8c32d9..68a2032f74a 100644 --- a/forge-gui-android/AndroidManifest.xml +++ b/forge-gui-android/AndroidManifest.xml @@ -1,8 +1,8 @@ + android:versionCode="106660000" + android:versionName="1.6.66" > jar -Xms1024m -Xmx1536m - 1.6.65-SNAPSHOT + 1.6.66-SNAPSHOT keystore alias storepass @@ -20,7 +20,7 @@ forge forge - 1.6.65-SNAPSHOT + 1.6.66-SNAPSHOT forge-gui-android diff --git a/forge-gui-desktop/pom.xml b/forge-gui-desktop/pom.xml index a4d1522a3e7..5ac539ecf78 100644 --- a/forge-gui-desktop/pom.xml +++ b/forge-gui-desktop/pom.xml @@ -4,7 +4,7 @@ forge forge - 1.6.65-SNAPSHOT + 1.6.66-SNAPSHOT forge-gui-desktop @@ -118,7 +118,7 @@ - forge-1.6.64 + forge-1.6.65 ../forge-gui/release-files/CHANGES.txt forge forge - 1.6.65-SNAPSHOT + 1.6.66-SNAPSHOT forge-gui-ios diff --git a/forge-gui-mobile-dev/pom.xml b/forge-gui-mobile-dev/pom.xml index 97bcf1d68bb..362dfd6860f 100644 --- a/forge-gui-mobile-dev/pom.xml +++ b/forge-gui-mobile-dev/pom.xml @@ -4,7 +4,7 @@ forge forge - 1.6.65-SNAPSHOT + 1.6.66-SNAPSHOT forge-gui-mobile-dev diff --git a/forge-gui-mobile/pom.xml b/forge-gui-mobile/pom.xml index 6a177762936..52bb5266678 100644 --- a/forge-gui-mobile/pom.xml +++ b/forge-gui-mobile/pom.xml @@ -4,7 +4,7 @@ forge forge - 1.6.65-SNAPSHOT + 1.6.66-SNAPSHOT forge-gui-mobile diff --git a/forge-gui-mobile/src/forge/Forge.java b/forge-gui-mobile/src/forge/Forge.java index dae2e3edef2..9d2c72c5848 100644 --- a/forge-gui-mobile/src/forge/Forge.java +++ b/forge-gui-mobile/src/forge/Forge.java @@ -1,11 +1,7 @@ package forge; -import com.badlogic.gdx.Application; -import com.badlogic.gdx.ApplicationListener; -import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.*; import com.badlogic.gdx.Input.Keys; -import com.badlogic.gdx.Input; -import com.badlogic.gdx.InputProcessor; import com.badlogic.gdx.controllers.Controller; import com.badlogic.gdx.controllers.ControllerAdapter; import com.badlogic.gdx.controllers.ControllerListener; @@ -54,7 +50,7 @@ import java.nio.file.Paths; import java.util.*; public class Forge implements ApplicationListener { - public static final String CURRENT_VERSION = "1.6.65-SNAPSHOT"; + public static final String CURRENT_VERSION = "1.6.66-SNAPSHOT"; private static ApplicationListener app = null; static Scene currentScene = null; diff --git a/forge-gui/pom.xml b/forge-gui/pom.xml index 50a9263501f..9fd725c3278 100644 --- a/forge-gui/pom.xml +++ b/forge-gui/pom.xml @@ -4,7 +4,7 @@ forge forge - 1.6.65-SNAPSHOT + 1.6.66-SNAPSHOT forge-gui diff --git a/forge-gui/res/cardsfolder/upcoming/a_premonition_of_your_demise.txt b/forge-gui/res/cardsfolder/a/a_premonition_of_your_demise.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/a_premonition_of_your_demise.txt rename to forge-gui/res/cardsfolder/a/a_premonition_of_your_demise.txt diff --git a/forge-gui/res/cardsfolder/upcoming/abandoned_campground.txt b/forge-gui/res/cardsfolder/a/abandoned_campground.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/abandoned_campground.txt rename to forge-gui/res/cardsfolder/a/abandoned_campground.txt diff --git a/forge-gui/res/cardsfolder/upcoming/abhorrent_oculus.txt b/forge-gui/res/cardsfolder/a/abhorrent_oculus.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/abhorrent_oculus.txt rename to forge-gui/res/cardsfolder/a/abhorrent_oculus.txt diff --git a/forge-gui/res/cardsfolder/upcoming/acrobatic_cheerleader.txt b/forge-gui/res/cardsfolder/a/acrobatic_cheerleader.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/acrobatic_cheerleader.txt rename to forge-gui/res/cardsfolder/a/acrobatic_cheerleader.txt diff --git a/forge-gui/res/cardsfolder/upcoming/altanak_the_thrice_called.txt b/forge-gui/res/cardsfolder/a/altanak_the_thrice_called.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/altanak_the_thrice_called.txt rename to forge-gui/res/cardsfolder/a/altanak_the_thrice_called.txt diff --git a/forge-gui/res/cardsfolder/upcoming/aminatou_veil_piercer.txt b/forge-gui/res/cardsfolder/a/aminatou_veil_piercer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/aminatou_veil_piercer.txt rename to forge-gui/res/cardsfolder/a/aminatou_veil_piercer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ancient_cellarspawn.txt b/forge-gui/res/cardsfolder/a/ancient_cellarspawn.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ancient_cellarspawn.txt rename to forge-gui/res/cardsfolder/a/ancient_cellarspawn.txt diff --git a/forge-gui/res/cardsfolder/upcoming/anthropede.txt b/forge-gui/res/cardsfolder/a/anthropede.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/anthropede.txt rename to forge-gui/res/cardsfolder/a/anthropede.txt diff --git a/forge-gui/res/cardsfolder/upcoming/appendage_amalgam.txt b/forge-gui/res/cardsfolder/a/appendage_amalgam.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/appendage_amalgam.txt rename to forge-gui/res/cardsfolder/a/appendage_amalgam.txt diff --git a/forge-gui/res/cardsfolder/upcoming/arabella_abandoned_doll.txt b/forge-gui/res/cardsfolder/a/arabella_abandoned_doll.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/arabella_abandoned_doll.txt rename to forge-gui/res/cardsfolder/a/arabella_abandoned_doll.txt diff --git a/forge-gui/res/cardsfolder/a/ardent_dustspeaker.txt b/forge-gui/res/cardsfolder/a/ardent_dustspeaker.txt index bdd23d331d9..d6c7dac808f 100644 --- a/forge-gui/res/cardsfolder/a/ardent_dustspeaker.txt +++ b/forge-gui/res/cardsfolder/a/ardent_dustspeaker.txt @@ -3,7 +3,7 @@ ManaCost:4 R Types:Creature Minotaur Shaman PT:3/4 T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ ABImpulse | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME attacks, you may put an instant or sorcery card from your graveyard on the bottom of your library. If you do, exile the top two cards of your library. You may play those cards this turn. -SVar:ABImpulse:AB$ Dig | Cost$ PutCardToLibFromGrave<1/-1/Sorcery;Instant> | Defined$ You | DigNum$ 2 | ChangeNum$ All | DestinationZone$ Exile | SubAbility$ DBEffect | RememberChanged$ True | SubAbility$ DBEffect | SpellDescription$ Exile the top two cards of your library. You may play those cards this turn. +SVar:ABImpulse:AB$ Dig | Cost$ PutCardToLibFromGrave<1/-1/Sorcery;Instant> | Defined$ You | DigNum$ 2 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBEffect | SpellDescription$ Exile the top two cards of your library. You may play those cards this turn. SVar:DBEffect:DB$ Effect | RememberObjects$ RememberedCard | StaticAbilities$ Play | SubAbility$ DBCleanup | ForgetOnMoved$ Exile SVar:Play:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ You may play the exiled cards this turn. SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True diff --git a/forge-gui/res/cardsfolder/a/arni_metalbrow.txt b/forge-gui/res/cardsfolder/a/arni_metalbrow.txt index 120e098a13a..5ecd15d22a2 100644 --- a/forge-gui/res/cardsfolder/a/arni_metalbrow.txt +++ b/forge-gui/res/cardsfolder/a/arni_metalbrow.txt @@ -4,8 +4,8 @@ Types:Legendary Creature Human Berserker PT:3/3 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.YouCtrl+attacking | TriggerZones$ Battlefield | Execute$ TrigChangeZoneBis | TriggerDescription$ Whenever a creature you control attacks or a creature you control enters 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 | TriggerZones$ Battlefield | Execute$ TrigChangeZone | Secondary$ True | TriggerDescription$ Whenever a creature you control attacks or a creature you control enters 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:TrigChangeZone:AB$ ChangeZone | Cost$ 1 R | Origin$ Hand | Destination$ Battlefield | ChangeType$ Creature.cmcLTX+YouCtrl | ChangeNum$ 1 | Tapped$ True | Attacking$ True +SVar:TrigChangeZoneBis:AB$ ChangeZone | Cost$ 1 R | Origin$ Hand | 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 you control enters 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. diff --git a/forge-gui/res/cardsfolder/upcoming/attack_in_the_box.txt b/forge-gui/res/cardsfolder/a/attack_in_the_box.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/attack_in_the_box.txt rename to forge-gui/res/cardsfolder/a/attack_in_the_box.txt diff --git a/forge-gui/res/cardsfolder/upcoming/balemurk_leech.txt b/forge-gui/res/cardsfolder/b/balemurk_leech.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/balemurk_leech.txt rename to forge-gui/res/cardsfolder/b/balemurk_leech.txt diff --git a/forge-gui/res/cardsfolder/upcoming/balustrade_wurm.txt b/forge-gui/res/cardsfolder/b/balustrade_wurm.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/balustrade_wurm.txt rename to forge-gui/res/cardsfolder/b/balustrade_wurm.txt diff --git a/forge-gui/res/cardsfolder/upcoming/barbflare_gremlin.txt b/forge-gui/res/cardsfolder/b/barbflare_gremlin.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/barbflare_gremlin.txt rename to forge-gui/res/cardsfolder/b/barbflare_gremlin.txt diff --git a/forge-gui/res/cardsfolder/upcoming/baseball_bat.txt b/forge-gui/res/cardsfolder/b/baseball_bat.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/baseball_bat.txt rename to forge-gui/res/cardsfolder/b/baseball_bat.txt diff --git a/forge-gui/res/cardsfolder/upcoming/bashful_beastie.txt b/forge-gui/res/cardsfolder/b/bashful_beastie.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/bashful_beastie.txt rename to forge-gui/res/cardsfolder/b/bashful_beastie.txt diff --git a/forge-gui/res/cardsfolder/upcoming/bear_trap.txt b/forge-gui/res/cardsfolder/b/bear_trap.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/bear_trap.txt rename to forge-gui/res/cardsfolder/b/bear_trap.txt diff --git a/forge-gui/res/cardsfolder/upcoming/beastie_beatdown.txt b/forge-gui/res/cardsfolder/b/beastie_beatdown.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/beastie_beatdown.txt rename to forge-gui/res/cardsfolder/b/beastie_beatdown.txt diff --git a/forge-gui/res/cardsfolder/upcoming/bedhead_beastie.txt b/forge-gui/res/cardsfolder/b/bedhead_beastie.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/bedhead_beastie.txt rename to forge-gui/res/cardsfolder/b/bedhead_beastie.txt diff --git a/forge-gui/res/cardsfolder/b/belligerent_whiptail.txt b/forge-gui/res/cardsfolder/b/belligerent_whiptail.txt index c63cb7c4868..c7a9e238321 100644 --- a/forge-gui/res/cardsfolder/b/belligerent_whiptail.txt +++ b/forge-gui/res/cardsfolder/b/belligerent_whiptail.txt @@ -3,6 +3,6 @@ ManaCost:3 R Types:Creature Wurm PT:4/2 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Land.YouCtrl | Execute$ TrigPump | TriggerZones$ Battlefield | TriggerDescription$ Landfall — Whenever a land you control enters, CARDNAME gains first strike until end of turn. -SVar:TrigPump:DB$ Pump | Defined$ Self | KW$ First Strike | Defined$ Self +SVar:TrigPump:DB$ Pump | Defined$ Self | KW$ First Strike SVar:BuffedBy:Land Oracle:Landfall — Whenever a land you control enters, Belligerent Whiptail gains first strike until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/betrayers_bargain.txt b/forge-gui/res/cardsfolder/b/betrayers_bargain.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/betrayers_bargain.txt rename to forge-gui/res/cardsfolder/b/betrayers_bargain.txt diff --git a/forge-gui/res/cardsfolder/upcoming/blazemire_verge.txt b/forge-gui/res/cardsfolder/b/blazemire_verge.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/blazemire_verge.txt rename to forge-gui/res/cardsfolder/b/blazemire_verge.txt diff --git a/forge-gui/res/cardsfolder/upcoming/bleeding_woods.txt b/forge-gui/res/cardsfolder/b/bleeding_woods.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/bleeding_woods.txt rename to forge-gui/res/cardsfolder/b/bleeding_woods.txt diff --git a/forge-gui/res/cardsfolder/b/blight_herder.txt b/forge-gui/res/cardsfolder/b/blight_herder.txt index 6ace632c508..92ca2444ba3 100644 --- a/forge-gui/res/cardsfolder/b/blight_herder.txt +++ b/forge-gui/res/cardsfolder/b/blight_herder.txt @@ -2,7 +2,7 @@ Name:Blight Herder ManaCost:5 Types:Creature Eldrazi Processor PT:4/5 -T:Mode$ SpellCast | ValidCard$ Card.Self | OptionalDecider$ You | Execute$ TrigToken | OptionalDecider$ You | TriggerDescription$ When you cast this spell, you may put two cards your opponents own from exile into their owners' graveyards. If you do, create three 1/1 colorless Eldrazi Scion creature tokens. They have "Sacrifice this creature: Add {C}." +T:Mode$ SpellCast | ValidCard$ Card.Self | Execute$ TrigToken | OptionalDecider$ You | TriggerDescription$ When you cast this spell, you may put two cards your opponents own from exile into their owners' graveyards. If you do, create three 1/1 colorless Eldrazi Scion creature tokens. They have "Sacrifice this creature: Add {C}." SVar:TrigToken:AB$ Token | Cost$ ExiledMoveToGrave<2/Card.OppOwn/cards your opponents own> | TokenAmount$ 3 | TokenScript$ c_1_1_eldrazi_scion_sac | TokenOwner$ You DeckHints:Keyword$Ingest & Type$Eldrazi DeckHas:Ability$Mana.Colorless|Token diff --git a/forge-gui/res/cardsfolder/b/bloodroot_apothecary.txt b/forge-gui/res/cardsfolder/b/bloodroot_apothecary.txt index 5f18522f1eb..a95db70102f 100644 --- a/forge-gui/res/cardsfolder/b/bloodroot_apothecary.txt +++ b/forge-gui/res/cardsfolder/b/bloodroot_apothecary.txt @@ -4,7 +4,7 @@ Types:Creature Squirrel Druid PT:3/3 K:Toxic:2 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ WWen CARDNAME enters, you and target opponent each create a Treasure token. -SVar:TrigToken:DB$ Token | TokenAmount$ 1 | ValidTgts$ Opponent | TokenOwner$ TargetedAndYou | TokenAmount$ 1 | TokenScript$ c_a_treasure_sac | SpellDescription$ You and target opponent each create a Food token. +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | ValidTgts$ Opponent | TokenOwner$ TargetedAndYou | TokenScript$ c_a_treasure_sac | SpellDescription$ You and target opponent each create a Food token. T:Mode$ Sacrificed | ValidCard$ Permanent.token+nonCreature | ValidPlayer$ Opponent | Execute$ TrigPoison | TriggerZones$ Battlefield | TriggerDescription$ Whenever an opponent sacrifices a noncreature token, that player gets two poison counters. SVar:TrigPoison:DB$ Poison | Defined$ TriggeredCardController | Num$ 2 Oracle:Toxic 2 (Players dealt combat damage by this creature also get two poison counters. A player with ten or more poison counters loses the game.)\nWhen Bloodroot Apothecary enters, you and target opponent each create a Treasure token.\nWhenever an opponent sacrifices a noncreature token, that player gets two poison counters. diff --git a/forge-gui/res/cardsfolder/upcoming/boilerbilges_ripper.txt b/forge-gui/res/cardsfolder/b/boilerbilges_ripper.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/boilerbilges_ripper.txt rename to forge-gui/res/cardsfolder/b/boilerbilges_ripper.txt diff --git a/forge-gui/res/cardsfolder/upcoming/bottomless_pool_locker_room.txt b/forge-gui/res/cardsfolder/b/bottomless_pool_locker_room.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/bottomless_pool_locker_room.txt rename to forge-gui/res/cardsfolder/b/bottomless_pool_locker_room.txt diff --git a/forge-gui/res/cardsfolder/upcoming/break_down_the_door.txt b/forge-gui/res/cardsfolder/b/break_down_the_door.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/break_down_the_door.txt rename to forge-gui/res/cardsfolder/b/break_down_the_door.txt diff --git a/forge-gui/res/cardsfolder/upcoming/broodspinner.txt b/forge-gui/res/cardsfolder/b/broodspinner.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/broodspinner.txt rename to forge-gui/res/cardsfolder/b/broodspinner.txt diff --git a/forge-gui/res/cardsfolder/b/bull_rush_bruiser.txt b/forge-gui/res/cardsfolder/b/bull_rush_bruiser.txt index 212a3050bcc..19819bafa38 100644 --- a/forge-gui/res/cardsfolder/b/bull_rush_bruiser.txt +++ b/forge-gui/res/cardsfolder/b/bull_rush_bruiser.txt @@ -3,6 +3,6 @@ ManaCost:3 R Types:Creature Minotaur Warrior PT:4/3 T:Mode$ Attacks | ValidCard$ Card.Self | IsPresent$ Warrior.Other+YourTeamCtrl | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ Whenever CARDNAME attacks, if your team controls another Warrior, CARDNAME gains first strike until end of turn. -SVar:TrigPump:DB$ Pump | Defined$ Self | KW$ First Strike | Defined$ Self +SVar:TrigPump:DB$ Pump | Defined$ Self | KW$ First Strike SVar:BuffedBy:Warrior Oracle:Whenever Bull-Rush Bruiser attacks, if your team controls another Warrior, Bull-Rush Bruiser gains first strike until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/cackling_slasher.txt b/forge-gui/res/cardsfolder/c/cackling_slasher.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/cackling_slasher.txt rename to forge-gui/res/cardsfolder/c/cackling_slasher.txt diff --git a/forge-gui/res/cardsfolder/c/canonized_in_blood.txt b/forge-gui/res/cardsfolder/c/canonized_in_blood.txt index ba0342682fa..b40be9a2f5e 100644 --- a/forge-gui/res/cardsfolder/c/canonized_in_blood.txt +++ b/forge-gui/res/cardsfolder/c/canonized_in_blood.txt @@ -3,7 +3,7 @@ ManaCost:1 B Types:Enchantment T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You.descended | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of your end step, if you descended this turn, put a +1/+1 counter on target creature you control. (You descended if a permanent card was put into your graveyard from anywhere.) SVar:TrigPutCounter:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | CounterNum$ 1 | CounterType$ P1P1 -A:AB$ Token | Cost$ 5 B B Sac<1/CARDNAME> | TokenOwner$ You | TokenScript$ wb_4_3_vampire_demon_flying | TokenOwner$ You | SpellDescription$ Create a 4/3 white and black Vampire Demon creature token with flying. +A:AB$ Token | Cost$ 5 B B Sac<1/CARDNAME> | TokenScript$ wb_4_3_vampire_demon_flying | TokenOwner$ You | SpellDescription$ Create a 4/3 white and black Vampire Demon creature token with flying. DeckHas:Ability$Sacrifice|Token|Counters & Type$Vampire|Demon DeckHints:Ability$Mill|Sacrifice Oracle:At the beginning of your end step, if you descended this turn, put a +1/+1 counter on target creature you control. (You descended if a permanent card was put into your graveyard from anywhere.)\n{5}{B}{B}, Sacrifice Canonized in Blood: Create a 4/3 white and black Vampire Demon creature token with flying. diff --git a/forge-gui/res/cardsfolder/upcoming/cathartic_parting.txt b/forge-gui/res/cardsfolder/c/cathartic_parting.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/cathartic_parting.txt rename to forge-gui/res/cardsfolder/c/cathartic_parting.txt diff --git a/forge-gui/res/cardsfolder/upcoming/cautious_survivor.txt b/forge-gui/res/cardsfolder/c/cautious_survivor.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/cautious_survivor.txt rename to forge-gui/res/cardsfolder/c/cautious_survivor.txt diff --git a/forge-gui/res/cardsfolder/upcoming/central_elevator_promising_stairs.txt b/forge-gui/res/cardsfolder/c/central_elevator_promising_stairs.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/central_elevator_promising_stairs.txt rename to forge-gui/res/cardsfolder/c/central_elevator_promising_stairs.txt diff --git a/forge-gui/res/cardsfolder/upcoming/chainsaw.txt b/forge-gui/res/cardsfolder/c/chainsaw.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/chainsaw.txt rename to forge-gui/res/cardsfolder/c/chainsaw.txt diff --git a/forge-gui/res/cardsfolder/upcoming/chaos_is_my_plaything.txt b/forge-gui/res/cardsfolder/c/chaos_is_my_plaything.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/chaos_is_my_plaything.txt rename to forge-gui/res/cardsfolder/c/chaos_is_my_plaything.txt diff --git a/forge-gui/res/cardsfolder/upcoming/charred_foyer_warped_space.txt b/forge-gui/res/cardsfolder/c/charred_foyer_warped_space.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/charred_foyer_warped_space.txt rename to forge-gui/res/cardsfolder/c/charred_foyer_warped_space.txt diff --git a/forge-gui/res/cardsfolder/upcoming/clammy_prowler.txt b/forge-gui/res/cardsfolder/c/clammy_prowler.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/clammy_prowler.txt rename to forge-gui/res/cardsfolder/c/clammy_prowler.txt diff --git a/forge-gui/res/cardsfolder/upcoming/clockwork_percussionist.txt b/forge-gui/res/cardsfolder/c/clockwork_percussionist.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/clockwork_percussionist.txt rename to forge-gui/res/cardsfolder/c/clockwork_percussionist.txt diff --git a/forge-gui/res/cardsfolder/upcoming/come_back_wrong.txt b/forge-gui/res/cardsfolder/c/come_back_wrong.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/come_back_wrong.txt rename to forge-gui/res/cardsfolder/c/come_back_wrong.txt diff --git a/forge-gui/res/cardsfolder/upcoming/commune_with_evil.txt b/forge-gui/res/cardsfolder/c/commune_with_evil.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/commune_with_evil.txt rename to forge-gui/res/cardsfolder/c/commune_with_evil.txt diff --git a/forge-gui/res/cardsfolder/upcoming/conductive_machete.txt b/forge-gui/res/cardsfolder/c/conductive_machete.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/conductive_machete.txt rename to forge-gui/res/cardsfolder/c/conductive_machete.txt diff --git a/forge-gui/res/cardsfolder/upcoming/convert_to_slime.txt b/forge-gui/res/cardsfolder/c/convert_to_slime.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/convert_to_slime.txt rename to forge-gui/res/cardsfolder/c/convert_to_slime.txt diff --git a/forge-gui/res/cardsfolder/upcoming/coordinated_clobbering.txt b/forge-gui/res/cardsfolder/c/coordinated_clobbering.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/coordinated_clobbering.txt rename to forge-gui/res/cardsfolder/c/coordinated_clobbering.txt diff --git a/forge-gui/res/cardsfolder/upcoming/cracked_skull.txt b/forge-gui/res/cardsfolder/c/cracked_skull.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/cracked_skull.txt rename to forge-gui/res/cardsfolder/c/cracked_skull.txt diff --git a/forge-gui/res/cardsfolder/upcoming/cramped_vents_access_room.txt b/forge-gui/res/cardsfolder/c/cramped_vents_access_room.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/cramped_vents_access_room.txt rename to forge-gui/res/cardsfolder/c/cramped_vents_access_room.txt diff --git a/forge-gui/res/cardsfolder/upcoming/creeping_peeper.txt b/forge-gui/res/cardsfolder/c/creeping_peeper.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/creeping_peeper.txt rename to forge-gui/res/cardsfolder/c/creeping_peeper.txt diff --git a/forge-gui/res/cardsfolder/upcoming/cryptid_inspector.txt b/forge-gui/res/cardsfolder/c/cryptid_inspector.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/cryptid_inspector.txt rename to forge-gui/res/cardsfolder/c/cryptid_inspector.txt diff --git a/forge-gui/res/cardsfolder/upcoming/cult_healer.txt b/forge-gui/res/cardsfolder/c/cult_healer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/cult_healer.txt rename to forge-gui/res/cardsfolder/c/cult_healer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/curator_beastie.txt b/forge-gui/res/cardsfolder/c/curator_beastie.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/curator_beastie.txt rename to forge-gui/res/cardsfolder/c/curator_beastie.txt diff --git a/forge-gui/res/cardsfolder/upcoming/cursed_recording.txt b/forge-gui/res/cardsfolder/c/cursed_recording.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/cursed_recording.txt rename to forge-gui/res/cardsfolder/c/cursed_recording.txt diff --git a/forge-gui/res/cardsfolder/upcoming/cursed_windbreaker.txt b/forge-gui/res/cardsfolder/c/cursed_windbreaker.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/cursed_windbreaker.txt rename to forge-gui/res/cardsfolder/c/cursed_windbreaker.txt diff --git a/forge-gui/res/cardsfolder/upcoming/cynical_loner.txt b/forge-gui/res/cardsfolder/c/cynical_loner.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/cynical_loner.txt rename to forge-gui/res/cardsfolder/c/cynical_loner.txt diff --git a/forge-gui/res/cardsfolder/upcoming/daggermaw_megalodon.txt b/forge-gui/res/cardsfolder/d/daggermaw_megalodon.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/daggermaw_megalodon.txt rename to forge-gui/res/cardsfolder/d/daggermaw_megalodon.txt diff --git a/forge-gui/res/cardsfolder/upcoming/dark_wings_bring_your_downfall.txt b/forge-gui/res/cardsfolder/d/dark_wings_bring_your_downfall.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/dark_wings_bring_your_downfall.txt rename to forge-gui/res/cardsfolder/d/dark_wings_bring_your_downfall.txt diff --git a/forge-gui/res/cardsfolder/upcoming/dashing_bloodsucker.txt b/forge-gui/res/cardsfolder/d/dashing_bloodsucker.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/dashing_bloodsucker.txt rename to forge-gui/res/cardsfolder/d/dashing_bloodsucker.txt diff --git a/forge-gui/res/cardsfolder/upcoming/dazzling_theater_prop_room.txt b/forge-gui/res/cardsfolder/d/dazzling_theater_prop_room.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/dazzling_theater_prop_room.txt rename to forge-gui/res/cardsfolder/d/dazzling_theater_prop_room.txt diff --git a/forge-gui/res/cardsfolder/upcoming/defiant_survivor.txt b/forge-gui/res/cardsfolder/d/defiant_survivor.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/defiant_survivor.txt rename to forge-gui/res/cardsfolder/d/defiant_survivor.txt diff --git a/forge-gui/res/cardsfolder/upcoming/defiled_crypt_cadaver_lab.txt b/forge-gui/res/cardsfolder/d/defiled_crypt_cadaver_lab.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/defiled_crypt_cadaver_lab.txt rename to forge-gui/res/cardsfolder/d/defiled_crypt_cadaver_lab.txt diff --git a/forge-gui/res/cardsfolder/upcoming/deluge_of_doom.txt b/forge-gui/res/cardsfolder/d/deluge_of_doom.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/deluge_of_doom.txt rename to forge-gui/res/cardsfolder/d/deluge_of_doom.txt diff --git a/forge-gui/res/cardsfolder/upcoming/demolisher_spawn.txt b/forge-gui/res/cardsfolder/d/demolisher_spawn.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/demolisher_spawn.txt rename to forge-gui/res/cardsfolder/d/demolisher_spawn.txt diff --git a/forge-gui/res/cardsfolder/upcoming/demonic_counsel.txt b/forge-gui/res/cardsfolder/d/demonic_counsel.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/demonic_counsel.txt rename to forge-gui/res/cardsfolder/d/demonic_counsel.txt diff --git a/forge-gui/res/cardsfolder/upcoming/demonic_covenant.txt b/forge-gui/res/cardsfolder/d/demonic_covenant.txt similarity index 97% rename from forge-gui/res/cardsfolder/upcoming/demonic_covenant.txt rename to forge-gui/res/cardsfolder/d/demonic_covenant.txt index 36e9729e563..42e434af31d 100644 --- a/forge-gui/res/cardsfolder/upcoming/demonic_covenant.txt +++ b/forge-gui/res/cardsfolder/d/demonic_covenant.txt @@ -7,7 +7,7 @@ SVar:DBLoseLife:DB$ LoseLife | LifeAmount$ 1 T:Mode$ Phase | Phase$ End of Turn | TriggerZones$ Battlefield | Execute$ TrigCreateAndMill | TriggerDescription$ At the beginning of your end step, create a 5/5 black Demon creature token with flying, then mill two cards. If two cards that share all their card types were milled this way, sacrifice CARDNAME. SVar:TrigCreateAndMill:DB$ Token | TokenAmount$ 1 | TokenScript$ b_5_5_demon_flying | TokenOwner$ You | SubAbility$ DBMill SVar:DBMill:DB$ Mill | NumCards$ 2 | RememberMilled$ True | ShowMilledCards$ True | SubAbility$ DBSacrifice -SVar:DBSacrifice:DB$ Sacrifice | SacValid$ Self | ShowSacrificedCards$ True | ConditionCheckSVar$ MilledSharesAllTypes | ConditionSVarCompare$ GE2 | SubAbility$ Cleanup +SVar:DBSacrifice:DB$ Sacrifice | SacValid$ Self | ShowSacrificedCards$ True | ConditionCheckSVar$ MilledSharesAllTypes | ConditionSVarCompare$ GE2 | SubAbility$ DBCleanup SVar:MilledSharesAllTypes:Remembered$Valid Card.sharesAllCardTypesWithOther Remembered SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True DeckHas:Ability$Token|Mill|Sacrifice diff --git a/forge-gui/res/cardsfolder/upcoming/derelict_attic_widows_walk.txt b/forge-gui/res/cardsfolder/d/derelict_attic_widows_walk.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/derelict_attic_widows_walk.txt rename to forge-gui/res/cardsfolder/d/derelict_attic_widows_walk.txt diff --git a/forge-gui/res/cardsfolder/upcoming/disorienting_choice.txt b/forge-gui/res/cardsfolder/d/disorienting_choice.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/disorienting_choice.txt rename to forge-gui/res/cardsfolder/d/disorienting_choice.txt diff --git a/forge-gui/res/cardsfolder/upcoming/dissection_tools.txt b/forge-gui/res/cardsfolder/d/dissection_tools.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/dissection_tools.txt rename to forge-gui/res/cardsfolder/d/dissection_tools.txt diff --git a/forge-gui/res/cardsfolder/upcoming/disturbing_mirth.txt b/forge-gui/res/cardsfolder/d/disturbing_mirth.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/disturbing_mirth.txt rename to forge-gui/res/cardsfolder/d/disturbing_mirth.txt diff --git a/forge-gui/res/cardsfolder/upcoming/diversion_specialist.txt b/forge-gui/res/cardsfolder/d/diversion_specialist.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/diversion_specialist.txt rename to forge-gui/res/cardsfolder/d/diversion_specialist.txt diff --git a/forge-gui/res/cardsfolder/upcoming/dollmakers_shop_porcelain_gallery.txt b/forge-gui/res/cardsfolder/d/dollmakers_shop_porcelain_gallery.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/dollmakers_shop_porcelain_gallery.txt rename to forge-gui/res/cardsfolder/d/dollmakers_shop_porcelain_gallery.txt diff --git a/forge-gui/res/cardsfolder/upcoming/dont_make_a_sound.txt b/forge-gui/res/cardsfolder/d/dont_make_a_sound.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/dont_make_a_sound.txt rename to forge-gui/res/cardsfolder/d/dont_make_a_sound.txt diff --git a/forge-gui/res/cardsfolder/upcoming/doomsday_excruciator.txt b/forge-gui/res/cardsfolder/d/doomsday_excruciator.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/doomsday_excruciator.txt rename to forge-gui/res/cardsfolder/d/doomsday_excruciator.txt diff --git a/forge-gui/res/cardsfolder/d/down_for_repairs.txt b/forge-gui/res/cardsfolder/d/down_for_repairs.txt index bf049af5c29..e0f2e3fb75d 100644 --- a/forge-gui/res/cardsfolder/d/down_for_repairs.txt +++ b/forge-gui/res/cardsfolder/d/down_for_repairs.txt @@ -2,5 +2,5 @@ Name:Down for Repairs ManaCost:2 B Types:Sorcery A:SP$ Discard | ValidTgts$ Player | NumCards$ 1 | DiscardValid$ Card.nonLand | Mode$ RevealYouChoose | SubAbility$ DBDestroy | SpellDescription$ Target opponent reveals their hand. You choose a nonland card from it. That player discards that card. Destroy up to one target Attraction that player controls. (It's put into their junkyard.) -SVar:DBDestroy:DB$ Destroy | TgtPrompt$ Select up to one target attraction that player controls | TgtPrompt$ Attraction.TargetedPlayerCtrl | TargetMin$ 0 | TargetMax$ 1 +SVar:DBDestroy:DB$ Destroy | TgtPrompt$ Select up to one target attraction that player controls | ValidTgts$ Attraction.TargetedPlayerCtrl | TargetMin$ 0 | TargetMax$ 1 Oracle:Target opponent reveals their hand. You choose a nonland card from it. That player discards that card. Destroy up to one target Attraction that player controls. (It's put into their junkyard.) diff --git a/forge-gui/res/cardsfolder/upcoming/drag_to_the_roots.txt b/forge-gui/res/cardsfolder/d/drag_to_the_roots.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/drag_to_the_roots.txt rename to forge-gui/res/cardsfolder/d/drag_to_the_roots.txt diff --git a/forge-gui/res/cardsfolder/upcoming/duskmourns_domination.txt b/forge-gui/res/cardsfolder/d/duskmourns_domination.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/duskmourns_domination.txt rename to forge-gui/res/cardsfolder/d/duskmourns_domination.txt diff --git a/forge-gui/res/cardsfolder/upcoming/emerge_from_the_cocoon.txt b/forge-gui/res/cardsfolder/e/emerge_from_the_cocoon.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/emerge_from_the_cocoon.txt rename to forge-gui/res/cardsfolder/e/emerge_from_the_cocoon.txt diff --git a/forge-gui/res/cardsfolder/upcoming/enduring_courage.txt b/forge-gui/res/cardsfolder/e/enduring_courage.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/enduring_courage.txt rename to forge-gui/res/cardsfolder/e/enduring_courage.txt diff --git a/forge-gui/res/cardsfolder/upcoming/enduring_curiosity.txt b/forge-gui/res/cardsfolder/e/enduring_curiosity.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/enduring_curiosity.txt rename to forge-gui/res/cardsfolder/e/enduring_curiosity.txt diff --git a/forge-gui/res/cardsfolder/upcoming/enduring_innocence.txt b/forge-gui/res/cardsfolder/e/enduring_innocence.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/enduring_innocence.txt rename to forge-gui/res/cardsfolder/e/enduring_innocence.txt diff --git a/forge-gui/res/cardsfolder/upcoming/enduring_tenacity.txt b/forge-gui/res/cardsfolder/e/enduring_tenacity.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/enduring_tenacity.txt rename to forge-gui/res/cardsfolder/e/enduring_tenacity.txt diff --git a/forge-gui/res/cardsfolder/upcoming/enduring_vitality.txt b/forge-gui/res/cardsfolder/e/enduring_vitality.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/enduring_vitality.txt rename to forge-gui/res/cardsfolder/e/enduring_vitality.txt diff --git a/forge-gui/res/cardsfolder/upcoming/enter_the_enigma.txt b/forge-gui/res/cardsfolder/e/enter_the_enigma.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/enter_the_enigma.txt rename to forge-gui/res/cardsfolder/e/enter_the_enigma.txt diff --git a/forge-gui/res/cardsfolder/upcoming/entity_tracker.txt b/forge-gui/res/cardsfolder/e/entity_tracker.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/entity_tracker.txt rename to forge-gui/res/cardsfolder/e/entity_tracker.txt diff --git a/forge-gui/res/cardsfolder/upcoming/erratic_apparition.txt b/forge-gui/res/cardsfolder/e/erratic_apparition.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/erratic_apparition.txt rename to forge-gui/res/cardsfolder/e/erratic_apparition.txt diff --git a/forge-gui/res/cardsfolder/upcoming/etched_cornfield.txt b/forge-gui/res/cardsfolder/e/etched_cornfield.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/etched_cornfield.txt rename to forge-gui/res/cardsfolder/e/etched_cornfield.txt diff --git a/forge-gui/res/cardsfolder/upcoming/exorcise.txt b/forge-gui/res/cardsfolder/e/exorcise.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/exorcise.txt rename to forge-gui/res/cardsfolder/e/exorcise.txt diff --git a/forge-gui/res/cardsfolder/e/experimental_lab_staff_room.txt b/forge-gui/res/cardsfolder/e/experimental_lab_staff_room.txt new file mode 100644 index 00000000000..05e81708bcd --- /dev/null +++ b/forge-gui/res/cardsfolder/e/experimental_lab_staff_room.txt @@ -0,0 +1,20 @@ +Name:Experimental Lab +ManaCost:3 G +Types:Enchantment Room +T:Mode$ UnlockDoor | ValidPlayer$ You | ValidCard$ Card.Self | ThisDoor$ True | Execute$ TrigManifest | TriggerDescription$ When you unlock this door, manifest dread, then put two +1/+1 counters and a trample counter on that creature. +SVar:TrigManifest:DB$ ManifestDread | Amount$ 1 | RememberManifested$ True | SubAbility$ DBPutCounters +SVar:DBPutCounters:DB$ PutCounterAll | ValidCards$ Card.IsRemembered | CounterType$ P1P1 | CounterNum$ 2 | CounterType2$ Trample | CounterNum2$ 1 | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +AlternateMode:Split +Oracle:(You may cast either half. That door unlocks on the battlefield. As a sorcery, you may pay the mana cost of a locked door to unlock it.)\nWhen you unlock this door, manifest dread, then put two +1/+1 counters and a trample counter on that creature. + +ALTERNATE + +Name:Staff Room +ManaCost:2 G +Types:Enchantment Room +T:Mode$ DamageDone | ValidSource$ Creature.YouCtrl | ValidTgts$ Player | CombatDamage$ True | TriggerZones$ Battlefield | Execute$ TrigChoose | TriggerDescription$ Whenever a creature you control deals combat damage to a player, turn that creature face up or put a +1/+1 counter on it. +SVar:TrigChoose:DB$ GenericChoice | Choices$ DBPutCounter,DBTurnFaceUp +SVar:DBTurnFaceUp:DB$ SetState | Defined$ TriggeredSourceLKICopy | Mode$ TurnFaceUp | IsPresent$ Card.canBeTurnedFaceUp+faceDown | PresentDefined$ TriggeredSourceLKICopy | SpellDescription$ Turn it face up +SVar:DBPutCounter:DB$ PutCounter | Defined$ TriggeredSourceLKICopy | CounterType$ P1P1 | CounterNum$ 1 | IsPresent$ Card.canReceiveCounters P1P1 | PresentDefined$ TriggeredSourceLKICopy | SpellDescription$ Put a +1/+1 counter on it +Oracle:(You may cast either half. That door unlocks on the battlefield. As a sorcery, you may pay the mana cost of a locked door to unlock it.)\nWhenever a creature you control deals combat damage to a player, turn that creature face up or put a +1/+1 counter on it. diff --git a/forge-gui/res/cardsfolder/upcoming/fanatic_of_the_harrowing.txt b/forge-gui/res/cardsfolder/f/fanatic_of_the_harrowing.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/fanatic_of_the_harrowing.txt rename to forge-gui/res/cardsfolder/f/fanatic_of_the_harrowing.txt diff --git a/forge-gui/res/cardsfolder/upcoming/fear_my_authority.txt b/forge-gui/res/cardsfolder/f/fear_my_authority.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/fear_my_authority.txt rename to forge-gui/res/cardsfolder/f/fear_my_authority.txt diff --git a/forge-gui/res/cardsfolder/upcoming/fear_of_abduction.txt b/forge-gui/res/cardsfolder/f/fear_of_abduction.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/fear_of_abduction.txt rename to forge-gui/res/cardsfolder/f/fear_of_abduction.txt diff --git a/forge-gui/res/cardsfolder/upcoming/fear_of_being_hunted.txt b/forge-gui/res/cardsfolder/f/fear_of_being_hunted.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/fear_of_being_hunted.txt rename to forge-gui/res/cardsfolder/f/fear_of_being_hunted.txt diff --git a/forge-gui/res/cardsfolder/upcoming/fear_of_burning_alive.txt b/forge-gui/res/cardsfolder/f/fear_of_burning_alive.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/fear_of_burning_alive.txt rename to forge-gui/res/cardsfolder/f/fear_of_burning_alive.txt diff --git a/forge-gui/res/cardsfolder/upcoming/fear_of_exposure.txt b/forge-gui/res/cardsfolder/f/fear_of_exposure.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/fear_of_exposure.txt rename to forge-gui/res/cardsfolder/f/fear_of_exposure.txt diff --git a/forge-gui/res/cardsfolder/upcoming/fear_of_failed_tests.txt b/forge-gui/res/cardsfolder/f/fear_of_failed_tests.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/fear_of_failed_tests.txt rename to forge-gui/res/cardsfolder/f/fear_of_failed_tests.txt diff --git a/forge-gui/res/cardsfolder/upcoming/fear_of_falling.txt b/forge-gui/res/cardsfolder/f/fear_of_falling.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/fear_of_falling.txt rename to forge-gui/res/cardsfolder/f/fear_of_falling.txt diff --git a/forge-gui/res/cardsfolder/upcoming/fear_of_immobility.txt b/forge-gui/res/cardsfolder/f/fear_of_immobility.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/fear_of_immobility.txt rename to forge-gui/res/cardsfolder/f/fear_of_immobility.txt diff --git a/forge-gui/res/cardsfolder/upcoming/fear_of_impostors.txt b/forge-gui/res/cardsfolder/f/fear_of_impostors.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/fear_of_impostors.txt rename to forge-gui/res/cardsfolder/f/fear_of_impostors.txt diff --git a/forge-gui/res/cardsfolder/upcoming/fear_of_infinity.txt b/forge-gui/res/cardsfolder/f/fear_of_infinity.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/fear_of_infinity.txt rename to forge-gui/res/cardsfolder/f/fear_of_infinity.txt diff --git a/forge-gui/res/cardsfolder/upcoming/fear_of_isolation.txt b/forge-gui/res/cardsfolder/f/fear_of_isolation.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/fear_of_isolation.txt rename to forge-gui/res/cardsfolder/f/fear_of_isolation.txt diff --git a/forge-gui/res/cardsfolder/upcoming/fear_of_lost_teeth.txt b/forge-gui/res/cardsfolder/f/fear_of_lost_teeth.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/fear_of_lost_teeth.txt rename to forge-gui/res/cardsfolder/f/fear_of_lost_teeth.txt diff --git a/forge-gui/res/cardsfolder/upcoming/fear_of_missing_out.txt b/forge-gui/res/cardsfolder/f/fear_of_missing_out.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/fear_of_missing_out.txt rename to forge-gui/res/cardsfolder/f/fear_of_missing_out.txt diff --git a/forge-gui/res/cardsfolder/f/fear_of_sleep_paralysis.txt b/forge-gui/res/cardsfolder/f/fear_of_sleep_paralysis.txt new file mode 100644 index 00000000000..a750cc23ea3 --- /dev/null +++ b/forge-gui/res/cardsfolder/f/fear_of_sleep_paralysis.txt @@ -0,0 +1,11 @@ +Name:Fear of Sleep Paralysis +ManaCost:5 U +Types:Enchantment Creature Nightmare +PT:6/6 +K:Flying +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self,Enchantment.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigTap | TriggerDescription$ Eerie — Whenever CARDNAME or another enchantment you control enters and whenever you fully unlock a Room, tap up to one target creature and put a stun counter on it. +T:Mode$ FullyUnlock | ValidCard$ Card.Room | ValidPlayer$ You | Secondary$ True | Execute$ TrigTap | TriggerZones$ Battlefield | TriggerDescription$ Eerie — Whenever CARDNAME or another enchantment you control enters and whenever you fully unlock a Room, tap up to one target creature and put a stun counter on it. +SVar:TrigTap:DB$ Tap | ValidTgts$ Creature | TargetMin$ 0 | TargetMax$ 1 | SubAbility$ DBStun +SVar:DBStun:DB$ PutCounter | Defined$ Targeted | CounterType$ Stun | CounterNum$ 1 +R:Event$ RemoveCounter | ActiveZones$ Battlefield | ValidCard$ Permanent.OppCtrl | ValidCounterType$ STUN | Layer$ CantHappen | Description$ Stun counters can't be removed from permanents your opponents control. +Oracle:Flying\nEerie — Whenever Fear of Sleep Paralysis or another enchantment you control enters and whenever you fully unlock a Room, tap up to one target creature and put a stun counter on it.\nStun counters can't be removed from permanents your opponents control. (They won't untap if they have stun counters.) diff --git a/forge-gui/res/cardsfolder/upcoming/fear_of_surveilance.txt b/forge-gui/res/cardsfolder/f/fear_of_surveilance.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/fear_of_surveilance.txt rename to forge-gui/res/cardsfolder/f/fear_of_surveilance.txt diff --git a/forge-gui/res/cardsfolder/upcoming/fear_of_the_dark.txt b/forge-gui/res/cardsfolder/f/fear_of_the_dark.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/fear_of_the_dark.txt rename to forge-gui/res/cardsfolder/f/fear_of_the_dark.txt diff --git a/forge-gui/res/cardsfolder/upcoming/felidar_savior.txt b/forge-gui/res/cardsfolder/f/felidar_savior.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/felidar_savior.txt rename to forge-gui/res/cardsfolder/f/felidar_savior.txt diff --git a/forge-gui/res/cardsfolder/upcoming/final_vengeance.txt b/forge-gui/res/cardsfolder/f/final_vengeance.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/final_vengeance.txt rename to forge-gui/res/cardsfolder/f/final_vengeance.txt diff --git a/forge-gui/res/cardsfolder/f/fledgling_griffin.txt b/forge-gui/res/cardsfolder/f/fledgling_griffin.txt index 956f1f70fd1..1bbddb639fd 100644 --- a/forge-gui/res/cardsfolder/f/fledgling_griffin.txt +++ b/forge-gui/res/cardsfolder/f/fledgling_griffin.txt @@ -3,6 +3,6 @@ ManaCost:1 W Types:Creature Griffin PT:2/2 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Land.YouCtrl | Execute$ TrigPump | TriggerZones$ Battlefield | TriggerDescription$ Landfall — Whenever a land you control enters, CARDNAME gains flying until end of turn. -SVar:TrigPump:DB$ Pump | Defined$ Self | KW$ Flying | Defined$ Self +SVar:TrigPump:DB$ Pump | Defined$ Self | KW$ Flying SVar:BuffedBy:Land Oracle:Landfall — Whenever a land you control enters, Fledgling Griffin gains flying until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/flesh_burrower.txt b/forge-gui/res/cardsfolder/f/flesh_burrower.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/flesh_burrower.txt rename to forge-gui/res/cardsfolder/f/flesh_burrower.txt diff --git a/forge-gui/res/cardsfolder/f/flood_of_tears.txt b/forge-gui/res/cardsfolder/f/flood_of_tears.txt index e821f9257b1..529f31bdafe 100644 --- a/forge-gui/res/cardsfolder/f/flood_of_tears.txt +++ b/forge-gui/res/cardsfolder/f/flood_of_tears.txt @@ -2,6 +2,6 @@ Name:Flood of Tears ManaCost:4 U U Types:Sorcery A:SP$ ChangeZoneAll | ChangeType$ Permanent.nonLand | Origin$ Battlefield | Destination$ Hand | RememberChanged$ True | SubAbility$ DBChangeZone | SpellDescription$ Return all nonland permanents to their owners' hands. If you return four or more nontoken permanents you control this way, you may put a permanent card from your hand onto the battlefield. -SVar:DBChangeZone:DB$ ChangeZone | Optional$ True | Origin$ Hand | Destination$ Battlefield | ChangeType$ Permanent.YouCtrl | Optional$ True | ChangeNum$ 1 | ConditionDefined$ Remembered | ConditionPresent$ Permanent.nonToken+YouCtrl | ConditionCompare$ GE4 | SubAbility$ DBCleanup +SVar:DBChangeZone:DB$ ChangeZone | Origin$ Hand | Destination$ Battlefield | ChangeType$ Permanent.YouCtrl | Optional$ True | ChangeNum$ 1 | ConditionDefined$ Remembered | ConditionPresent$ Permanent.nonToken+YouCtrl | ConditionCompare$ GE4 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True Oracle:Return all nonland permanents to their owners' hands. If you return four or more nontoken permanents you control this way, you may put a permanent card from your hand onto the battlefield. diff --git a/forge-gui/res/cardsfolder/upcoming/floodfarm_verge.txt b/forge-gui/res/cardsfolder/f/floodfarm_verge.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/floodfarm_verge.txt rename to forge-gui/res/cardsfolder/f/floodfarm_verge.txt diff --git a/forge-gui/res/cardsfolder/upcoming/floodpits_drowner.txt b/forge-gui/res/cardsfolder/f/floodpits_drowner.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/floodpits_drowner.txt rename to forge-gui/res/cardsfolder/f/floodpits_drowner.txt diff --git a/forge-gui/res/cardsfolder/f/flotsam_jetsam.txt b/forge-gui/res/cardsfolder/f/flotsam_jetsam.txt index 85040265869..affc9da099f 100644 --- a/forge-gui/res/cardsfolder/f/flotsam_jetsam.txt +++ b/forge-gui/res/cardsfolder/f/flotsam_jetsam.txt @@ -13,7 +13,7 @@ ALTERNATE Name:Jetsam ManaCost:4 UB UB Types:Instant -A:SP$ Mill | Defined$ Opponent | SubAbility$ DBCast | NumCards$ 3 | SubAbility$ DBCast | SpellDescription$ Each opponent mills three cards, then you may cast a spell from each opponent's graveyard without paying its mana cost. If a spell cast this way would be put into a graveyard, exile it instead. +A:SP$ Mill | Defined$ Opponent | NumCards$ 3 | SubAbility$ DBCast | SpellDescription$ Each opponent mills three cards, then you may cast a spell from each opponent's graveyard without paying its mana cost. If a spell cast this way would be put into a graveyard, exile it instead. SVar:DBCast:DB$ RepeatEach | RepeatPlayers$ Opponent | RepeatSubAbility$ DBChoose | SubAbility$ DBPlayAll SVar:DBChoose:DB$ ChooseCard | Choices$ Card.RememberedPlayerCtrl+nonLand | ChoiceZone$ Graveyard | Defined$ You | Amount$ 1 | RememberChosen$ True SVar:DBPlayAll:DB$ Play | Defined$ Remembered | Amount$ All | ValidSA$ Spell | WithoutManaCost$ True | Optional$ True | ReplaceGraveyard$ Exile | AILogic$ ReplaySpell | SubAbility$ DBCleanup diff --git a/forge-gui/res/cardsfolder/upcoming/formless_genesis.txt b/forge-gui/res/cardsfolder/f/formless_genesis.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/formless_genesis.txt rename to forge-gui/res/cardsfolder/f/formless_genesis.txt diff --git a/forge-gui/res/cardsfolder/upcoming/found_footage.txt b/forge-gui/res/cardsfolder/f/found_footage.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/found_footage.txt rename to forge-gui/res/cardsfolder/f/found_footage.txt diff --git a/forge-gui/res/cardsfolder/f/foundry_of_the_consuls.txt b/forge-gui/res/cardsfolder/f/foundry_of_the_consuls.txt index 95ec4ceb5dc..5742f09e08c 100644 --- a/forge-gui/res/cardsfolder/f/foundry_of_the_consuls.txt +++ b/forge-gui/res/cardsfolder/f/foundry_of_the_consuls.txt @@ -2,6 +2,6 @@ Name:Foundry of the Consuls ManaCost:no cost Types:Land A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}. -A:AB$ Token | Cost$ 5 T Sac<1/CARDNAME> | TokenOwner$ You | TokenAmount$ 2 | TokenScript$ c_1_1_a_thopter_flying | TokenOwner$ You | SpellDescription$ Create two 1/1 colorless Thopter artifact creature tokens with flying. +A:AB$ Token | Cost$ 5 T Sac<1/CARDNAME> | TokenOwner$ You | TokenAmount$ 2 | TokenScript$ c_1_1_a_thopter_flying | SpellDescription$ Create two 1/1 colorless Thopter artifact creature tokens with flying. DeckHas:Ability$Mana.Colorless|Token Oracle:{T}: Add {C}.\n{5}, {T}, Sacrifice Foundry of the Consuls: Create two 1/1 colorless Thopter artifact creature tokens with flying. diff --git a/forge-gui/res/cardsfolder/upcoming/frantic_strength.txt b/forge-gui/res/cardsfolder/f/frantic_strength.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/frantic_strength.txt rename to forge-gui/res/cardsfolder/f/frantic_strength.txt diff --git a/forge-gui/res/cardsfolder/upcoming/friendly_ghost.txt b/forge-gui/res/cardsfolder/f/friendly_ghost.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/friendly_ghost.txt rename to forge-gui/res/cardsfolder/f/friendly_ghost.txt diff --git a/forge-gui/res/cardsfolder/upcoming/friendly_teddy.txt b/forge-gui/res/cardsfolder/f/friendly_teddy.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/friendly_teddy.txt rename to forge-gui/res/cardsfolder/f/friendly_teddy.txt diff --git a/forge-gui/res/cardsfolder/f/frostling.txt b/forge-gui/res/cardsfolder/f/frostling.txt index 09d918fd62b..3c4716b2c5c 100644 --- a/forge-gui/res/cardsfolder/f/frostling.txt +++ b/forge-gui/res/cardsfolder/f/frostling.txt @@ -2,5 +2,5 @@ Name:Frostling ManaCost:R Types:Creature Spirit PT:1/1 -A:AB$ DealDamage | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ 1 | TgtPrompt$ Select target creature | SpellDescription$ It deals 1 damage to target creature. +A:AB$ DealDamage | Cost$ Sac<1/CARDNAME> | ValidTgts$ Creature | NumDmg$ 1 | SpellDescription$ It deals 1 damage to target creature. Oracle:Sacrifice Frostling: It deals 1 damage to target creature. diff --git a/forge-gui/res/cardsfolder/upcoming/funeral_room_awakening_hall.txt b/forge-gui/res/cardsfolder/f/funeral_room_awakening_hall.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/funeral_room_awakening_hall.txt rename to forge-gui/res/cardsfolder/f/funeral_room_awakening_hall.txt diff --git a/forge-gui/res/cardsfolder/f/furious_spinesplitter.txt b/forge-gui/res/cardsfolder/f/furious_spinesplitter.txt index b9d77190ffa..a8eac1f3084 100644 --- a/forge-gui/res/cardsfolder/f/furious_spinesplitter.txt +++ b/forge-gui/res/cardsfolder/f/furious_spinesplitter.txt @@ -3,7 +3,7 @@ ManaCost:2 RG RG Types:Creature Ogre Warrior PT:3/3 K:Trample -T:Mode$ Phase | Phase$ End of Turn | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of your end step, put a +1/+1 counter on CARDNAME for each opponent that was dealt damage this turn. +T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ At the beginning of your end step, put a +1/+1 counter on CARDNAME for each opponent that was dealt damage this turn. SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ X SVar:X:PlayerCountRegisteredOpponents$HasPropertywasDealtDamageThisTurn DeckHas:Ability$Counters diff --git a/forge-gui/res/cardsfolder/upcoming/get_out.txt b/forge-gui/res/cardsfolder/g/get_out.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/get_out.txt rename to forge-gui/res/cardsfolder/g/get_out.txt diff --git a/forge-gui/res/cardsfolder/g/ghalta_and_mavren.txt b/forge-gui/res/cardsfolder/g/ghalta_and_mavren.txt index 12e6115b223..d4d694b017f 100644 --- a/forge-gui/res/cardsfolder/g/ghalta_and_mavren.txt +++ b/forge-gui/res/cardsfolder/g/ghalta_and_mavren.txt @@ -5,7 +5,7 @@ PT:12/12 K:Trample T:Mode$ AttackersDeclared | AttackingPlayer$ You | Execute$ TrigCharm | TriggerZones$ Battlefield | TriggerDescription$ Whenever you attack, ABILITY SVar:TrigCharm:DB$ Charm | CharmNum$ 1 | Choices$ DBDino,DBVampire -SVar:DBDino:DB$ Token | TokenAmount$ 1 | TokenOwner$ You | TokenScript$ g_x_x_dinosaur_trample | TokenPower$ X | TokenToughness$ X | TokenTapped$ True | TokenAttacking$ True | TokenOwner$ You | SpellDescription$ Create a tapped and attacking X/X green Dinosaur creature token with trample, where X is the greatest power among other attacking creatures. +SVar:DBDino:DB$ Token | TokenAmount$ 1 | TokenScript$ g_x_x_dinosaur_trample | TokenPower$ X | TokenToughness$ X | TokenTapped$ True | TokenAttacking$ True | TokenOwner$ You | SpellDescription$ Create a tapped and attacking X/X green Dinosaur creature token with trample, where X is the greatest power among other attacking creatures. SVar:DBVampire:DB$ Token | TokenAmount$ Y | TokenScript$ w_1_1_vampire_lifelink | TokenOwner$ You | SpellDescription$ Create X 1/1 white Vampire creature tokens with lifelink, where X is the number of other attacking creatures. SVar:X:Count$Valid Creature.YouCtrl+Other+attacking$GreatestPower SVar:Y:Count$Valid Creature.attacking+Other diff --git a/forge-gui/res/cardsfolder/upcoming/ghost_vacuum.txt b/forge-gui/res/cardsfolder/g/ghost_vacuum.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ghost_vacuum.txt rename to forge-gui/res/cardsfolder/g/ghost_vacuum.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ghostly_dancers.txt b/forge-gui/res/cardsfolder/g/ghostly_dancers.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ghostly_dancers.txt rename to forge-gui/res/cardsfolder/g/ghostly_dancers.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ghostly_keybearer.txt b/forge-gui/res/cardsfolder/g/ghostly_keybearer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ghostly_keybearer.txt rename to forge-gui/res/cardsfolder/g/ghostly_keybearer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/giggling_skitterspike.txt b/forge-gui/res/cardsfolder/g/giggling_skitterspike.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/giggling_skitterspike.txt rename to forge-gui/res/cardsfolder/g/giggling_skitterspike.txt diff --git a/forge-gui/res/cardsfolder/upcoming/give_in_to_violence.txt b/forge-gui/res/cardsfolder/g/give_in_to_violence.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/give_in_to_violence.txt rename to forge-gui/res/cardsfolder/g/give_in_to_violence.txt diff --git a/forge-gui/res/cardsfolder/upcoming/glassworks_shattered_yard.txt b/forge-gui/res/cardsfolder/g/glassworks_shattered_yard.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/glassworks_shattered_yard.txt rename to forge-gui/res/cardsfolder/g/glassworks_shattered_yard.txt diff --git a/forge-gui/res/cardsfolder/upcoming/gleeful_arsonist.txt b/forge-gui/res/cardsfolder/g/gleeful_arsonist.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/gleeful_arsonist.txt rename to forge-gui/res/cardsfolder/g/gleeful_arsonist.txt diff --git a/forge-gui/res/cardsfolder/upcoming/glimmer_seeker.txt b/forge-gui/res/cardsfolder/g/glimmer_seeker.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/glimmer_seeker.txt rename to forge-gui/res/cardsfolder/g/glimmer_seeker.txt diff --git a/forge-gui/res/cardsfolder/upcoming/glimmerburst.txt b/forge-gui/res/cardsfolder/g/glimmerburst.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/glimmerburst.txt rename to forge-gui/res/cardsfolder/g/glimmerburst.txt diff --git a/forge-gui/res/cardsfolder/upcoming/glimmerlight.txt b/forge-gui/res/cardsfolder/g/glimmerlight.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/glimmerlight.txt rename to forge-gui/res/cardsfolder/g/glimmerlight.txt diff --git a/forge-gui/res/cardsfolder/upcoming/glitch_interpreter.txt b/forge-gui/res/cardsfolder/g/glitch_interpreter.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/glitch_interpreter.txt rename to forge-gui/res/cardsfolder/g/glitch_interpreter.txt diff --git a/forge-gui/res/cardsfolder/upcoming/gloomlake_verge.txt b/forge-gui/res/cardsfolder/g/gloomlake_verge.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/gloomlake_verge.txt rename to forge-gui/res/cardsfolder/g/gloomlake_verge.txt diff --git a/forge-gui/res/cardsfolder/g/gonti_lord_of_luxury.txt b/forge-gui/res/cardsfolder/g/gonti_lord_of_luxury.txt index 78bd96324bd..505d7b81cd9 100644 --- a/forge-gui/res/cardsfolder/g/gonti_lord_of_luxury.txt +++ b/forge-gui/res/cardsfolder/g/gonti_lord_of_luxury.txt @@ -4,7 +4,7 @@ Types:Legendary Creature Aetherborn Rogue PT:2/3 K:Deathtouch T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDig | TriggerDescription$ When CARDNAME enters, look at the top four cards of target opponent's library, exile one of them face down, then put the rest on the bottom of that library in a random order. For as long as that card remains exiled, you may look at it, you may cast it, and you may spend mana as though it were mana of any type to cast that spell. -SVar:TrigDig:DB$ Dig | ValidTgts$ Opponent | DigNum$ 4 | ChangeNum$ 1 | DestinationZone$ Exile | DestinationZone2$ Library | LibraryPosition$ -1 | RestRandomOrder$ True | ExileFaceDown$ True | ChangeValid$ Card | RememberChanged$ True | SubAbility$ DBEffect | RememberChanged$ True +SVar:TrigDig:DB$ Dig | ValidTgts$ Opponent | DigNum$ 4 | ChangeNum$ 1 | DestinationZone$ Exile | DestinationZone2$ Library | LibraryPosition$ -1 | RestRandomOrder$ True | ExileFaceDown$ True | ChangeValid$ Card | RememberChanged$ True | SubAbility$ DBEffect SVar:DBEffect:DB$ Effect | RememberObjects$ Remembered | StaticAbilities$ STPlay1,STPlay2 | Duration$ Permanent | ForgetOnMoved$ Exile | SubAbility$ DBCleanup SVar:STPlay1:Mode$ Continuous | MayLookAt$ You | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ You may look at the card, you may cast it, and you may spend mana as though it were mana of any type to cast that spell. SVar:STPlay2:Mode$ Continuous | MayPlay$ True | MayPlayIgnoreType$ True | EffectZone$ Command | Affected$ Card.IsRemembered+nonLand | AffectedZone$ Exile | Secondary$ True | Description$ You may look at the card, you may cast it, and you may spend mana as though it were mana of any type to cast that spell. diff --git a/forge-gui/res/cardsfolder/upcoming/grab_the_prize.txt b/forge-gui/res/cardsfolder/g/grab_the_prize.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/grab_the_prize.txt rename to forge-gui/res/cardsfolder/g/grab_the_prize.txt diff --git a/forge-gui/res/cardsfolder/upcoming/grand_entryway_elegant_rotunda.txt b/forge-gui/res/cardsfolder/g/grand_entryway_elegant_rotunda.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/grand_entryway_elegant_rotunda.txt rename to forge-gui/res/cardsfolder/g/grand_entryway_elegant_rotunda.txt diff --git a/forge-gui/res/cardsfolder/upcoming/grasping_longneck.txt b/forge-gui/res/cardsfolder/g/grasping_longneck.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/grasping_longneck.txt rename to forge-gui/res/cardsfolder/g/grasping_longneck.txt diff --git a/forge-gui/res/cardsfolder/upcoming/greenhouse_rickety_gazebo.txt b/forge-gui/res/cardsfolder/g/greenhouse_rickety_gazebo.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/greenhouse_rickety_gazebo.txt rename to forge-gui/res/cardsfolder/g/greenhouse_rickety_gazebo.txt diff --git a/forge-gui/res/cardsfolder/upcoming/gremlin_tamer.txt b/forge-gui/res/cardsfolder/g/gremlin_tamer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/gremlin_tamer.txt rename to forge-gui/res/cardsfolder/g/gremlin_tamer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/grievous_wound.txt b/forge-gui/res/cardsfolder/g/grievous_wound.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/grievous_wound.txt rename to forge-gui/res/cardsfolder/g/grievous_wound.txt diff --git a/forge-gui/res/cardsfolder/g/grinning_totem.txt b/forge-gui/res/cardsfolder/g/grinning_totem.txt index 5c4bf0ef0fd..125b1c544a6 100644 --- a/forge-gui/res/cardsfolder/g/grinning_totem.txt +++ b/forge-gui/res/cardsfolder/g/grinning_totem.txt @@ -1,7 +1,7 @@ Name:Grinning Totem ManaCost:4 Types:Artifact -A:AB$ ChangeZone | Cost$ 2 T Sac<1/CARDNAME> | ValidTgts$ Opponent | IsCurse$ True | Chooser$ You | Origin$ Library | Destination$ Exile | ChangeType$ Card | ChangeNum$ 1 | IsCurse$ True | RememberChanged$ True | SubAbility$ TotemEffect | SpellDescription$ Search target opponent's library for a card and exile it. Then that player shuffles. | StackDescription$ {p:You} searches {p:Targeted}'s library for a card and exiles it. Then {p:Targeted} shuffles. +A:AB$ ChangeZone | Cost$ 2 T Sac<1/CARDNAME> | ValidTgts$ Opponent | Chooser$ You | Origin$ Library | Destination$ Exile | ChangeType$ Card | ChangeNum$ 1 | IsCurse$ True | RememberChanged$ True | SubAbility$ TotemEffect | SpellDescription$ Search target opponent's library for a card and exile it. Then that player shuffles. | StackDescription$ {p:You} searches {p:Targeted}'s library for a card and exiles it. Then {p:Targeted} shuffles. SVar:TotemEffect:DB$ Effect | StaticAbilities$ STGrinning | Duration$ UntilYourNextUpkeep | RememberObjects$ Remembered | ExileOnMoved$ Exile | SubAbility$ DBDelayedTrigger | SpellDescription$ Until the beginning of your next upkeep, you may play that card. SVar:STGrinning:Mode$ Continuous | Affected$ Card.IsRemembered | MayPlay$ True | EffectZone$ Command | AffectedZone$ Exile | Description$ Until the beginning of your next upkeep, you may play that card. SVar:DBDelayedTrigger:DB$ DelayedTrigger | Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | RememberObjects$ Remembered | Execute$ DBReturn | IsPresent$ Card.IsTriggerRemembered | PresentZone$ Exile | SubAbility$ DBCleanup | TriggerDescription$ At the beginning of your next upkeep, if you haven't played it, put it into its owner's graveyard. diff --git a/forge-gui/res/cardsfolder/upcoming/growing_dread.txt b/forge-gui/res/cardsfolder/g/growing_dread.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/growing_dread.txt rename to forge-gui/res/cardsfolder/g/growing_dread.txt diff --git a/forge-gui/res/cardsfolder/g/gwyllion_hedge_mage.txt b/forge-gui/res/cardsfolder/g/gwyllion_hedge_mage.txt index 47ed6dafb2e..8f17f280823 100644 --- a/forge-gui/res/cardsfolder/g/gwyllion_hedge_mage.txt +++ b/forge-gui/res/cardsfolder/g/gwyllion_hedge_mage.txt @@ -2,8 +2,8 @@ Name:Gwyllion Hedge-Mage ManaCost:2 WB Types:Creature Hag Wizard PT:2/2 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | IsPresent$ Plains.YouCtrl | PresentCompare$ GE2 | OptionalDecider$ You | Execute$ TrigToken | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters, if you control two or more Plains, you may create a 1/1 white Kithkin Soldier creature token. -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | IsPresent$ Swamp.YouCtrl | PresentCompare$ GE2 | OptionalDecider$ You | Execute$ TrigPutCounter | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters, if you control two or more Swamps, you may put a -1/-1 counter on target creature. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | IsPresent$ Plains.YouCtrl | PresentCompare$ GE2 | OptionalDecider$ You | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters, if you control two or more Plains, you may create a 1/1 white Kithkin Soldier creature token. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | IsPresent$ Swamp.YouCtrl | PresentCompare$ GE2 | OptionalDecider$ You | Execute$ TrigPutCounter | TriggerDescription$ When CARDNAME enters, if you control two or more Swamps, you may put a -1/-1 counter on target creature. SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ w_1_1_kithkin_soldier | TokenOwner$ You SVar:TrigPutCounter:DB$ PutCounter | ValidTgts$ Creature | TgtPrompt$ Select target creature | CounterType$ M1M1 | CounterNum$ 1 | IsCurse$ True Oracle:When Gwyllion Hedge-Mage enters, if you control two or more Plains, you may create a 1/1 white Kithkin Soldier creature token.\nWhen Gwyllion Hedge-Mage enters, if you control two or more Swamps, you may put a -1/-1 counter on target creature. diff --git a/forge-gui/res/cardsfolder/h/hag_hedge_mage.txt b/forge-gui/res/cardsfolder/h/hag_hedge_mage.txt index 593e8a381c4..d0afa86f1f1 100644 --- a/forge-gui/res/cardsfolder/h/hag_hedge_mage.txt +++ b/forge-gui/res/cardsfolder/h/hag_hedge_mage.txt @@ -2,8 +2,8 @@ Name:Hag Hedge-Mage ManaCost:2 BG Types:Creature Hag Shaman PT:2/2 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | IsPresent$ Swamp.YouCtrl | PresentCompare$ GE2 | OptionalDecider$ You | Execute$ TrigDiscard | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters, if you control two or more Swamps, you may have target player discard a card. -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | IsPresent$ Forest.YouCtrl | PresentCompare$ GE2 | OptionalDecider$ You | Execute$ TrigChangeZone | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters, if you control two or more Forests, you may put target card from your graveyard on top of your library. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | IsPresent$ Swamp.YouCtrl | PresentCompare$ GE2 | OptionalDecider$ You | Execute$ TrigDiscard | TriggerDescription$ When CARDNAME enters, if you control two or more Swamps, you may have target player discard a card. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | IsPresent$ Forest.YouCtrl | PresentCompare$ GE2 | OptionalDecider$ You | Execute$ TrigChangeZone | TriggerDescription$ When CARDNAME enters, if you control two or more Forests, you may put target card from your graveyard on top of your library. SVar:TrigDiscard:DB$ Discard | ValidTgts$ Player | TgtPrompt$ Select target player | NumCards$ 1 | Mode$ TgtChoose SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Library | LibraryPosition$ 0 | TgtPrompt$ Select target card in your graveyard | ValidTgts$ Card.YouCtrl Oracle:When Hag Hedge-Mage enters, if you control two or more Swamps, you may have target player discard a card.\nWhen Hag Hedge-Mage enters, if you control two or more Forests, you may put target card from your graveyard on top of your library. diff --git a/forge-gui/res/cardsfolder/upcoming/hand_that_feeds.txt b/forge-gui/res/cardsfolder/h/hand_that_feeds.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hand_that_feeds.txt rename to forge-gui/res/cardsfolder/h/hand_that_feeds.txt diff --git a/forge-gui/res/cardsfolder/h/harbor_guardian.txt b/forge-gui/res/cardsfolder/h/harbor_guardian.txt index 2e5b7069906..53a64989e00 100644 --- a/forge-gui/res/cardsfolder/h/harbor_guardian.txt +++ b/forge-gui/res/cardsfolder/h/harbor_guardian.txt @@ -3,6 +3,6 @@ ManaCost:2 W U Types:Creature Gargoyle PT:3/4 K:Reach -T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDraw | OptionalDecider$ Opponent | Execute$ TrigDraw | TriggerDescription$ Whenever CARDNAME attacks, defending player may draw a card. -SVar:TrigDraw:DB$ Draw | Defined$ TriggeredDefendingPlayer | NumCards$ 1 +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerDescription$ Whenever CARDNAME attacks, defending player may draw a card. +SVar:TrigDraw:DB$ Draw | Defined$ TriggeredDefendingPlayer | NumCards$ 1 | OptionalDecider$ True Oracle:Reach (This creature can block creatures with flying.)\nWhenever Harbor Guardian attacks, defending player may draw a card. diff --git a/forge-gui/res/cardsfolder/upcoming/hardened_escort.txt b/forge-gui/res/cardsfolder/h/hardened_escort.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hardened_escort.txt rename to forge-gui/res/cardsfolder/h/hardened_escort.txt diff --git a/forge-gui/res/cardsfolder/upcoming/haunted_screen.txt b/forge-gui/res/cardsfolder/h/haunted_screen.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/haunted_screen.txt rename to forge-gui/res/cardsfolder/h/haunted_screen.txt diff --git a/forge-gui/res/cardsfolder/upcoming/hauntwoods_shrieker.txt b/forge-gui/res/cardsfolder/h/hauntwoods_shrieker.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hauntwoods_shrieker.txt rename to forge-gui/res/cardsfolder/h/hauntwoods_shrieker.txt diff --git a/forge-gui/res/cardsfolder/h/head_games.txt b/forge-gui/res/cardsfolder/h/head_games.txt index 092ce08f010..9c49430a57d 100644 --- a/forge-gui/res/cardsfolder/h/head_games.txt +++ b/forge-gui/res/cardsfolder/h/head_games.txt @@ -2,7 +2,7 @@ Name:Head Games ManaCost:3 B B Types:Sorcery A:SP$ ChangeZoneAll | ValidTgts$ Opponent | Origin$ Hand | Destination$ Library | ChangeType$ Card | RememberChanged$ True | IsCurse$ True | SubAbility$ HeadChange | SpellDescription$ Target opponent puts the cards from their hand on top of their library. Search that player's library for that many cards. The player puts those cards into their hand, then shuffles. -SVar:HeadChange:DB$ ChangeZone | DefinedPlayer$ Targeted | Origin$ Library | Destination$ Hand | ChangeNum$ X | ChangeType$ Card | Chooser$ You | SubAbility$ DBCleanup +SVar:HeadChange:DB$ ChangeZone | DefinedPlayer$ Targeted | Origin$ Library | Destination$ Hand | ChangeNum$ X | ChangeType$ Card | Chooser$ You | Mandatory$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:Remembered$Amount AI:RemoveDeck:All diff --git a/forge-gui/res/cardsfolder/upcoming/hedge_shredder.txt b/forge-gui/res/cardsfolder/h/hedge_shredder.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hedge_shredder.txt rename to forge-gui/res/cardsfolder/h/hedge_shredder.txt diff --git a/forge-gui/res/cardsfolder/upcoming/helpful_hunter.txt b/forge-gui/res/cardsfolder/h/helpful_hunter.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/helpful_hunter.txt rename to forge-gui/res/cardsfolder/h/helpful_hunter.txt diff --git a/forge-gui/res/cardsfolder/upcoming/horrid_vigor.txt b/forge-gui/res/cardsfolder/h/horrid_vigor.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/horrid_vigor.txt rename to forge-gui/res/cardsfolder/h/horrid_vigor.txt diff --git a/forge-gui/res/cardsfolder/upcoming/house_cartographer.txt b/forge-gui/res/cardsfolder/h/house_cartographer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/house_cartographer.txt rename to forge-gui/res/cardsfolder/h/house_cartographer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/hushwood_verge.txt b/forge-gui/res/cardsfolder/h/hushwood_verge.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hushwood_verge.txt rename to forge-gui/res/cardsfolder/h/hushwood_verge.txt diff --git a/forge-gui/res/cardsfolder/upcoming/i_am_duskmourn.txt b/forge-gui/res/cardsfolder/i/i_am_duskmourn.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/i_am_duskmourn.txt rename to forge-gui/res/cardsfolder/i/i_am_duskmourn.txt diff --git a/forge-gui/res/cardsfolder/upcoming/i_am_never_alone.txt b/forge-gui/res/cardsfolder/i/i_am_never_alone.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/i_am_never_alone.txt rename to forge-gui/res/cardsfolder/i/i_am_never_alone.txt diff --git a/forge-gui/res/cardsfolder/upcoming/i_am_untouchable.txt b/forge-gui/res/cardsfolder/i/i_am_untouchable.txt similarity index 67% rename from forge-gui/res/cardsfolder/upcoming/i_am_untouchable.txt rename to forge-gui/res/cardsfolder/i/i_am_untouchable.txt index bb2f9c148bc..71b297f5ec7 100644 --- a/forge-gui/res/cardsfolder/upcoming/i_am_untouchable.txt +++ b/forge-gui/res/cardsfolder/i/i_am_untouchable.txt @@ -2,7 +2,7 @@ Name:I Am Untouchable ManaCost:no cost Types:Ongoing Scheme S:Mode$ Continuous | EffectZone$ Command | Affected$ You,Permanent.YouCtrl | AddKeyword$ Hexproof | Description$ You and permanents you control have hexproof. -T:Mode$ DamageDoneOnce | ValidTarget$ You | TriggerZones$ Battlefield | CombatDamage$ True | Execute$ TrigToken | TriggerZones$ Command | TriggerDescription$ When combat damage is dealt to you, create a 4/4 colorless Scarecrow artifact creature token with vigilance, then abandon this scheme. +T:Mode$ DamageDoneOnce | ValidTarget$ You | CombatDamage$ True | Execute$ TrigToken | TriggerZones$ Command | TriggerDescription$ When combat damage is dealt to you, create a 4/4 colorless Scarecrow artifact creature token with vigilance, then abandon this scheme. SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ c_4_4_a_scarecrow_vigilance | TokenOwner$ You | SubAbility$ DBAbandon SVar:DBAbandon:DB$ Abandon Oracle:(An ongoing scheme remains face up until it's abandoned.)\nYou and permanents you control have hexproof.\nWhen combat damage is dealt to you, create a 4/4 colorless Scarecrow artifact creature token with vigilance, then abandon this scheme. diff --git a/forge-gui/res/cardsfolder/upcoming/i_call_for_slaughter.txt b/forge-gui/res/cardsfolder/i/i_call_for_slaughter.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/i_call_for_slaughter.txt rename to forge-gui/res/cardsfolder/i/i_call_for_slaughter.txt diff --git a/forge-gui/res/cardsfolder/upcoming/i_will_savor_your_agony.txt b/forge-gui/res/cardsfolder/i/i_will_savor_your_agony.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/i_will_savor_your_agony.txt rename to forge-gui/res/cardsfolder/i/i_will_savor_your_agony.txt diff --git a/forge-gui/res/cardsfolder/upcoming/impossible_inferno.txt b/forge-gui/res/cardsfolder/i/impossible_inferno.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/impossible_inferno.txt rename to forge-gui/res/cardsfolder/i/impossible_inferno.txt diff --git a/forge-gui/res/cardsfolder/upcoming/infernal_phantom.txt b/forge-gui/res/cardsfolder/i/infernal_phantom.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/infernal_phantom.txt rename to forge-gui/res/cardsfolder/i/infernal_phantom.txt diff --git a/forge-gui/res/cardsfolder/upcoming/innocuous_rat.txt b/forge-gui/res/cardsfolder/i/innocuous_rat.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/innocuous_rat.txt rename to forge-gui/res/cardsfolder/i/innocuous_rat.txt diff --git a/forge-gui/res/cardsfolder/upcoming/inquisitive_glimmer.txt b/forge-gui/res/cardsfolder/i/inquisitive_glimmer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/inquisitive_glimmer.txt rename to forge-gui/res/cardsfolder/i/inquisitive_glimmer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/insidious_fungus.txt b/forge-gui/res/cardsfolder/i/insidious_fungus.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/insidious_fungus.txt rename to forge-gui/res/cardsfolder/i/insidious_fungus.txt diff --git a/forge-gui/res/cardsfolder/i/intellect_devourer.txt b/forge-gui/res/cardsfolder/i/intellect_devourer.txt index 73682ce3f0a..db940d9a07c 100644 --- a/forge-gui/res/cardsfolder/i/intellect_devourer.txt +++ b/forge-gui/res/cardsfolder/i/intellect_devourer.txt @@ -3,6 +3,6 @@ ManaCost:3 B Types:Creature Horror PT:2/4 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$ Devour Intellect — When CARDNAME enters, each opponent exiles a card from their hand until CARDNAME leaves the battlefield. -SVar:TrigExile:DB$ ChangeZone | Origin$ Hand | Destination$ Exile | ChangeType$ Card | DefinedPlayer$ Opponent | Mandatory$ True | ChangeType$ Card | Hidden$ True | Duration$ UntilHostLeavesPlay | IsCurse$ True +SVar:TrigExile:DB$ ChangeZone | Origin$ Hand | Destination$ Exile | ChangeType$ Card | DefinedPlayer$ Opponent | Mandatory$ True | Hidden$ True | Duration$ UntilHostLeavesPlay | IsCurse$ True S:Mode$ Continuous | MayPlay$ True | MayPlayIgnoreColor$ True | Affected$ Card.ExiledWithSource | AffectedZone$ Exile | Description$ Body Thief — You may play lands and cast spells from among cards exiled with CARDNAME. If you cast a spell this way, you may spend mana as though it were mana of any color to cast it. Oracle:Devour Intellect — When Intellect Devourer enters, each opponent exiles a card from their hand until Intellect Devourer leaves the battlefield.\nBody Thief — You may play lands and cast spells from among cards exiled with Intellect Devourer. If you cast a spell this way, you may spend mana as though it were mana of any color to cast it. diff --git a/forge-gui/res/cardsfolder/upcoming/into_the_pit.txt b/forge-gui/res/cardsfolder/i/into_the_pit.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/into_the_pit.txt rename to forge-gui/res/cardsfolder/i/into_the_pit.txt diff --git a/forge-gui/res/cardsfolder/upcoming/intruding_soulrager.txt b/forge-gui/res/cardsfolder/i/intruding_soulrager.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/intruding_soulrager.txt rename to forge-gui/res/cardsfolder/i/intruding_soulrager.txt diff --git a/forge-gui/res/cardsfolder/i/invasion_of_kylem_valors_reach_tag_team.txt b/forge-gui/res/cardsfolder/i/invasion_of_kylem_valors_reach_tag_team.txt index 7e4386ea885..1d151bc9dc2 100644 --- a/forge-gui/res/cardsfolder/i/invasion_of_kylem_valors_reach_tag_team.txt +++ b/forge-gui/res/cardsfolder/i/invasion_of_kylem_valors_reach_tag_team.txt @@ -13,6 +13,6 @@ Name:Valor's Reach Tag Team ManaCost:no cost Colors:red,white Types:Sorcery -A:SP$ Token | TokenAmount$ 1 | TokenScript$ rw_3_2_warrior_symbiotic_attack | TokenAmount$ 2 | TokenOwner$ You | SpellDescription$ Create two 3/2 red and white Warrior creature tokens with "Whenever this creature and at least one other creature token attack, put a +1/+1 counter on this creature." +A:SP$ Token | TokenScript$ rw_3_2_warrior_symbiotic_attack | TokenAmount$ 2 | TokenOwner$ You | SpellDescription$ Create two 3/2 red and white Warrior creature tokens with "Whenever this creature and at least one other creature token attack, put a +1/+1 counter on this creature." DeckHas:Ability$Token & Type$Warrior Oracle:Create two 3/2 red and white Warrior creature tokens with "Whenever this creature and at least one other creature token attack, put a +1/+1 counter on this creature." diff --git a/forge-gui/res/cardsfolder/upcoming/irreverent_gremlin.txt b/forge-gui/res/cardsfolder/i/irreverent_gremlin.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/irreverent_gremlin.txt rename to forge-gui/res/cardsfolder/i/irreverent_gremlin.txt diff --git a/forge-gui/res/cardsfolder/j/judge_unworthy.txt b/forge-gui/res/cardsfolder/j/judge_unworthy.txt index 30cd1ff25ef..9d1468fbe4e 100644 --- a/forge-gui/res/cardsfolder/j/judge_unworthy.txt +++ b/forge-gui/res/cardsfolder/j/judge_unworthy.txt @@ -3,7 +3,7 @@ ManaCost:1 W Types:Instant A:SP$ Scry | ScryNum$ 3 | SubAbility$ DBReveal | SpellDescription$ Choose target attacking or blocking creature. Scry 3, then reveal the top card of your library. CARDNAME deals damage equal to that card's mana value to that creature. SVar:DBReveal:DB$ Dig | DigNum$ 1 | Reveal$ True | DestinationZone$ Library | LibraryPosition$ 0 | SubAbility$ DBDamage -SVar:DBDamage:DB$ DealDamage | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumDmg$ X | ValidTgts$ Creature.attacking,Creature.blocking | TgtPrompt$ Select target attacking or blocking creature +SVar:DBDamage:DB$ DealDamage | NumDmg$ X | ValidTgts$ Creature.attacking,Creature.blocking | TgtPrompt$ Select target attacking or blocking creature SVar:X:Count$TopOfLibraryCMC AI:RemoveDeck:All Oracle:Choose target attacking or blocking creature. Scry 3, then reveal the top card of your library. Judge Unworthy deals damage equal to that card's mana value to that creature. diff --git a/forge-gui/res/cardsfolder/upcoming/jump_scare.txt b/forge-gui/res/cardsfolder/j/jump_scare.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/jump_scare.txt rename to forge-gui/res/cardsfolder/j/jump_scare.txt diff --git a/forge-gui/res/cardsfolder/upcoming/kaito_bane_of_nightmares.txt b/forge-gui/res/cardsfolder/k/kaito_bane_of_nightmares.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/kaito_bane_of_nightmares.txt rename to forge-gui/res/cardsfolder/k/kaito_bane_of_nightmares.txt diff --git a/forge-gui/res/cardsfolder/upcoming/keys_to_the_house.txt b/forge-gui/res/cardsfolder/k/keys_to_the_house.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/keys_to_the_house.txt rename to forge-gui/res/cardsfolder/k/keys_to_the_house.txt diff --git a/forge-gui/res/cardsfolder/upcoming/kianne_corrupted_memory.txt b/forge-gui/res/cardsfolder/k/kianne_corrupted_memory.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/kianne_corrupted_memory.txt rename to forge-gui/res/cardsfolder/k/kianne_corrupted_memory.txt diff --git a/forge-gui/res/cardsfolder/upcoming/killers_mask.txt b/forge-gui/res/cardsfolder/k/killers_mask.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/killers_mask.txt rename to forge-gui/res/cardsfolder/k/killers_mask.txt diff --git a/forge-gui/res/cardsfolder/k/kiora_bests_the_sea_god.txt b/forge-gui/res/cardsfolder/k/kiora_bests_the_sea_god.txt index aa0cd4b296c..e3f9178e5ad 100644 --- a/forge-gui/res/cardsfolder/k/kiora_bests_the_sea_god.txt +++ b/forge-gui/res/cardsfolder/k/kiora_bests_the_sea_god.txt @@ -5,7 +5,7 @@ K:Chapter:3:TrigToken,TrigTap,TrigGainControl SVar:TrigToken:DB$ Token | TokenScript$ u_8_8_kraken_hexproof | SpellDescription$ Create an 8/8 blue Kraken creature token with hexproof. SVar:TrigTap:DB$ TapAll | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | ValidCards$ Permanent.nonLand | SubAbility$ DBPumpAll | SpellDescription$ Tap all nonland permanents target opponent controls. They don't untap during their controllers' next untap step. SVar:DBPumpAll:DB$ PumpAll | Defined$ Targeted | ValidCards$ Creature | KW$ HIDDEN This card doesn't untap during your next untap step. | Duration$ Permanent -SVar:TrigGainControl:DB$ GainControl | TgtPrompt$ Choose target creature | ValidTgts$ Permanent.OppCtrl | TgtPrompt$ Select target permanent an opponent controls | SubAbility$ DBUntap | SpellDescription$ Gain control of target permanent an opponent controls. Untap it. +SVar:TrigGainControl:DB$ GainControl | ValidTgts$ Permanent.OppCtrl | TgtPrompt$ Select target permanent an opponent controls | SubAbility$ DBUntap | SpellDescription$ Gain control of target permanent an opponent controls. Untap it. SVar:DBUntap:DB$ Untap | Defined$ Targeted DeckHas:Ability$Token Oracle:(As this Saga enters and after your draw step, add a lore counter. Sacrifice after III.)\nI — Create an 8/8 blue Kraken creature token with hexproof.\nII — Tap all nonland permanents target opponent controls. They don't untap during their controller's next untap step.\nIII — Gain control of target permanent an opponent controls. Untap it. diff --git a/forge-gui/res/cardsfolder/upcoming/kneel_before_my_legions.txt b/forge-gui/res/cardsfolder/k/kneel_before_my_legions.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/kneel_before_my_legions.txt rename to forge-gui/res/cardsfolder/k/kneel_before_my_legions.txt diff --git a/forge-gui/res/cardsfolder/upcoming/kona_rescue_beastie.txt b/forge-gui/res/cardsfolder/k/kona_rescue_beastie.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/kona_rescue_beastie.txt rename to forge-gui/res/cardsfolder/k/kona_rescue_beastie.txt diff --git a/forge-gui/res/cardsfolder/k/krenko_tin_street_kingpin.txt b/forge-gui/res/cardsfolder/k/krenko_tin_street_kingpin.txt index cf4ad0c4229..9cb313b032a 100644 --- a/forge-gui/res/cardsfolder/k/krenko_tin_street_kingpin.txt +++ b/forge-gui/res/cardsfolder/k/krenko_tin_street_kingpin.txt @@ -4,7 +4,7 @@ Types:Legendary Creature Goblin PT:1/2 T:Mode$ Attacks | ValidCard$ Creature.Self | Execute$ TrigPut | TriggerDescription$ Whenever CARDNAME attacks, put a +1/+1 counter on it, then create a number of 1/1 red Goblin creature tokens equal to NICKNAME's power. SVar:TrigPut:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBToken -SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenScript$ r_1_1_goblin | TokenOwner$ You | TokenAmount$ X +SVar:DBToken:DB$ Token | TokenScript$ r_1_1_goblin | TokenOwner$ You | TokenAmount$ X SVar:X:Count$CardPower SVar:HasAttackEffect:TRUE DeckHas:Ability$Token|Counters diff --git a/forge-gui/res/cardsfolder/upcoming/lakeside_shack.txt b/forge-gui/res/cardsfolder/l/lakeside_shack.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/lakeside_shack.txt rename to forge-gui/res/cardsfolder/l/lakeside_shack.txt diff --git a/forge-gui/res/cardsfolder/l/leech_bonder.txt b/forge-gui/res/cardsfolder/l/leech_bonder.txt index d70c55442a4..60b69850b87 100644 --- a/forge-gui/res/cardsfolder/l/leech_bonder.txt +++ b/forge-gui/res/cardsfolder/l/leech_bonder.txt @@ -3,6 +3,6 @@ ManaCost:2 U Types:Creature Merfolk Soldier PT:3/3 K:etbCounter:M1M1:2 -A:AB$ MoveCounter | Cost$ U Q | ValidTgts$ Creature | TgtPrompt$ Select target creatures to move counters | ValidTgts$ Creature | TargetMin$ 2 | TargetMax$ 2 | CounterType$ Any | SpellDescription$ Move a counter from target creature onto a second target creature. +A:AB$ MoveCounter | Cost$ U Q | ValidTgts$ Creature | TgtPrompt$ Select target creatures to move counters | TargetMin$ 2 | TargetMax$ 2 | CounterType$ Any | SpellDescription$ Move a counter from target creature onto a second target creature. AI:RemoveDeck:All Oracle:Leech Bonder enters with two -1/-1 counters on it.\n{U}, {Q}: Move a counter from target creature onto a second target creature. ({Q} is the untap symbol.) diff --git a/forge-gui/res/cardsfolder/upcoming/lets_play_a_game.txt b/forge-gui/res/cardsfolder/l/lets_play_a_game.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/lets_play_a_game.txt rename to forge-gui/res/cardsfolder/l/lets_play_a_game.txt diff --git a/forge-gui/res/cardsfolder/upcoming/leyline_of_hope.txt b/forge-gui/res/cardsfolder/l/leyline_of_hope.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/leyline_of_hope.txt rename to forge-gui/res/cardsfolder/l/leyline_of_hope.txt diff --git a/forge-gui/res/cardsfolder/upcoming/leyline_of_mutation.txt b/forge-gui/res/cardsfolder/l/leyline_of_mutation.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/leyline_of_mutation.txt rename to forge-gui/res/cardsfolder/l/leyline_of_mutation.txt diff --git a/forge-gui/res/cardsfolder/upcoming/leyline_of_resonance.txt b/forge-gui/res/cardsfolder/l/leyline_of_resonance.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/leyline_of_resonance.txt rename to forge-gui/res/cardsfolder/l/leyline_of_resonance.txt diff --git a/forge-gui/res/cardsfolder/upcoming/leyline_of_transformation.txt b/forge-gui/res/cardsfolder/l/leyline_of_transformation.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/leyline_of_transformation.txt rename to forge-gui/res/cardsfolder/l/leyline_of_transformation.txt diff --git a/forge-gui/res/cardsfolder/l/lightning_runner.txt b/forge-gui/res/cardsfolder/l/lightning_runner.txt index b859cf4e08c..0ee06a51292 100644 --- a/forge-gui/res/cardsfolder/l/lightning_runner.txt +++ b/forge-gui/res/cardsfolder/l/lightning_runner.txt @@ -6,7 +6,7 @@ K:Double Strike K:Haste T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigEnergy | TriggerDescription$ Whenever CARDNAME attacks, you get {E}{E} (two energy counters), then you may pay eight {E}. If you pay, untap all creatures you control, and after this phase, there is an additional combat phase. SVar:TrigEnergy:DB$ PutCounter | Defined$ You | CounterType$ ENERGY | CounterNum$ 2 | SubAbility$ DBUntapAll -SVar:DBUntapAll:DB$ UntapAll | ValidCards$ Creature.YouCtrl | SubAbility$ DBAddCombat | UnlessCost$ PayEnergy<8> | UnlessPayer$ You | UnlessSwitched$ True | UnlessResolveSubs$ WhenPaid | SubAbility$ DBAddCombat +SVar:DBUntapAll:DB$ UntapAll | ValidCards$ Creature.YouCtrl | UnlessCost$ PayEnergy<8> | UnlessPayer$ You | UnlessSwitched$ True | UnlessResolveSubs$ WhenPaid | SubAbility$ DBAddCombat SVar:DBAddCombat:DB$ AddPhase | ExtraPhase$ Combat | AfterPhase$ EndCombat SVar:PlayMain1:TRUE Oracle:Double strike, haste\nWhenever Lightning Runner attacks, you get {E}{E} (two energy counters), then you may pay eight {E}. If you pay, untap all creatures you control, and after this phase, there is an additional combat phase. diff --git a/forge-gui/res/cardsfolder/l/lilianas_influence.txt b/forge-gui/res/cardsfolder/l/lilianas_influence.txt index 78061cdc620..dd9e769c99e 100644 --- a/forge-gui/res/cardsfolder/l/lilianas_influence.txt +++ b/forge-gui/res/cardsfolder/l/lilianas_influence.txt @@ -1,7 +1,7 @@ Name:Liliana's Influence ManaCost:4 B B Types:Sorcery -A:SP$ PutCounterAll | ValidCards$ Creature.YouDontCtrl | CounterType$ M1M1 | CounterNum$ 1 | SubAbility$ DBShuffle | IsCurse$ True | SubAbility$ DBSearch | SpellDescription$ Put a -1/-1 counter on each creature you don't control. +A:SP$ PutCounterAll | ValidCards$ Creature.YouDontCtrl | CounterType$ M1M1 | CounterNum$ 1 | IsCurse$ True | SubAbility$ DBSearch | SpellDescription$ Put a -1/-1 counter on each creature you don't control. SVar:DBSearch:DB$ ChangeZone | Origin$ Library | OriginAlternative$ Graveyard | Destination$ Hand | ChangeType$ Card.YouOwn+namedLiliana; Death Wielder | Optional$ True | SpellDescription$ You may search your library and/or graveyard for a card named Liliana, Death Wielder, reveal it, and put it into your hand. If you search your library this way, shuffle. DeckHints:Name$Liliana, Death Wielder Oracle:Put a -1/-1 counter on each creature you don't control. You may search your library and/or graveyard for a card named Liliana, Death Wielder, reveal it, and put it into your hand. If you search your library this way, shuffle. diff --git a/forge-gui/res/cardsfolder/upcoming/lionheart_glimmer.txt b/forge-gui/res/cardsfolder/l/lionheart_glimmer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/lionheart_glimmer.txt rename to forge-gui/res/cardsfolder/l/lionheart_glimmer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/live_or_die.txt b/forge-gui/res/cardsfolder/l/live_or_die.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/live_or_die.txt rename to forge-gui/res/cardsfolder/l/live_or_die.txt diff --git a/forge-gui/res/cardsfolder/upcoming/living_phone.txt b/forge-gui/res/cardsfolder/l/living_phone.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/living_phone.txt rename to forge-gui/res/cardsfolder/l/living_phone.txt diff --git a/forge-gui/res/cardsfolder/l/longhorn_firebeast.txt b/forge-gui/res/cardsfolder/l/longhorn_firebeast.txt index d4f1c715d05..71091357b5c 100644 --- a/forge-gui/res/cardsfolder/l/longhorn_firebeast.txt +++ b/forge-gui/res/cardsfolder/l/longhorn_firebeast.txt @@ -2,7 +2,6 @@ Name:Longhorn Firebeast ManaCost:2 R Types:Creature Elemental Ox Beast PT:3/2 -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | OptionalDecider$ Opponent | TriggerDescription$ When CARDNAME enters, any opponent may have it deal 5 damage to them. If a player does, sacrifice CARDNAME. -SVar:TrigDealDamage:DB$ DealDamage | Defined$ Opponent | NumDmg$ 5 | SubAbility$ DBSacrifice -SVar:DBSacrifice:DB$ Sacrifice +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters, any opponent may have it deal 5 damage to them. If a player does, sacrifice CARDNAME. +SVar:TrigDealDamage::DB$ Sacrifice | UnlessCost$ DamageYou<5> | UnlessPayer$ Opponent | UnlessSwitched$ True Oracle:When Longhorn Firebeast enters, any opponent may have it deal 5 damage to them. If a player does, sacrifice Longhorn Firebeast. diff --git a/forge-gui/res/cardsfolder/upcoming/malevolent_chandelier.txt b/forge-gui/res/cardsfolder/m/malevolent_chandelier.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/malevolent_chandelier.txt rename to forge-gui/res/cardsfolder/m/malevolent_chandelier.txt diff --git a/forge-gui/res/cardsfolder/upcoming/manifest_dread.txt b/forge-gui/res/cardsfolder/m/manifest_dread.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/manifest_dread.txt rename to forge-gui/res/cardsfolder/m/manifest_dread.txt diff --git a/forge-gui/res/cardsfolder/upcoming/marina_vendrell.txt b/forge-gui/res/cardsfolder/m/marina_vendrell.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/marina_vendrell.txt rename to forge-gui/res/cardsfolder/m/marina_vendrell.txt diff --git a/forge-gui/res/cardsfolder/upcoming/marina_vendrells_grimoire.txt b/forge-gui/res/cardsfolder/m/marina_vendrells_grimoire.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/marina_vendrells_grimoire.txt rename to forge-gui/res/cardsfolder/m/marina_vendrells_grimoire.txt diff --git a/forge-gui/res/cardsfolder/upcoming/marvin_murderous_mimic.txt b/forge-gui/res/cardsfolder/m/marvin_murderous_mimic.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/marvin_murderous_mimic.txt rename to forge-gui/res/cardsfolder/m/marvin_murderous_mimic.txt diff --git a/forge-gui/res/cardsfolder/upcoming/meat_locker_drowned_diner.txt b/forge-gui/res/cardsfolder/m/meat_locker_drowned_diner.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/meat_locker_drowned_diner.txt rename to forge-gui/res/cardsfolder/m/meat_locker_drowned_diner.txt diff --git a/forge-gui/res/cardsfolder/upcoming/meathook_massacre_ii.txt b/forge-gui/res/cardsfolder/m/meathook_massacre_ii.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/meathook_massacre_ii.txt rename to forge-gui/res/cardsfolder/m/meathook_massacre_ii.txt diff --git a/forge-gui/res/cardsfolder/upcoming/metamorphosis_fanatic.txt b/forge-gui/res/cardsfolder/m/metamorphosis_fanatic.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/metamorphosis_fanatic.txt rename to forge-gui/res/cardsfolder/m/metamorphosis_fanatic.txt diff --git a/forge-gui/res/cardsfolder/upcoming/miasma_demon.txt b/forge-gui/res/cardsfolder/m/miasma_demon.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/miasma_demon.txt rename to forge-gui/res/cardsfolder/m/miasma_demon.txt diff --git a/forge-gui/res/cardsfolder/upcoming/midnight_mayhem.txt b/forge-gui/res/cardsfolder/m/midnight_mayhem.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/midnight_mayhem.txt rename to forge-gui/res/cardsfolder/m/midnight_mayhem.txt diff --git a/forge-gui/res/cardsfolder/m/mindleech_ghoul.txt b/forge-gui/res/cardsfolder/m/mindleech_ghoul.txt index ab03cfe47d1..0eb208c4ecb 100644 --- a/forge-gui/res/cardsfolder/m/mindleech_ghoul.txt +++ b/forge-gui/res/cardsfolder/m/mindleech_ghoul.txt @@ -4,6 +4,6 @@ Types:Creature Zombie PT:2/2 K:Exploit T:Mode$ Exploited | ValidCard$ Creature | ValidSource$ Card.Self | TriggerZones$ Battlefield | Execute$ TrigExile | TriggerDescription$ When CARDNAME exploits a creature, each opponent exiles a card from their hand. -SVar:TrigExile:DB$ ChangeZone | Origin$ Hand | Destination$ Exile | ChangeType$ Card | DefinedPlayer$ Player.Opponent | Mandatory$ True | ChangeType$ Card | ChangeNum$ 1 | Hidden$ True | IsCurse$ True +SVar:TrigExile:DB$ ChangeZone | Origin$ Hand | Destination$ Exile | DefinedPlayer$ Player.Opponent | Mandatory$ True | ChangeType$ Card | ChangeNum$ 1 | Hidden$ True | IsCurse$ True DeckHas:Ability$Sacrifice Oracle:Exploit (When this creature enters, you may sacrifice a creature.)\nWhen Mindleech Ghoul exploits a creature, each opponent exiles a card from their hand. diff --git a/forge-gui/res/cardsfolder/upcoming/mine_is_the_only_truth.txt b/forge-gui/res/cardsfolder/m/mine_is_the_only_truth.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/mine_is_the_only_truth.txt rename to forge-gui/res/cardsfolder/m/mine_is_the_only_truth.txt diff --git a/forge-gui/res/cardsfolder/upcoming/mirror_room_fractured_realm.txt b/forge-gui/res/cardsfolder/m/mirror_room_fractured_realm.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/mirror_room_fractured_realm.txt rename to forge-gui/res/cardsfolder/m/mirror_room_fractured_realm.txt diff --git a/forge-gui/res/cardsfolder/m/misfortune.txt b/forge-gui/res/cardsfolder/m/misfortune.txt index 7589f74f997..5276f58ffec 100644 --- a/forge-gui/res/cardsfolder/m/misfortune.txt +++ b/forge-gui/res/cardsfolder/m/misfortune.txt @@ -2,9 +2,8 @@ Name:Misfortune ManaCost:1 B R G Types:Sorcery A:SP$ Charm | Chooser$ Opponent | Choices$ Fortune,Misfortune -SVar:Fortune:DB$ PutCounterAll | ValidCards$ Creature.YouCtrl | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBGainLife | SpellDescription$ Put a +1/+1 counter on each creature you control. You gain 4 life. | SubAbility$ DBGainLife +SVar:Fortune:DB$ PutCounterAll | ValidCards$ Creature.YouCtrl | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBGainLife | SpellDescription$ Put a +1/+1 counter on each creature you control. You gain 4 life. SVar:DBGainLife:DB$ GainLife | LifeAmount$ 4 -SVar:Misfortune:DB$ PutCounterAll | ValidCards$ Creature.ControlledBy ChoosingPlayer | CounterType$ M1M1 | CounterNum$ 1 | SubAbility$ DBLoseLife | SpellDescription$ You put a -1/-1 counter on each creature that player controls and CARDNAME deals 4 damage to that player. | SubAbility$ DBDamage +SVar:Misfortune:DB$ PutCounterAll | ValidCards$ Creature.ControlledBy ChoosingPlayer | CounterType$ M1M1 | CounterNum$ 1 | SubAbility$ DBDamage | SpellDescription$ You put a -1/-1 counter on each creature that player controls and CARDNAME deals 4 damage to that player. SVar:DBDamage:DB$ DealDamage | Defined$ ChoosingPlayer | NumDmg$ 4 -SVar:ChooserDraws:DB$ Draw | NumCards$ 3 | Defined$ ChosenPlayer Oracle:An opponent chooses one —\n• You put a +1/+1 counter on each creature you control and gain 4 life.\n• You put a -1/-1 counter on each creature that player controls and Misfortune deals 4 damage to that player. diff --git a/forge-gui/res/cardsfolder/upcoming/moldering_gym_weight_room.txt b/forge-gui/res/cardsfolder/m/moldering_gym_weight_room.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/moldering_gym_weight_room.txt rename to forge-gui/res/cardsfolder/m/moldering_gym_weight_room.txt diff --git a/forge-gui/res/cardsfolder/upcoming/monstrous_emergence.txt b/forge-gui/res/cardsfolder/m/monstrous_emergence.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/monstrous_emergence.txt rename to forge-gui/res/cardsfolder/m/monstrous_emergence.txt diff --git a/forge-gui/res/cardsfolder/m/mordor_on_the_march.txt b/forge-gui/res/cardsfolder/m/mordor_on_the_march.txt index 33a02673090..08643be7460 100644 --- a/forge-gui/res/cardsfolder/m/mordor_on_the_march.txt +++ b/forge-gui/res/cardsfolder/m/mordor_on_the_march.txt @@ -2,7 +2,7 @@ Name:Mordor on the March ManaCost:3 B R Types:Sorcery K:Storm -A:SP$ ChangeZone | ChangeType$ Creature.YouCtrl | Hidden$ True | ChangeNum$ 1 | RememberChanged$ True | Origin$ Graveyard | Destination$ Exile | ChangeNum$ 1 | SubAbility$ DBCopy | SpellDescription$ Exile a creature card from your graveyard. Create a token that's a copy of it. It gains haste until end of turn. Exile it at the beginning of the next end step. +A:SP$ ChangeZone | ChangeType$ Creature.YouCtrl | Hidden$ True | RememberChanged$ True | Origin$ Graveyard | Destination$ Exile | ChangeNum$ 1 | SubAbility$ DBCopy | SpellDescription$ Exile a creature card from your graveyard. Create a token that's a copy of it. It gains haste until end of turn. Exile it at the beginning of the next end step. SVar:DBCopy:DB$ CopyPermanent | Defined$ Remembered | PumpKeywords$ Haste | PumpDuration$ EOT | AtEOT$ Exile | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:PlayMain1:TRUE diff --git a/forge-gui/res/cardsfolder/upcoming/most_valuable_slayer.txt b/forge-gui/res/cardsfolder/m/most_valuable_slayer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/most_valuable_slayer.txt rename to forge-gui/res/cardsfolder/m/most_valuable_slayer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/murky_sewer.txt b/forge-gui/res/cardsfolder/m/murky_sewer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/murky_sewer.txt rename to forge-gui/res/cardsfolder/m/murky_sewer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/my_champion_stands_supreme.txt b/forge-gui/res/cardsfolder/m/my_champion_stands_supreme.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/my_champion_stands_supreme.txt rename to forge-gui/res/cardsfolder/m/my_champion_stands_supreme.txt diff --git a/forge-gui/res/cardsfolder/upcoming/my_followers_ascend.txt b/forge-gui/res/cardsfolder/m/my_followers_ascend.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/my_followers_ascend.txt rename to forge-gui/res/cardsfolder/m/my_followers_ascend.txt diff --git a/forge-gui/res/cardsfolder/upcoming/my_tendrils_run_deep.txt b/forge-gui/res/cardsfolder/m/my_tendrils_run_deep.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/my_tendrils_run_deep.txt rename to forge-gui/res/cardsfolder/m/my_tendrils_run_deep.txt diff --git a/forge-gui/res/cardsfolder/upcoming/my_wealth_will_bury_you.txt b/forge-gui/res/cardsfolder/m/my_wealth_will_bury_you.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/my_wealth_will_bury_you.txt rename to forge-gui/res/cardsfolder/m/my_wealth_will_bury_you.txt diff --git a/forge-gui/res/cardsfolder/m/my_will_is_irresistible.txt b/forge-gui/res/cardsfolder/m/my_will_is_irresistible.txt new file mode 100644 index 00000000000..fd4b765c7a9 --- /dev/null +++ b/forge-gui/res/cardsfolder/m/my_will_is_irresistible.txt @@ -0,0 +1,9 @@ +Name:My Will Is Irresistible +ManaCost:no cost +Types:Scheme +T:Mode$ SetInMotion | ValidCard$ Card.Self | TriggerZones$ Command | Execute$ DBChoosePerms | TriggerDescription$ When you set this scheme in motion, choose up to three nonland permanents you don't control. Target opponent chooses one of those permanents. You gain control of the rest. +SVar:DBChoosePerms:DB$ ChooseCard | Choices$ Permanent.nonLand+YouDontCtrl | RememberChosen$ True | MinAmount$ 0 | Amount$ 3 | AILogic$ SacOneEach | SubAbility$ DBOppChooseCard | ChoiceTitle$ Choose up to three nonland permanents you don't control. +SVar:DBOppChooseCard:DB$ ChooseCard | ValidTgts$ Opponent | ChoiceZone$ Battlefield | DefinedCards$ Remembered | AILogic$ OwnCard | Mandatory$ True | ForgetChosen$ True | Reveal$ True | SubAbility$ DBGainControl | ChoiceTitle$ Choose a nonland permanent. +SVar:DBGainControl:DB$ GainControl | Defined$ Remembered | NewController$ You | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:When you set this scheme in motion, choose up to three nonland permanents you don't control. Target opponent chooses one of those permanents. You gain control of the rest. diff --git a/forge-gui/res/cardsfolder/upcoming/my_wings_enfold_all.txt b/forge-gui/res/cardsfolder/m/my_wings_enfold_all.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/my_wings_enfold_all.txt rename to forge-gui/res/cardsfolder/m/my_wings_enfold_all.txt diff --git a/forge-gui/res/cardsfolder/upcoming/nashi_searcher_in_the_dark.txt b/forge-gui/res/cardsfolder/n/nashi_searcher_in_the_dark.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/nashi_searcher_in_the_dark.txt rename to forge-gui/res/cardsfolder/n/nashi_searcher_in_the_dark.txt diff --git a/forge-gui/res/cardsfolder/upcoming/neglected_manor.txt b/forge-gui/res/cardsfolder/n/neglected_manor.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/neglected_manor.txt rename to forge-gui/res/cardsfolder/n/neglected_manor.txt diff --git a/forge-gui/res/cardsfolder/upcoming/niko_light_of_hope.txt b/forge-gui/res/cardsfolder/n/niko_light_of_hope.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/niko_light_of_hope.txt rename to forge-gui/res/cardsfolder/n/niko_light_of_hope.txt diff --git a/forge-gui/res/cardsfolder/upcoming/nine_lives_familiar.txt b/forge-gui/res/cardsfolder/n/nine_lives_familiar.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/nine_lives_familiar.txt rename to forge-gui/res/cardsfolder/n/nine_lives_familiar.txt diff --git a/forge-gui/res/cardsfolder/upcoming/no_secret_is_hidden_from_me.txt b/forge-gui/res/cardsfolder/n/no_secret_is_hidden_from_me.txt similarity index 88% rename from forge-gui/res/cardsfolder/upcoming/no_secret_is_hidden_from_me.txt rename to forge-gui/res/cardsfolder/n/no_secret_is_hidden_from_me.txt index ddb30933b66..e67382295cc 100644 --- a/forge-gui/res/cardsfolder/upcoming/no_secret_is_hidden_from_me.txt +++ b/forge-gui/res/cardsfolder/n/no_secret_is_hidden_from_me.txt @@ -3,10 +3,10 @@ ManaCost:no cost Types:Scheme T:Mode$ SetInMotion | ValidCard$ Card.Self | Execute$ TrigDigUntil | TriggerZones$ Command | TriggerDescription$ When you set this scheme in motion, exile cards from the top of your library until you exile a nonland card. You may cast that card without paying its mana cost. Then if you control six or more lands, repeat this process once. SVar:TrigDigUntil:DB$ DigUntil | Valid$ Card.nonLand | FoundDestination$ Exile | RevealedDestination$ Exile | RememberFound$ True | SubAbility$ DBPlay1 -SVar:DBPlay1:DB$ Play | Defined$ Remembered | ValidSA$ Spell | WithoutManaCost$ True | Optional$ True | SubAbility$ DBChange | SubAbility$ DBCleanup1 +SVar:DBPlay1:DB$ Play | Defined$ Remembered | ValidSA$ Spell | WithoutManaCost$ True | Optional$ True | SubAbility$ DBCleanup1 SVar:DBCleanup1:DB$ Cleanup | ClearRemembered$ True | SubAbility$ DBDigUntil SVar:DBDigUntil:DB$ DigUntil | Valid$ Card.nonLand | FoundDestination$ Exile | RevealedDestination$ Exile | RememberFound$ True | ConditionCheckSVar$ X | ConditionSVarCompare$ GE6 | SubAbility$ DBPlay2 -SVar:DBPlay2:DB$ Play | Defined$ Remembered | ValidSA$ Spell | WithoutManaCost$ True | Optional$ True | SubAbility$ DBChange | SubAbility$ DBCleanup2 +SVar:DBPlay2:DB$ Play | Defined$ Remembered | ValidSA$ Spell | WithoutManaCost$ True | Optional$ True | SubAbility$ DBCleanup2 SVar:DBCleanup2:DB$ Cleanup | ClearRemembered$ True SVar:X:Count$Valid Land.YouCtrl Oracle:When you set this scheme in motion, exile cards from the top of your library until you exile a nonland card. You may cast that card without paying its mana cost. Then if you control six or more lands, repeat this process once. diff --git a/forge-gui/res/cardsfolder/upcoming/norin_swift_survivalist.txt b/forge-gui/res/cardsfolder/n/norin_swift_survivalist.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/norin_swift_survivalist.txt rename to forge-gui/res/cardsfolder/n/norin_swift_survivalist.txt diff --git a/forge-gui/res/cardsfolder/upcoming/nowhere_to_run.txt b/forge-gui/res/cardsfolder/n/nowhere_to_run.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/nowhere_to_run.txt rename to forge-gui/res/cardsfolder/n/nowhere_to_run.txt diff --git a/forge-gui/res/cardsfolder/o/oath_of_the_grey_host.txt b/forge-gui/res/cardsfolder/o/oath_of_the_grey_host.txt index 2b6040fcbfe..019971a9795 100644 --- a/forge-gui/res/cardsfolder/o/oath_of_the_grey_host.txt +++ b/forge-gui/res/cardsfolder/o/oath_of_the_grey_host.txt @@ -2,7 +2,7 @@ Name:Oath of the Grey Host ManaCost:3 B Types:Enchantment Saga K:Chapter:3:DBFood,DBLoseLife,DBSpirit -SVar:DBFood:DB$ Token | TokenAmount$ 1 | ValidTgts$ Opponent | TokenOwner$ TargetedAndYou | TokenAmount$ 1 | TokenScript$ c_a_food_sac | SpellDescription$ You and target opponent each create a Food token. +SVar:DBFood:DB$ Token | TokenAmount$ 1 | ValidTgts$ Opponent | TokenOwner$ TargetedAndYou | TokenScript$ c_a_food_sac | SpellDescription$ You and target opponent each create a Food token. SVar:DBLoseLife:DB$ LoseLife | LifeAmount$ 3 | Defined$ Player.Opponent | SubAbility$ DBTreasure | SpellDescription$ Each opponent loses 3 life. Create a Treasure token. SVar:DBTreasure:DB$ Token | TokenScript$ c_a_treasure_sac SVar:DBSpirit:DB$ Token | TokenAmount$ 3 | TokenScript$ w_1_1_spirit_flying | TokenTapped$ True | SpellDescription$ Create three tapped 1/1 white Spirit creature tokens with flying. diff --git a/forge-gui/res/cardsfolder/upcoming/oblivious_bookworm.txt b/forge-gui/res/cardsfolder/o/oblivious_bookworm.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/oblivious_bookworm.txt rename to forge-gui/res/cardsfolder/o/oblivious_bookworm.txt diff --git a/forge-gui/res/cardsfolder/upcoming/omnivorous_flytrap.txt b/forge-gui/res/cardsfolder/o/omnivorous_flytrap.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/omnivorous_flytrap.txt rename to forge-gui/res/cardsfolder/o/omnivorous_flytrap.txt diff --git a/forge-gui/res/cardsfolder/upcoming/only_i_know_what_awaits.txt b/forge-gui/res/cardsfolder/o/only_i_know_what_awaits.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/only_i_know_what_awaits.txt rename to forge-gui/res/cardsfolder/o/only_i_know_what_awaits.txt diff --git a/forge-gui/res/cardsfolder/upcoming/optimistic_scavenger.txt b/forge-gui/res/cardsfolder/o/optimistic_scavenger.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/optimistic_scavenger.txt rename to forge-gui/res/cardsfolder/o/optimistic_scavenger.txt diff --git a/forge-gui/res/cardsfolder/upcoming/orphans_of_the_wheat.txt b/forge-gui/res/cardsfolder/o/orphans_of_the_wheat.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/orphans_of_the_wheat.txt rename to forge-gui/res/cardsfolder/o/orphans_of_the_wheat.txt diff --git a/forge-gui/res/cardsfolder/upcoming/osseous_sticktwister.txt b/forge-gui/res/cardsfolder/o/osseous_sticktwister.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/osseous_sticktwister.txt rename to forge-gui/res/cardsfolder/o/osseous_sticktwister.txt diff --git a/forge-gui/res/cardsfolder/upcoming/overgrown_zealot.txt b/forge-gui/res/cardsfolder/o/overgrown_zealot.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/overgrown_zealot.txt rename to forge-gui/res/cardsfolder/o/overgrown_zealot.txt diff --git a/forge-gui/res/cardsfolder/upcoming/overlord_of_the_balemurk.txt b/forge-gui/res/cardsfolder/o/overlord_of_the_balemurk.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/overlord_of_the_balemurk.txt rename to forge-gui/res/cardsfolder/o/overlord_of_the_balemurk.txt diff --git a/forge-gui/res/cardsfolder/upcoming/overlord_of_the_boilerbilges.txt b/forge-gui/res/cardsfolder/o/overlord_of_the_boilerbilges.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/overlord_of_the_boilerbilges.txt rename to forge-gui/res/cardsfolder/o/overlord_of_the_boilerbilges.txt diff --git a/forge-gui/res/cardsfolder/upcoming/overlord_of_the_floodpits.txt b/forge-gui/res/cardsfolder/o/overlord_of_the_floodpits.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/overlord_of_the_floodpits.txt rename to forge-gui/res/cardsfolder/o/overlord_of_the_floodpits.txt diff --git a/forge-gui/res/cardsfolder/upcoming/overlord_of_the_hauntwoods.txt b/forge-gui/res/cardsfolder/o/overlord_of_the_hauntwoods.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/overlord_of_the_hauntwoods.txt rename to forge-gui/res/cardsfolder/o/overlord_of_the_hauntwoods.txt diff --git a/forge-gui/res/cardsfolder/upcoming/overlord_of_the_mistmoors.txt b/forge-gui/res/cardsfolder/o/overlord_of_the_mistmoors.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/overlord_of_the_mistmoors.txt rename to forge-gui/res/cardsfolder/o/overlord_of_the_mistmoors.txt diff --git a/forge-gui/res/cardsfolder/upcoming/painters_studio_defaced_gallery.txt b/forge-gui/res/cardsfolder/p/painters_studio_defaced_gallery.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/painters_studio_defaced_gallery.txt rename to forge-gui/res/cardsfolder/p/painters_studio_defaced_gallery.txt diff --git a/forge-gui/res/cardsfolder/upcoming/paranormal_analyst.txt b/forge-gui/res/cardsfolder/p/paranormal_analyst.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/paranormal_analyst.txt rename to forge-gui/res/cardsfolder/p/paranormal_analyst.txt diff --git a/forge-gui/res/cardsfolder/upcoming/patched_plaything.txt b/forge-gui/res/cardsfolder/p/patched_plaything.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/patched_plaything.txt rename to forge-gui/res/cardsfolder/p/patched_plaything.txt diff --git a/forge-gui/res/cardsfolder/upcoming/patchwork_beastie.txt b/forge-gui/res/cardsfolder/p/patchwork_beastie.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/patchwork_beastie.txt rename to forge-gui/res/cardsfolder/p/patchwork_beastie.txt diff --git a/forge-gui/res/cardsfolder/upcoming/peculiar_lighthouse.txt b/forge-gui/res/cardsfolder/p/peculiar_lighthouse.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/peculiar_lighthouse.txt rename to forge-gui/res/cardsfolder/p/peculiar_lighthouse.txt diff --git a/forge-gui/res/cardsfolder/upcoming/peer_past_the_veil.txt b/forge-gui/res/cardsfolder/p/peer_past_the_veil.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/peer_past_the_veil.txt rename to forge-gui/res/cardsfolder/p/peer_past_the_veil.txt diff --git a/forge-gui/res/cardsfolder/upcoming/persistent_constrictor.txt b/forge-gui/res/cardsfolder/p/persistent_constrictor.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/persistent_constrictor.txt rename to forge-gui/res/cardsfolder/p/persistent_constrictor.txt diff --git a/forge-gui/res/cardsfolder/upcoming/phenomenon_investigators.txt b/forge-gui/res/cardsfolder/p/phenomenon_investigators.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/phenomenon_investigators.txt rename to forge-gui/res/cardsfolder/p/phenomenon_investigators.txt diff --git a/forge-gui/res/cardsfolder/p/phyrexian_missionary.txt b/forge-gui/res/cardsfolder/p/phyrexian_missionary.txt index f4693119779..d82111a6661 100644 --- a/forge-gui/res/cardsfolder/p/phyrexian_missionary.txt +++ b/forge-gui/res/cardsfolder/p/phyrexian_missionary.txt @@ -4,7 +4,7 @@ Types:Creature Phyrexian Human Cleric PT:2/3 K:Kicker:1 B K:Lifelink -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self+kicked | OptionalDecider$ You | Execute$ TrigChangeZone | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters, if it was kicked, you may return target creature card from your graveyard to your hand. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self+kicked | Execute$ TrigChangeZone | TriggerDescription$ When CARDNAME enters, if it was kicked, return target creature card from your graveyard to your hand. SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Creature.YouCtrl DeckHas:Ability$Graveyard DeckHints:Color$Black diff --git a/forge-gui/res/cardsfolder/upcoming/piggy_bank.txt b/forge-gui/res/cardsfolder/p/piggy_bank.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/piggy_bank.txt rename to forge-gui/res/cardsfolder/p/piggy_bank.txt diff --git a/forge-gui/res/cardsfolder/p/pious_evangel_wayward_disciple.txt b/forge-gui/res/cardsfolder/p/pious_evangel_wayward_disciple.txt index 5357abe9102..0f2227cc1c6 100644 --- a/forge-gui/res/cardsfolder/p/pious_evangel_wayward_disciple.txt +++ b/forge-gui/res/cardsfolder/p/pious_evangel_wayward_disciple.txt @@ -2,7 +2,7 @@ Name:Pious Evangel ManaCost:2 W Types:Creature Human Cleric PT:2/2 -T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigGainLife | ValidCard$ Card.Self,Creature.Other+YouCtrl | TriggerDescription$ Whenever CARDNAME or another creature you control enters, you gain 1 life. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | Execute$ TrigGainLife | ValidCard$ Card.Self,Creature.Other+YouCtrl | TriggerDescription$ Whenever CARDNAME or another creature you control enters, you gain 1 life. SVar:TrigGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 1 A:AB$ SetState | Cost$ 2 T Sac<1/Permanent.Other/another permanent> | Defined$ Self | Mode$ Transform | SpellDescription$ Transform CARDNAME. AlternateMode:DoubleFaced diff --git a/forge-gui/res/cardsfolder/upcoming/piranha_fly.txt b/forge-gui/res/cardsfolder/p/piranha_fly.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/piranha_fly.txt rename to forge-gui/res/cardsfolder/p/piranha_fly.txt diff --git a/forge-gui/res/cardsfolder/upcoming/polluted_cistern_dim_oubliette.txt b/forge-gui/res/cardsfolder/p/polluted_cistern_dim_oubliette.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/polluted_cistern_dim_oubliette.txt rename to forge-gui/res/cardsfolder/p/polluted_cistern_dim_oubliette.txt diff --git a/forge-gui/res/cardsfolder/upcoming/popular_egotist.txt b/forge-gui/res/cardsfolder/p/popular_egotist.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/popular_egotist.txt rename to forge-gui/res/cardsfolder/p/popular_egotist.txt diff --git a/forge-gui/res/cardsfolder/upcoming/possessed_goat.txt b/forge-gui/res/cardsfolder/p/possessed_goat.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/possessed_goat.txt rename to forge-gui/res/cardsfolder/p/possessed_goat.txt diff --git a/forge-gui/res/cardsfolder/upcoming/prideful_parent.txt b/forge-gui/res/cardsfolder/p/prideful_parent.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/prideful_parent.txt rename to forge-gui/res/cardsfolder/p/prideful_parent.txt diff --git a/forge-gui/res/cardsfolder/q/quartzwood_crasher.txt b/forge-gui/res/cardsfolder/q/quartzwood_crasher.txt index 0f8b77f3ad3..be0f574fb8c 100644 --- a/forge-gui/res/cardsfolder/q/quartzwood_crasher.txt +++ b/forge-gui/res/cardsfolder/q/quartzwood_crasher.txt @@ -4,7 +4,7 @@ Types:Creature Dinosaur Beast PT:6/6 K:Trample T:Mode$ DamageDoneOnce | CombatDamage$ True | ValidSource$ Creature.YouCtrl+withTrample | TriggerZones$ Battlefield | ValidTarget$ Player | Execute$ DBToken | TriggerDescription$ Whenever one or more creatures you control with trample deal combat damage to a player, create an X/X green Dinosaur Beast creature token with trample, where X is the amount of damage those creatures dealt to that player. -SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenOwner$ You | TokenScript$ g_x_x_dinosaur_beast_trample | TokenPower$ X | TokenToughness$ X | TokenOwner$ You +SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenScript$ g_x_x_dinosaur_beast_trample | TokenPower$ X | TokenToughness$ X | TokenOwner$ You SVar:X:TriggerCount$DamageAmount DeckHas:Ability$Token Oracle:Trample\nWhenever one or more creatures you control with trample deal combat damage to a player, create an X/X green Dinosaur Beast creature token with trample, where X is the amount of damage those creatures dealt to that player. diff --git a/forge-gui/res/cardsfolder/q/quest_for_the_gravelord.txt b/forge-gui/res/cardsfolder/q/quest_for_the_gravelord.txt index 889096c2e6d..27d51f647d0 100644 --- a/forge-gui/res/cardsfolder/q/quest_for_the_gravelord.txt +++ b/forge-gui/res/cardsfolder/q/quest_for_the_gravelord.txt @@ -1,7 +1,7 @@ Name:Quest for the Gravelord ManaCost:B Types:Enchantment -A:AB$ Token | Cost$ SubCounter<3/QUEST> Sac<1/CARDNAME> | TokenAmount$ 1 | TokenScript$ b_5_5_zombie_giant | TokenOwner$ You | TokenAmount$ 1 | SpellDescription$ Create a 5/5 black Zombie Giant creature token. +A:AB$ Token | Cost$ SubCounter<3/QUEST> Sac<1/CARDNAME> | TokenAmount$ 1 | TokenScript$ b_5_5_zombie_giant | TokenOwner$ You | SpellDescription$ Create a 5/5 black Zombie Giant creature token. T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Creature | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigPutCounter | TriggerDescription$ Whenever a creature dies, you may put a quest counter on CARDNAME. SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ QUEST | CounterNum$ 1 SVar:MaxQuestEffect:3 diff --git a/forge-gui/res/cardsfolder/upcoming/ragged_playmate.txt b/forge-gui/res/cardsfolder/r/ragged_playmate.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ragged_playmate.txt rename to forge-gui/res/cardsfolder/r/ragged_playmate.txt diff --git a/forge-gui/res/cardsfolder/r/rags_riches.txt b/forge-gui/res/cardsfolder/r/rags_riches.txt index 26d9674cab5..24418f58cc3 100644 --- a/forge-gui/res/cardsfolder/r/rags_riches.txt +++ b/forge-gui/res/cardsfolder/r/rags_riches.txt @@ -11,7 +11,7 @@ Name:Riches ManaCost:5 U U Types:Sorcery K:Aftermath -A:SP$ ChooseCard | Defined$ Opponent | Mandatory$ True | Amount$ 1 | Choices$ Creature | ControlledByPlayer$ Chooser | ChoiceTitle$ Choose a creature to be stolen | AILogic$ WorstCard | Mandatory$ True | SubAbility$ StealChosen | SpellDescription$ Each opponent chooses a creature they control. You gain control of those creatures. +A:SP$ ChooseCard | Defined$ Opponent | Amount$ 1 | Choices$ Creature | ControlledByPlayer$ Chooser | ChoiceTitle$ Choose a creature to be stolen | AILogic$ WorstCard | Mandatory$ True | SubAbility$ StealChosen | SpellDescription$ Each opponent chooses a creature they control. You gain control of those creatures. SVar:StealChosen:DB$ GainControl | AllValid$ Permanent.ChosenCard SVar:NeedsToPlay:Creature.OppCtrl Oracle:Aftermath (Cast this spell only from your graveyard. Then exile it.)\nEach opponent chooses a creature they control. You gain control of those creatures. diff --git a/forge-gui/res/cardsfolder/r/ral_and_the_implicit_maze.txt b/forge-gui/res/cardsfolder/r/ral_and_the_implicit_maze.txt index ff178e89f71..f4e50e5c35c 100644 --- a/forge-gui/res/cardsfolder/r/ral_and_the_implicit_maze.txt +++ b/forge-gui/res/cardsfolder/r/ral_and_the_implicit_maze.txt @@ -3,7 +3,7 @@ ManaCost:3 R R Types:Enchantment Saga K:Chapter:3:DBDamageAll,DBImpulseDraw,DBToken SVar:DBDamageAll:DB$ DamageAll | ValidCards$ Creature.OppCtrl,Planeswalker.OppCtrl | NumDmg$ 2 | SpellDescription$ CARDNAME deals 2 damage to each creature and planeswalker your opponents control. -SVar:DBImpulseDraw:AB$ Dig | Cost$ Discard<1/Card> | Defined$ You | DigNum$ 2 | ChangeNum$ All | DestinationZone$ Exile | SubAbility$ DBEffect | RememberChanged$ True | SubAbility$ DBEffect | SpellDescription$ You may discard a card. If you do, exile the top two cards of your library. You may play them until the end of your next turn. +SVar:DBImpulseDraw:AB$ Dig | Cost$ Discard<1/Card> | Defined$ You | DigNum$ 2 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBEffect | SpellDescription$ You may discard a card. If you do, exile the top two cards of your library. You may play them until the end of your next turn. SVar:DBEffect:DB$ Effect | RememberObjects$ RememberedCard | StaticAbilities$ STPlay | SubAbility$ DBCleanup | ForgetOnMoved$ Exile | Duration$ UntilTheEndOfYourNextTurn SVar:STPlay:Mode$ Continuous | MayPlay$ True | EffectZone$ Command | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ You may play them until the end of your next turn. SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True diff --git a/forge-gui/res/cardsfolder/upcoming/rampaging_soulrager.txt b/forge-gui/res/cardsfolder/r/rampaging_soulrager.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/rampaging_soulrager.txt rename to forge-gui/res/cardsfolder/r/rampaging_soulrager.txt diff --git a/forge-gui/res/cardsfolder/r/rampaging_yao_guai.txt b/forge-gui/res/cardsfolder/r/rampaging_yao_guai.txt index 729297c6853..26eacdf17a3 100644 --- a/forge-gui/res/cardsfolder/r/rampaging_yao_guai.txt +++ b/forge-gui/res/cardsfolder/r/rampaging_yao_guai.txt @@ -7,7 +7,7 @@ K:Trample K:etbCounter:P1P1:X SVar:X:Count$xPaid T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDestroy | TriggerDescription$ When CARDNAME enters, destroy any number of target artifacts and/or enchantments with total mana value X or less. -SVar:TrigDestroy:DB$ Destroy | ValidTgts$ Artifact,Enchantment | TgtPrompt$ Select any number of target artifacts and/or enchantments with total mana value X | TargetMin$ 0 | TargetMax$ Y | MaxTotalTargetCMC$ X | ValidTgts$ Artifact,Enchantment | TgtPrompt$ Select up to X target creature cards with total mana value X or less +SVar:TrigDestroy:DB$ Destroy | TargetMin$ 0 | TargetMax$ Y | MaxTotalTargetCMC$ X | ValidTgts$ Artifact,Enchantment | TgtPrompt$ Select up to X target creature cards with total mana value X or less SVar:Y:Count$Valid Enchantment,Artifact DeckHas:Ability$Counters Oracle:Vigilance, trample\nRampaging Yao Guai enters with X +1/+1 counters on it.\nWhen Rampaging Yao Guai enters, destroy any number of target artifacts and/or enchantments with total mana value X or less. diff --git a/forge-gui/res/cardsfolder/upcoming/raucous_carnival.txt b/forge-gui/res/cardsfolder/r/raucous_carnival.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/raucous_carnival.txt rename to forge-gui/res/cardsfolder/r/raucous_carnival.txt diff --git a/forge-gui/res/cardsfolder/upcoming/razorkin_hordecaller.txt b/forge-gui/res/cardsfolder/r/razorkin_hordecaller.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/razorkin_hordecaller.txt rename to forge-gui/res/cardsfolder/r/razorkin_hordecaller.txt diff --git a/forge-gui/res/cardsfolder/upcoming/razorkin_needlehead.txt b/forge-gui/res/cardsfolder/r/razorkin_needlehead.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/razorkin_needlehead.txt rename to forge-gui/res/cardsfolder/r/razorkin_needlehead.txt diff --git a/forge-gui/res/cardsfolder/upcoming/razortrap_gorge.txt b/forge-gui/res/cardsfolder/r/razortrap_gorge.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/razortrap_gorge.txt rename to forge-gui/res/cardsfolder/r/razortrap_gorge.txt diff --git a/forge-gui/res/cardsfolder/upcoming/reality_is_mine_to_control.txt b/forge-gui/res/cardsfolder/r/reality_is_mine_to_control.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/reality_is_mine_to_control.txt rename to forge-gui/res/cardsfolder/r/reality_is_mine_to_control.txt diff --git a/forge-gui/res/cardsfolder/upcoming/redress_fate.txt b/forge-gui/res/cardsfolder/r/redress_fate.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/redress_fate.txt rename to forge-gui/res/cardsfolder/r/redress_fate.txt diff --git a/forge-gui/res/cardsfolder/upcoming/reluctant_role_model.txt b/forge-gui/res/cardsfolder/r/reluctant_role_model.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/reluctant_role_model.txt rename to forge-gui/res/cardsfolder/r/reluctant_role_model.txt diff --git a/forge-gui/res/cardsfolder/upcoming/rendmaw_creaking_nest.txt b/forge-gui/res/cardsfolder/r/rendmaw_creaking_nest.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/rendmaw_creaking_nest.txt rename to forge-gui/res/cardsfolder/r/rendmaw_creaking_nest.txt diff --git a/forge-gui/res/cardsfolder/upcoming/restricted_office_lecture_hall.txt b/forge-gui/res/cardsfolder/r/restricted_office_lecture_hall.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/restricted_office_lecture_hall.txt rename to forge-gui/res/cardsfolder/r/restricted_office_lecture_hall.txt diff --git a/forge-gui/res/cardsfolder/upcoming/resurrected_cultist.txt b/forge-gui/res/cardsfolder/r/resurrected_cultist.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/resurrected_cultist.txt rename to forge-gui/res/cardsfolder/r/resurrected_cultist.txt diff --git a/forge-gui/res/cardsfolder/r/revival_experiment.txt b/forge-gui/res/cardsfolder/r/revival_experiment.txt index c598759eab6..243a6666deb 100644 --- a/forge-gui/res/cardsfolder/r/revival_experiment.txt +++ b/forge-gui/res/cardsfolder/r/revival_experiment.txt @@ -3,7 +3,7 @@ ManaCost:4 B G Types:Sorcery A:SP$ ChooseCard | Defined$ You | Choices$ Card.Permanent+YouOwn | ChoiceZone$ Graveyard | ChooseEach$ Artifact & Battle & Creature & Enchantment & Land & Planeswalker | ControlledByPlayer$ Chooser | MinAmount$ 0 | Amount$ 1 | Reveal$ True | RememberChosen$ True | SubAbility$ DBReturn | StackDescription$ REP return_{p:You} returns & from your_from their & You lose_{p:You} loses & Exile_{p:You} exiles | SpellDescription$ For each permanent type, return up to one card of that type from your graveyard to the battlefield. You lose 3 life for each card returned this way. Exile CARDNAME. SVar:DBReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | Defined$ Remembered | RememberChanged$ True | ForgetOtherRemembered$ True | SubAbility$ DBLoseLife | StackDescription$ None -SVar:DBLoseLife:DB$ LoseLife | LifeAmount$ X | SubAbility$ DBChange | SubAbility$ DBExile | StackDescription$ None +SVar:DBLoseLife:DB$ LoseLife | LifeAmount$ X | SubAbility$ DBExile | StackDescription$ None SVar:DBExile:DB$ ChangeZone | Origin$ Stack | Destination$ Exile | SubAbility$ DBCleanup | StackDescription$ None SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenCard$ True SVar:X:Remembered$Amount/Times.3 diff --git a/forge-gui/res/cardsfolder/upcoming/rip_spawn_hunter.txt b/forge-gui/res/cardsfolder/r/rip_spawn_hunter.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/rip_spawn_hunter.txt rename to forge-gui/res/cardsfolder/r/rip_spawn_hunter.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ripchain_razorkin.txt b/forge-gui/res/cardsfolder/r/ripchain_razorkin.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ripchain_razorkin.txt rename to forge-gui/res/cardsfolder/r/ripchain_razorkin.txt diff --git a/forge-gui/res/cardsfolder/upcoming/rite_of_the_moth.txt b/forge-gui/res/cardsfolder/r/rite_of_the_moth.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/rite_of_the_moth.txt rename to forge-gui/res/cardsfolder/r/rite_of_the_moth.txt diff --git a/forge-gui/res/cardsfolder/upcoming/roaring_furnace_steaming_sauna.txt b/forge-gui/res/cardsfolder/r/roaring_furnace_steaming_sauna.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/roaring_furnace_steaming_sauna.txt rename to forge-gui/res/cardsfolder/r/roaring_furnace_steaming_sauna.txt diff --git a/forge-gui/res/cardsfolder/r/rona_herald_of_invasion_rona_tolarian_obliterator.txt b/forge-gui/res/cardsfolder/r/rona_herald_of_invasion_rona_tolarian_obliterator.txt index 4be743354de..b8afcb07b0f 100644 --- a/forge-gui/res/cardsfolder/r/rona_herald_of_invasion_rona_tolarian_obliterator.txt +++ b/forge-gui/res/cardsfolder/r/rona_herald_of_invasion_rona_tolarian_obliterator.txt @@ -21,7 +21,7 @@ Types:Legendary Creature Phyrexian Wizard PT:5/5 K:Trample T:Mode$ DamageDone | ValidTarget$ Card.Self | Execute$ TrigExile | TriggerDescription$ Whenever a source deals damage to CARDNAME, that source's controller exiles a card from their hand at random. If it's a land card, you may put it onto the battlefield under your control. Otherwise, you may cast it without paying its mana cost. -SVar:TrigExile:DB$ ChangeZone | Origin$ Hand | Destination$ Exile | ChangeType$ Card | DefinedPlayer$ TriggeredSourceController | Mandatory$ True | ChangeType$ Card | Hidden$ True | AtRandom$ True | RememberChanged$ True | SubAbility$ DBRonaLand +SVar:TrigExile:DB$ ChangeZone | Origin$ Hand | Destination$ Exile | DefinedPlayer$ TriggeredSourceController | Mandatory$ True | ChangeType$ Card | Hidden$ True | AtRandom$ True | RememberChanged$ True | SubAbility$ DBRonaLand SVar:DBRonaLand:DB$ ChangeZone | Origin$ Exile | Destination$ Battlefield | ChangeType$ Land.IsRemembered | Hidden$ True | Optional$ True | GainControl$ True | SubAbility$ DBRonaPlay SVar:DBRonaPlay:DB$ Play | ValidZone$ Exile | Controller$ You | Valid$ Card.IsRemembered | ValidSA$ Spell | WithoutManaCost$ True | Optional$ True | SubAbility$ DBRonaCleanup SVar:DBRonaCleanup:DB$ Cleanup | ClearRemembered$ True diff --git a/forge-gui/res/cardsfolder/upcoming/rootwise_survivor.txt b/forge-gui/res/cardsfolder/r/rootwise_survivor.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/rootwise_survivor.txt rename to forge-gui/res/cardsfolder/r/rootwise_survivor.txt diff --git a/forge-gui/res/cardsfolder/r/rose_room_treasurer.txt b/forge-gui/res/cardsfolder/r/rose_room_treasurer.txt index 268201472a9..27fee03f341 100644 --- a/forge-gui/res/cardsfolder/r/rose_room_treasurer.txt +++ b/forge-gui/res/cardsfolder/r/rose_room_treasurer.txt @@ -4,7 +4,7 @@ Types:Creature Ogre Warrior PT:4/3 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.YouCtrl+Other | TriggerZones$ Battlefield | Execute$ TrigTreasure | TriggerDescription$ Alliance — Whenever another creature you control enters, create a Treasure token if this is the first or second time this ability has resolved this turn. Otherwise, you may pay {X}. When you do, CARDNAME deals X damage to any target. SVar:TrigTreasure:DB$ Token | TokenScript$ c_a_treasure_sac | SubAbility$ DBChooseX | ConditionCheckSVar$ Resolved | ConditionSVarCompare$ LE2 -SVar:DBChooseX:DB$ ChooseNumber | ChooseAnyNumber$ True | ListTitle$ amount of mana to pay | SubAbility$ DBStore | ConditionCheckSVar$ Resolved | ConditionSVarCompare$ GT2 | SubAbility$ DBImmediateTrig +SVar:DBChooseX:DB$ ChooseNumber | ChooseAnyNumber$ True | ListTitle$ amount of mana to pay | ConditionCheckSVar$ Resolved | ConditionSVarCompare$ GT2 | SubAbility$ DBImmediateTrig SVar:DBImmediateTrig:DB$ ImmediateTrigger | UnlessCost$ X | UnlessPayer$ You | UnlessSwitched$ True | ConditionCheckSVar$ Resolved | ConditionSVarCompare$ GT2 | Execute$ TrigDamage | RememberSVarAmount$ X | TriggerDescription$ When you do, CARDNAME deals X damage to any target. SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Any | NumDmg$ Y SVar:Resolved:Count$ResolvedThisTurn diff --git a/forge-gui/res/cardsfolder/upcoming/rot_like_the_scum_you_are.txt b/forge-gui/res/cardsfolder/r/rot_like_the_scum_you_are.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/rot_like_the_scum_you_are.txt rename to forge-gui/res/cardsfolder/r/rot_like_the_scum_you_are.txt diff --git a/forge-gui/res/cardsfolder/r/rousing_refrain.txt b/forge-gui/res/cardsfolder/r/rousing_refrain.txt index df86d009684..d79dc59228f 100644 --- a/forge-gui/res/cardsfolder/r/rousing_refrain.txt +++ b/forge-gui/res/cardsfolder/r/rousing_refrain.txt @@ -2,7 +2,7 @@ Name:Rousing Refrain ManaCost:3 R R Types:Sorcery K:Suspend:3:1 R -A:SP$ Mana | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | SubAbility$ DBMana | AILogic$ ManaRitual | Produced$ R | Amount$ Z | PersistentMana$ True | Defined$ You | SubAbility$ DBChange | StackDescription$ SpellDescription | SpellDescription$ Until end of turn, you don't lose this mana as steps and phases end. +A:SP$ Mana | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | AILogic$ ManaRitual | Produced$ R | Amount$ Z | PersistentMana$ True | Defined$ You | SubAbility$ DBChange | StackDescription$ SpellDescription | SpellDescription$ Add {R} for each card in target opponent's hand. Until end of turn, you don't lose this mana as steps and phases end. SVar:Z:TargetedPlayer$CardsInHand SVar:DBChange:DB$ ChangeZone | Origin$ Stack | Destination$ Exile | WithCountersType$ TIME | WithCountersAmount$ 3 | SpellDescription$ Exile CARDNAME with three time counters on it. Oracle:Add {R} for each card in target opponent's hand. Until end of turn, you don't lose this mana as steps and phases end. Exile Rousing Refrain with three time counters on it.\nSuspend 3—{1}{R} (Rather than cast this card from your hand, you may pay {1}{R} and exile it with three time counters on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost.) diff --git a/forge-gui/res/cardsfolder/upcoming/running_is_useless.txt b/forge-gui/res/cardsfolder/r/running_is_useless.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/running_is_useless.txt rename to forge-gui/res/cardsfolder/r/running_is_useless.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sadistic_shell_game.txt b/forge-gui/res/cardsfolder/s/sadistic_shell_game.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sadistic_shell_game.txt rename to forge-gui/res/cardsfolder/s/sadistic_shell_game.txt diff --git a/forge-gui/res/cardsfolder/upcoming/savior_of_the_small.txt b/forge-gui/res/cardsfolder/s/savior_of_the_small.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/savior_of_the_small.txt rename to forge-gui/res/cardsfolder/s/savior_of_the_small.txt diff --git a/forge-gui/res/cardsfolder/upcoming/saw.txt b/forge-gui/res/cardsfolder/s/saw.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/saw.txt rename to forge-gui/res/cardsfolder/s/saw.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sawblade_skinripper.txt b/forge-gui/res/cardsfolder/s/sawblade_skinripper.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sawblade_skinripper.txt rename to forge-gui/res/cardsfolder/s/sawblade_skinripper.txt diff --git a/forge-gui/res/cardsfolder/upcoming/say_its_name.txt b/forge-gui/res/cardsfolder/s/say_its_name.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/say_its_name.txt rename to forge-gui/res/cardsfolder/s/say_its_name.txt diff --git a/forge-gui/res/cardsfolder/upcoming/scrabbling_skullcrab.txt b/forge-gui/res/cardsfolder/s/scrabbling_skullcrab.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/scrabbling_skullcrab.txt rename to forge-gui/res/cardsfolder/s/scrabbling_skullcrab.txt diff --git a/forge-gui/res/cardsfolder/upcoming/screaming_nemesis.txt b/forge-gui/res/cardsfolder/s/screaming_nemesis.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/screaming_nemesis.txt rename to forge-gui/res/cardsfolder/s/screaming_nemesis.txt diff --git a/forge-gui/res/cardsfolder/upcoming/seance_board.txt b/forge-gui/res/cardsfolder/s/seance_board.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/seance_board.txt rename to forge-gui/res/cardsfolder/s/seance_board.txt diff --git a/forge-gui/res/cardsfolder/upcoming/secret_arcade_dusty_parlor.txt b/forge-gui/res/cardsfolder/s/secret_arcade_dusty_parlor.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/secret_arcade_dusty_parlor.txt rename to forge-gui/res/cardsfolder/s/secret_arcade_dusty_parlor.txt diff --git a/forge-gui/res/cardsfolder/upcoming/seized_from_slumber.txt b/forge-gui/res/cardsfolder/s/seized_from_slumber.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/seized_from_slumber.txt rename to forge-gui/res/cardsfolder/s/seized_from_slumber.txt diff --git a/forge-gui/res/cardsfolder/upcoming/shardmages_rescue.txt b/forge-gui/res/cardsfolder/s/shardmages_rescue.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/shardmages_rescue.txt rename to forge-gui/res/cardsfolder/s/shardmages_rescue.txt diff --git a/forge-gui/res/cardsfolder/s/shark_typhoon.txt b/forge-gui/res/cardsfolder/s/shark_typhoon.txt index 891102c9f36..a46bd07af5f 100644 --- a/forge-gui/res/cardsfolder/s/shark_typhoon.txt +++ b/forge-gui/res/cardsfolder/s/shark_typhoon.txt @@ -2,11 +2,11 @@ Name:Shark Typhoon ManaCost:5 U Types:Enchantment T:Mode$ SpellCast | ValidCard$ Card.nonCreature | ValidActivatingPlayer$ You | Execute$ TrigToken | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast a noncreature spell, create an X/X blue Shark creature token with flying, where X is that spell's mana value. -SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ u_x_x_shark_flying | TokenOwner$ You | TokenPower$ Y | TokenToughness$ Y | TokenAmount$ 1 +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ u_x_x_shark_flying | TokenOwner$ You | TokenPower$ Y | TokenToughness$ Y SVar:Y:TriggeredStackInstance$CardManaCostLKI K:Cycling:X 1 U T:Mode$ Cycled | ValidCard$ Card.Self | Execute$ TrigToken2 | TriggerDescription$ When you cycle CARDNAME, create an X/X blue Shark creature token with flying. -SVar:TrigToken2:DB$ Token | TokenAmount$ 1 | TokenScript$ u_x_x_shark_flying | TokenOwner$ You | TokenPower$ X | TokenToughness$ X | TokenAmount$ 1 +SVar:TrigToken2:DB$ Token | TokenAmount$ 1 | TokenScript$ u_x_x_shark_flying | TokenOwner$ You | TokenPower$ X | TokenToughness$ X SVar:X:Count$xPaid DeckHas:Ability$Token Oracle:Whenever you cast a noncreature spell, create an X/X blue Shark creature token with flying, where X is that spell's mana value.\nCycling {X}{1}{U} ({X}{1}{U}, Discard this card: Draw a card.)\nWhen you cycle Shark Typhoon, create an X/X blue Shark creature token with flying. diff --git a/forge-gui/res/cardsfolder/upcoming/sheltered_by_ghosts.txt b/forge-gui/res/cardsfolder/s/sheltered_by_ghosts.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sheltered_by_ghosts.txt rename to forge-gui/res/cardsfolder/s/sheltered_by_ghosts.txt diff --git a/forge-gui/res/cardsfolder/upcoming/shepherding spirits.txt b/forge-gui/res/cardsfolder/s/shepherding_spirits.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/shepherding spirits.txt rename to forge-gui/res/cardsfolder/s/shepherding_spirits.txt diff --git a/forge-gui/res/cardsfolder/upcoming/shrewd_storyteller.txt b/forge-gui/res/cardsfolder/s/shrewd_storyteller.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/shrewd_storyteller.txt rename to forge-gui/res/cardsfolder/s/shrewd_storyteller.txt diff --git a/forge-gui/res/cardsfolder/upcoming/shriekwood_devourer.txt b/forge-gui/res/cardsfolder/s/shriekwood_devourer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/shriekwood_devourer.txt rename to forge-gui/res/cardsfolder/s/shriekwood_devourer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/shroudstomper.txt b/forge-gui/res/cardsfolder/s/shroudstomper.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/shroudstomper.txt rename to forge-gui/res/cardsfolder/s/shroudstomper.txt diff --git a/forge-gui/res/cardsfolder/s/sibilant_spirit.txt b/forge-gui/res/cardsfolder/s/sibilant_spirit.txt index e372b84e09d..655bf6051f7 100644 --- a/forge-gui/res/cardsfolder/s/sibilant_spirit.txt +++ b/forge-gui/res/cardsfolder/s/sibilant_spirit.txt @@ -3,6 +3,6 @@ ManaCost:5 U Types:Creature Spirit PT:5/6 K:Flying -T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDraw | OptionalDecider$ Opponent | Execute$ TrigDraw | TriggerDescription$ Whenever CARDNAME attacks, defending player may draw a card. -SVar:TrigDraw:DB$ Draw | Defined$ TriggeredDefendingPlayer | NumCards$ 1 +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerDescription$ Whenever CARDNAME attacks, defending player may draw a card. +SVar:TrigDraw:DB$ Draw | Defined$ TriggeredDefendingPlayer | NumCards$ 1 | OptionalDecider$ True Oracle:Flying\nWhenever Sibilant Spirit attacks, defending player may draw a card. diff --git a/forge-gui/res/cardsfolder/upcoming/silent_hallcreeper.txt b/forge-gui/res/cardsfolder/s/silent_hallcreeper.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/silent_hallcreeper.txt rename to forge-gui/res/cardsfolder/s/silent_hallcreeper.txt diff --git a/forge-gui/res/cardsfolder/s/skeleton_ship.txt b/forge-gui/res/cardsfolder/s/skeleton_ship.txt index 1b35c112f21..ceb118f9d8b 100644 --- a/forge-gui/res/cardsfolder/s/skeleton_ship.txt +++ b/forge-gui/res/cardsfolder/s/skeleton_ship.txt @@ -4,6 +4,6 @@ Types:Legendary Creature Skeleton PT:0/3 T:Mode$ Always | TriggerZones$ Battlefield | IsPresent$ Island.YouCtrl | PresentCompare$ EQ0 | Execute$ TrigSac | TriggerDescription$ When you control no Islands, sacrifice CARDNAME. SVar:TrigSac:DB$ Sacrifice -A:AB$ PutCounter | Cost$ T | IsCurse$ True | ValidTgts$ Creature | TgtPrompt$ Select target Creature | CounterType$ M1M1 | CounterNum$ 1 | IsCurse$ True | SpellDescription$ Put a -1/-1 counter on target creature. +A:AB$ PutCounter | Cost$ T | ValidTgts$ Creature | TgtPrompt$ Select target Creature | CounterType$ M1M1 | CounterNum$ 1 | IsCurse$ True | SpellDescription$ Put a -1/-1 counter on target creature. SVar:NeedsToPlay:Island.YouCtrl Oracle:When you control no Islands, sacrifice Skeleton Ship.\n{T}: Put a -1/-1 counter on target creature. diff --git a/forge-gui/res/cardsfolder/s/skullcap_snail.txt b/forge-gui/res/cardsfolder/s/skullcap_snail.txt index 85ba74048eb..ea0542706cc 100644 --- a/forge-gui/res/cardsfolder/s/skullcap_snail.txt +++ b/forge-gui/res/cardsfolder/s/skullcap_snail.txt @@ -3,5 +3,5 @@ ManaCost:1 B Types:Creature Fungus Snail PT:1/1 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$ When CARDNAME enters, target opponent exiles a card from their hand. -SVar:TrigExile:DB$ ChangeZone | Chooser$ Targeted | Origin$ Hand | Destination$ Exile | ChangeType$ Card | ValidTgts$ Opponent | Mandatory$ True | ChangeType$ Card | ChangeNum$ 1 | Hidden$ True | IsCurse$ True +SVar:TrigExile:DB$ ChangeZone | Chooser$ Targeted | Origin$ Hand | Destination$ Exile | ValidTgts$ Opponent | Mandatory$ True | ChangeType$ Card | ChangeNum$ 1 | Hidden$ True | IsCurse$ True Oracle:When Skullcap Snail enters, target opponent exiles a card from their hand. diff --git a/forge-gui/res/cardsfolder/upcoming/skullsnap_nuisance.txt b/forge-gui/res/cardsfolder/s/skullsnap_nuisance.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/skullsnap_nuisance.txt rename to forge-gui/res/cardsfolder/s/skullsnap_nuisance.txt diff --git a/forge-gui/res/cardsfolder/upcoming/slavering_branchsnapper.txt b/forge-gui/res/cardsfolder/s/slavering_branchsnapper.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/slavering_branchsnapper.txt rename to forge-gui/res/cardsfolder/s/slavering_branchsnapper.txt diff --git a/forge-gui/res/cardsfolder/upcoming/smoky_lounge_misty_salon.txt b/forge-gui/res/cardsfolder/s/smoky_lounge_misty_salon.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/smoky_lounge_misty_salon.txt rename to forge-gui/res/cardsfolder/s/smoky_lounge_misty_salon.txt diff --git a/forge-gui/res/cardsfolder/upcoming/soaring_lightbringer.txt b/forge-gui/res/cardsfolder/s/soaring_lightbringer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/soaring_lightbringer.txt rename to forge-gui/res/cardsfolder/s/soaring_lightbringer.txt diff --git a/forge-gui/res/cardsfolder/s/solitary_study_endless_corridor.txt b/forge-gui/res/cardsfolder/s/solitary_study_endless_corridor.txt new file mode 100644 index 00000000000..e84fb963a92 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/solitary_study_endless_corridor.txt @@ -0,0 +1,17 @@ +Name:Solitary Study +ManaCost:1 W +Types:Enchantment Room +AlternateMode:Split +S:Mode$ Continuous | Affected$ Creature.YouCtrl | AddPower$ 1 | Description$ Creatures you control get +1/+0. +Oracle:Creatures you control get +1/+0. + +ALTERNATE + +Name:Endless Corridor +ManaCost:1 W +Types:Enchantment Room +T:Mode$ UnlockDoor | ValidPlayer$ You | ValidCard$ Card.Self | Execute$ TrigConjure | TriggerDescription$ When you unlock this door, conjure a duplicate of this card into your hand. When you do, target creature you control gains first strike until end of turn. +SVar:TrigConjure:DB$ MakeCard | Conjure$ True | DefinedName$ TriggeredCard | Zone$ Hand | SubAbility$ DBImmediateTrigger +SVar:DBImmediateTrigger:DB$ ImmediateTrigger | Execute$ TrigFirstStrike | TriggerDescription$ When you do, target creature you control gains first strike until end of turn. +SVar:TrigFirstStrike:DB$ Pump | ValidTgts$ Creature.YouCtrl | KW$ First Strike | TgtPrompt$ Select target creature you control | SpellDescription$ Target creature you control gains first strike until end of turn. +Oracle:When you unlock this door, conjure a duplicate of this card into your hand. When you do, target creature you control gains first strike until end of turn. diff --git a/forge-gui/res/cardsfolder/s/soul_guide_lantern.txt b/forge-gui/res/cardsfolder/s/soul_guide_lantern.txt index 7f3a9806503..731515c28da 100644 --- a/forge-gui/res/cardsfolder/s/soul_guide_lantern.txt +++ b/forge-gui/res/cardsfolder/s/soul_guide_lantern.txt @@ -3,6 +3,6 @@ ManaCost:1 Types:Artifact T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChange | TriggerDescription$ When CARDNAME enters, exile target card from a graveyard. SVar:TrigChange:DB$ ChangeZone | Origin$ Graveyard | Destination$ Exile | TgtPrompt$ Choose target card in a graveyard | ValidTgts$ Card | TgtZone$ Graveyard -A:AB$ ChangeZoneAll | Cost$ T Sac<1/CARDNAME> | ChangeType$ Opponent | Origin$ Graveyard | Destination$ Exile | ChangeType$ Card.OppOwn | AILogic$ Curse | SpellDescription$ Exile each opponent's graveyard. +A:AB$ ChangeZoneAll | Cost$ T Sac<1/CARDNAME> | Origin$ Graveyard | Destination$ Exile | ChangeType$ Card.OppOwn | AILogic$ Curse | SpellDescription$ Exile each opponent's graveyard. A:AB$ Draw | Cost$ 1 T Sac<1/CARDNAME> | NumCards$ 1 | SpellDescription$ Draw a card. Oracle:When Soul-Guide Lantern enters, exile target card from a graveyard.\n{T}, Sacrifice Soul-Guide Lantern: Exile each opponent's graveyard.\n{1}, {T}, Sacrifice Soul-Guide Lantern: Draw a card. diff --git a/forge-gui/res/cardsfolder/s/spawning_bed.txt b/forge-gui/res/cardsfolder/s/spawning_bed.txt index e8343c38bd1..0d82a6d20b4 100644 --- a/forge-gui/res/cardsfolder/s/spawning_bed.txt +++ b/forge-gui/res/cardsfolder/s/spawning_bed.txt @@ -2,7 +2,7 @@ Name:Spawning Bed ManaCost:no cost Types:Land A:AB$ Mana | Cost$ T | Produced$ C | SpellDescription$ Add {C}. -A:AB$ Token | Cost$ 6 T Sac<1/CARDNAME> | TokenOwner$ You | TokenAmount$ 3 | TokenScript$ c_1_1_eldrazi_scion_sac | TokenOwner$ You | SpellDescription$ Create three 1/1 colorless Eldrazi Scion creature tokens. They have "Sacrifice this creature: Add {C}." +A:AB$ Token | Cost$ 6 T Sac<1/CARDNAME> | TokenOwner$ You | TokenAmount$ 3 | TokenScript$ c_1_1_eldrazi_scion_sac | SpellDescription$ Create three 1/1 colorless Eldrazi Scion creature tokens. They have "Sacrifice this creature: Add {C}." DeckHints:Type$Eldrazi DeckHas:Ability$Mana.Colorless|Token Oracle:{T}: Add {C}.\n{6}, {T}, Sacrifice Spawning Bed: Create three 1/1 colorless Eldrazi Scion creature tokens. They have "Sacrifice this creature: Add {C}." diff --git a/forge-gui/res/cardsfolder/upcoming/spectral_snatcher.txt b/forge-gui/res/cardsfolder/s/spectral_snatcher.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/spectral_snatcher.txt rename to forge-gui/res/cardsfolder/s/spectral_snatcher.txt diff --git a/forge-gui/res/cardsfolder/upcoming/spiked_corridor_torture_pit.txt b/forge-gui/res/cardsfolder/s/spiked_corridor_torture_pit.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/spiked_corridor_torture_pit.txt rename to forge-gui/res/cardsfolder/s/spiked_corridor_torture_pit.txt diff --git a/forge-gui/res/cardsfolder/upcoming/spineseeker_centipede.txt b/forge-gui/res/cardsfolder/s/spineseeker_centipede.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/spineseeker_centipede.txt rename to forge-gui/res/cardsfolder/s/spineseeker_centipede.txt diff --git a/forge-gui/res/cardsfolder/upcoming/split_up.txt b/forge-gui/res/cardsfolder/s/split_up.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/split_up.txt rename to forge-gui/res/cardsfolder/s/split_up.txt diff --git a/forge-gui/res/cardsfolder/upcoming/splitskin_doll.txt b/forge-gui/res/cardsfolder/s/splitskin_doll.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/splitskin_doll.txt rename to forge-gui/res/cardsfolder/s/splitskin_doll.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sporogenic_infection.txt b/forge-gui/res/cardsfolder/s/sporogenic_infection.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sporogenic_infection.txt rename to forge-gui/res/cardsfolder/s/sporogenic_infection.txt diff --git a/forge-gui/res/cardsfolder/upcoming/stalked_researcher.txt b/forge-gui/res/cardsfolder/s/stalked_researcher.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/stalked_researcher.txt rename to forge-gui/res/cardsfolder/s/stalked_researcher.txt diff --git a/forge-gui/res/cardsfolder/upcoming/star_athlete.txt b/forge-gui/res/cardsfolder/s/star_athlete.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/star_athlete.txt rename to forge-gui/res/cardsfolder/s/star_athlete.txt diff --git a/forge-gui/res/cardsfolder/upcoming/stay_hidden_stay_silent.txt b/forge-gui/res/cardsfolder/s/stay_hidden_stay_silent.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/stay_hidden_stay_silent.txt rename to forge-gui/res/cardsfolder/s/stay_hidden_stay_silent.txt diff --git a/forge-gui/res/cardsfolder/upcoming/strangled_cemetery.txt b/forge-gui/res/cardsfolder/s/strangled_cemetery.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/strangled_cemetery.txt rename to forge-gui/res/cardsfolder/s/strangled_cemetery.txt diff --git a/forge-gui/res/cardsfolder/s/struggle_for_project_purity.txt b/forge-gui/res/cardsfolder/s/struggle_for_project_purity.txt index 955934334f7..d2c89d86212 100644 --- a/forge-gui/res/cardsfolder/s/struggle_for_project_purity.txt +++ b/forge-gui/res/cardsfolder/s/struggle_for_project_purity.txt @@ -4,7 +4,7 @@ Types:Enchantment K:ETBReplacement:Other:SiegeChoice SVar:SiegeChoice:DB$ GenericChoice | Choices$ Brotherhood,Enclave | Defined$ You | SetChosenMode$ True | AILogic$ Brotherhood | ShowChoice$ ExceptSelf | SpellDescription$ As CARDNAME enters, choose Brotherhood or Enclave. SVar:Brotherhood:DB$ Pump | SpellDescription$ Brotherhood -SVar:Enclave:DB$ Pump | SpellDescription$ Enclare +SVar:Enclave:DB$ Pump | SpellDescription$ Enclave S:Mode$ Continuous | Affected$ Card.Self+ChosenModeBrotherhood | AddTrigger$ BrotherhoodTrig | Description$ • Brotherhood — At the beginning of your upkeep, each opponent draws a card. You draw a card for each card drawn this way. S:Mode$ Continuous | Affected$ Card.Self+ChosenModeEnclave | AddTrigger$ EnclaveTrig | Description$ • Enclave — Whenever a player attacks you with one or more creatures, that player gets twice that many rad counters. SVar:BrotherhoodTrig:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDraw | Secondary$ True | TriggerDescription$ Brotherhood — At the beginning of your upkeep, each opponent draws a card. You draw a card for each card drawn this way. diff --git a/forge-gui/res/cardsfolder/upcoming/surgical_suite_hospital_room.txt b/forge-gui/res/cardsfolder/s/surgical_suite_hospital_room.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/surgical_suite_hospital_room.txt rename to forge-gui/res/cardsfolder/s/surgical_suite_hospital_room.txt diff --git a/forge-gui/res/cardsfolder/upcoming/suspended_sentence.txt b/forge-gui/res/cardsfolder/s/suspended_sentence.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/suspended_sentence.txt rename to forge-gui/res/cardsfolder/s/suspended_sentence.txt diff --git a/forge-gui/res/cardsfolder/s/sword_of_forge_and_frontier.txt b/forge-gui/res/cardsfolder/s/sword_of_forge_and_frontier.txt index 00e88bda6a5..8c87f56518a 100644 --- a/forge-gui/res/cardsfolder/s/sword_of_forge_and_frontier.txt +++ b/forge-gui/res/cardsfolder/s/sword_of_forge_and_frontier.txt @@ -5,7 +5,7 @@ K:Equip:2 S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 2 | AddToughness$ 2 | AddKeyword$ Protection from red & Protection from green | Description$ Equipped creature gets +2/+2 and has protection from red and from green. T:Mode$ DamageDone | ValidSource$ Creature.EquippedBy | ValidTarget$ Player | CombatDamage$ True | Execute$ ExileTwo | TriggerZones$ Battlefield | TriggerDescription$ Whenever equipped creature deals combat damage to a player, exile the top two cards of your library. You may play those cards this turn. You may play an additional land this turn. SVar:ExileTwo:DB$ Dig | Defined$ You | DigNum$ 2 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBEffect -SVar:DBEffect:DB$ Effect | RememberObjects$ RememberedCard | StaticAbilities$ STPlay | SubAbility$ DBCleanup | ForgetOnMoved$ Exile | Duration$ EndOfTurn | SubAbility$ DBEffectBis +SVar:DBEffect:DB$ Effect | RememberObjects$ RememberedCard | StaticAbilities$ STPlay | ForgetOnMoved$ Exile | Duration$ EndOfTurn | SubAbility$ DBEffectBis SVar:STPlay:Mode$ Continuous | MayPlay$ True | Affected$ Card.IsRemembered | AffectedZone$ Exile | Description$ You may play the exiled cards this turn. SVar:DBEffectBis:DB$ Effect | Name$ Sword of Forge and Frontier's Effect — Exploration | StaticAbilities$ Exploration | AILogic$ Always | SubAbility$ DBCleanup SVar:Exploration:Mode$ Continuous | Affected$ You | AdjustLandPlays$ 1 | Description$ You may play an additional land this turn. diff --git a/forge-gui/res/cardsfolder/t/tenth_district_hero.txt b/forge-gui/res/cardsfolder/t/tenth_district_hero.txt index 503d7fd185b..fc8d22f5872 100644 --- a/forge-gui/res/cardsfolder/t/tenth_district_hero.txt +++ b/forge-gui/res/cardsfolder/t/tenth_district_hero.txt @@ -3,7 +3,7 @@ ManaCost:1 W Types:Creature Human PT:2/3 A:AB$ Animate | Cost$ 1 W CollectEvidence<2> | Types$ Human,Detective | RemoveCreatureTypes$ True | Duration$ Permanent | Power$ 4 | Toughness$ 4 | Keywords$ Vigilance | SpellDescription$ CARDNAME becomes a Human Detective with base power and toughness 4/4 and gains vigilance. -A:AB$ Animate | Cost$ 2 W CollectEvidence<4> | staticAbilities$ Static | ConditionPresent$ Card.Self+Detective | Types$ Legendary,Creature | Name$ Mileva, the Stalwart | Power$ 5 | Toughness$ 5 | Duration$ Permanent | RemoveCreatureTypes$ True | Duration$ Permanent | SpellDescription$ If CARDNAME is a Detective, it becomes a legendary creature named Mileva, the Stalwart, it has base power and toughness 5/5, and it gains "Other creatures you control have indestructible." +A:AB$ Animate | Cost$ 2 W CollectEvidence<4> | staticAbilities$ Static | ConditionPresent$ Card.Self+Detective | Types$ Legendary,Creature | Name$ Mileva, the Stalwart | Power$ 5 | Toughness$ 5 | RemoveCreatureTypes$ True | Duration$ Permanent | SpellDescription$ If CARDNAME is a Detective, it becomes a legendary creature named Mileva, the Stalwart, it has base power and toughness 5/5, and it gains "Other creatures you control have indestructible." SVar:Static:Mode$ Continuous | Affected$ Creature.Other+YouCtrl | AddKeyword$ Indestructible | Description$ Other creatures you control have indestructible. DeckHints:Ability$Graveyard|Mill|Discard|Dredge DeckHas:Type$Detective diff --git a/forge-gui/res/cardsfolder/t/the_infamous_cruelclaw.txt b/forge-gui/res/cardsfolder/t/the_infamous_cruelclaw.txt index 70cacf6fd1b..911090f2f81 100644 --- a/forge-gui/res/cardsfolder/t/the_infamous_cruelclaw.txt +++ b/forge-gui/res/cardsfolder/t/the_infamous_cruelclaw.txt @@ -5,7 +5,7 @@ PT:3/3 K:Menace T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigDigUntil | TriggerZones$ Battlefield | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, exile cards from the top of your library until you exile a nonland card. You may cast that card by discarding a card rather than paying its mana cost. SVar:TrigDigUntil:DB$ DigUntil | Valid$ Card.nonLand | FoundDestination$ Exile | RevealedDestination$ Exile | RememberFound$ True | SubAbility$ DBPlay -SVar:DBPlay:DB$ Play | Defined$ Remembered | ValidSA$ Spell | PlayCost$ Discard<1/Card> | Optional$ True | SubAbility$ DBChange | SubAbility$ DBCleanup +SVar:DBPlay:DB$ Play | Defined$ Remembered | ValidSA$ Spell | PlayCost$ Discard<1/Card> | Optional$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:MustBeBlocked:True Oracle:Menace\nWhenever The Infamous Cruelclaw deals combat damage to a player, exile cards from the top of your library until you exile a nonland card. You may cast that card by discarding a card rather than paying its mana cost. diff --git a/forge-gui/res/cardsfolder/upcoming/the_jolly_balloon_man.txt b/forge-gui/res/cardsfolder/t/the_jolly_balloon_man.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/the_jolly_balloon_man.txt rename to forge-gui/res/cardsfolder/t/the_jolly_balloon_man.txt diff --git a/forge-gui/res/cardsfolder/upcoming/the_lord_of_pain.txt b/forge-gui/res/cardsfolder/t/the_lord_of_pain.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/the_lord_of_pain.txt rename to forge-gui/res/cardsfolder/t/the_lord_of_pain.txt diff --git a/forge-gui/res/cardsfolder/upcoming/the_master_of_keys.txt b/forge-gui/res/cardsfolder/t/the_master_of_keys.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/the_master_of_keys.txt rename to forge-gui/res/cardsfolder/t/the_master_of_keys.txt diff --git a/forge-gui/res/cardsfolder/upcoming/the_mindskinner.txt b/forge-gui/res/cardsfolder/t/the_mindskinner.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/the_mindskinner.txt rename to forge-gui/res/cardsfolder/t/the_mindskinner.txt diff --git a/forge-gui/res/cardsfolder/upcoming/the_rollercrusher_ride.txt b/forge-gui/res/cardsfolder/t/the_rollercrusher_ride.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/the_rollercrusher_ride.txt rename to forge-gui/res/cardsfolder/t/the_rollercrusher_ride.txt diff --git a/forge-gui/res/cardsfolder/upcoming/the_swarmweaver.txt b/forge-gui/res/cardsfolder/t/the_swarmweaver.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/the_swarmweaver.txt rename to forge-gui/res/cardsfolder/t/the_swarmweaver.txt diff --git a/forge-gui/res/cardsfolder/upcoming/the_tale_of_tamiyo.txt b/forge-gui/res/cardsfolder/t/the_tale_of_tamiyo.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/the_tale_of_tamiyo.txt rename to forge-gui/res/cardsfolder/t/the_tale_of_tamiyo.txt diff --git a/forge-gui/res/cardsfolder/upcoming/the_wandering_rescuer.txt b/forge-gui/res/cardsfolder/t/the_wandering_rescuer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/the_wandering_rescuer.txt rename to forge-gui/res/cardsfolder/t/the_wandering_rescuer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/they_came_from_the_pipes.txt b/forge-gui/res/cardsfolder/t/they_came_from_the_pipes.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/they_came_from_the_pipes.txt rename to forge-gui/res/cardsfolder/t/they_came_from_the_pipes.txt diff --git a/forge-gui/res/cardsfolder/upcoming/thornspire_verge.txt b/forge-gui/res/cardsfolder/t/thornspire_verge.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/thornspire_verge.txt rename to forge-gui/res/cardsfolder/t/thornspire_verge.txt diff --git a/forge-gui/res/cardsfolder/upcoming/threats_around_every_corner.txt b/forge-gui/res/cardsfolder/t/threats_around_every_corner.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/threats_around_every_corner.txt rename to forge-gui/res/cardsfolder/t/threats_around_every_corner.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ticket_booth_tunnel_of_hate.txt b/forge-gui/res/cardsfolder/t/ticket_booth_tunnel_of_hate.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ticket_booth_tunnel_of_hate.txt rename to forge-gui/res/cardsfolder/t/ticket_booth_tunnel_of_hate.txt diff --git a/forge-gui/res/cardsfolder/upcoming/time_bends_to_my_will.txt b/forge-gui/res/cardsfolder/t/time_bends_to_my_will.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/time_bends_to_my_will.txt rename to forge-gui/res/cardsfolder/t/time_bends_to_my_will.txt diff --git a/forge-gui/res/cardsfolder/upcoming/toby_beastie_befriender.txt b/forge-gui/res/cardsfolder/t/toby_beastie_befriender.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/toby_beastie_befriender.txt rename to forge-gui/res/cardsfolder/t/toby_beastie_befriender.txt diff --git a/forge-gui/res/cardsfolder/t/transmogrify.txt b/forge-gui/res/cardsfolder/t/transmogrify.txt index 07bbe4437b5..3aa21d9788e 100644 --- a/forge-gui/res/cardsfolder/t/transmogrify.txt +++ b/forge-gui/res/cardsfolder/t/transmogrify.txt @@ -1,6 +1,6 @@ Name:Transmogrify ManaCost:3 R Types:Sorcery -A:SP$ ChangeZone | ValidTgts$ Creature | Origin$ Battlefield | Destination$ Exile | NoRegen$ True | ValidTgts$ Creature | TgtPrompt$ Select target creature | SubAbility$ DBDig | SpellDescription$ Exile target creature. That creature's controller reveals cards from the top of their library until they reveal a creature card. That player puts that card onto the battlefield, then shuffles the rest into their library. +A:SP$ ChangeZone | Origin$ Battlefield | Destination$ Exile | NoRegen$ True | ValidTgts$ Creature | TgtPrompt$ Select target creature | SubAbility$ DBDig | SpellDescription$ Exile target creature. That creature's controller reveals cards from the top of their library until they reveal a creature card. That player puts that card onto the battlefield, then shuffles the rest into their library. SVar:DBDig:DB$ DigUntil | Defined$ TargetedController | Valid$ Creature | ValidDescription$ creature | FoundDestination$ Battlefield | RevealedDestination$ Library | Shuffle$ True Oracle:Exile target creature. That creature's controller reveals cards from the top of their library until they reveal a creature card. That player puts that card onto the battlefield, then shuffles the rest into their library. diff --git a/forge-gui/res/cardsfolder/upcoming/trapped_in_the_screen.txt b/forge-gui/res/cardsfolder/t/trapped_in_the_screen.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/trapped_in_the_screen.txt rename to forge-gui/res/cardsfolder/t/trapped_in_the_screen.txt diff --git a/forge-gui/res/cardsfolder/upcoming/trial_of_agony.txt b/forge-gui/res/cardsfolder/t/trial_of_agony.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/trial_of_agony.txt rename to forge-gui/res/cardsfolder/t/trial_of_agony.txt diff --git a/forge-gui/res/cardsfolder/upcoming/tunnel_surveyor.txt b/forge-gui/res/cardsfolder/t/tunnel_surveyor.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/tunnel_surveyor.txt rename to forge-gui/res/cardsfolder/t/tunnel_surveyor.txt diff --git a/forge-gui/res/cardsfolder/upcoming/turn_inside_out.txt b/forge-gui/res/cardsfolder/t/turn_inside_out.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/turn_inside_out.txt rename to forge-gui/res/cardsfolder/t/turn_inside_out.txt diff --git a/forge-gui/res/cardsfolder/upcoming/twist_reality.txt b/forge-gui/res/cardsfolder/t/twist_reality.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/twist_reality.txt rename to forge-gui/res/cardsfolder/t/twist_reality.txt diff --git a/forge-gui/res/cardsfolder/upcoming/twitching_doll.txt b/forge-gui/res/cardsfolder/t/twitching_doll.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/twitching_doll.txt rename to forge-gui/res/cardsfolder/t/twitching_doll.txt diff --git a/forge-gui/res/cardsfolder/upcoming/tyvar_the_pummeler.txt b/forge-gui/res/cardsfolder/t/tyvar_the_pummeler.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/tyvar_the_pummeler.txt rename to forge-gui/res/cardsfolder/t/tyvar_the_pummeler.txt diff --git a/forge-gui/res/cardsfolder/upcoming/unable_to_scream.txt b/forge-gui/res/cardsfolder/u/unable_to_scream.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/unable_to_scream.txt rename to forge-gui/res/cardsfolder/u/unable_to_scream.txt diff --git a/forge-gui/res/cardsfolder/upcoming/undead_sprinter.txt b/forge-gui/res/cardsfolder/u/undead_sprinter.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/undead_sprinter.txt rename to forge-gui/res/cardsfolder/u/undead_sprinter.txt diff --git a/forge-gui/res/cardsfolder/upcoming/under_the_skin.txt b/forge-gui/res/cardsfolder/u/under_the_skin.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/under_the_skin.txt rename to forge-gui/res/cardsfolder/u/under_the_skin.txt diff --git a/forge-gui/res/cardsfolder/upcoming/underwater_tunnel_slimy_aquarium.txt b/forge-gui/res/cardsfolder/u/underwater_tunnel_slimy_aquarium.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/underwater_tunnel_slimy_aquarium.txt rename to forge-gui/res/cardsfolder/u/underwater_tunnel_slimy_aquarium.txt diff --git a/forge-gui/res/cardsfolder/upcoming/unholy_annex_ritual_chamber.txt b/forge-gui/res/cardsfolder/u/unholy_annex_ritual_chamber.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/unholy_annex_ritual_chamber.txt rename to forge-gui/res/cardsfolder/u/unholy_annex_ritual_chamber.txt diff --git a/forge-gui/res/cardsfolder/upcoming/unidentified_hovership.txt b/forge-gui/res/cardsfolder/u/unidentified_hovership.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/unidentified_hovership.txt rename to forge-gui/res/cardsfolder/u/unidentified_hovership.txt diff --git a/forge-gui/res/cardsfolder/upcoming/unnerving_grasp.txt b/forge-gui/res/cardsfolder/u/unnerving_grasp.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/unnerving_grasp.txt rename to forge-gui/res/cardsfolder/u/unnerving_grasp.txt diff --git a/forge-gui/res/cardsfolder/upcoming/unsettling_twins.txt b/forge-gui/res/cardsfolder/u/unsettling_twins.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/unsettling_twins.txt rename to forge-gui/res/cardsfolder/u/unsettling_twins.txt diff --git a/forge-gui/res/cardsfolder/upcoming/unstoppable_slasher.txt b/forge-gui/res/cardsfolder/u/unstoppable_slasher.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/unstoppable_slasher.txt rename to forge-gui/res/cardsfolder/u/unstoppable_slasher.txt diff --git a/forge-gui/res/cardsfolder/upcoming/untimely_malfunction.txt b/forge-gui/res/cardsfolder/u/untimely_malfunction.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/untimely_malfunction.txt rename to forge-gui/res/cardsfolder/u/untimely_malfunction.txt diff --git a/forge-gui/res/cardsfolder/upcoming/unwanted_remake.txt b/forge-gui/res/cardsfolder/u/unwanted_remake.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/unwanted_remake.txt rename to forge-gui/res/cardsfolder/u/unwanted_remake.txt diff --git a/forge-gui/res/cardsfolder/upcoming/unwilling_vessel.txt b/forge-gui/res/cardsfolder/u/unwilling_vessel.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/unwilling_vessel.txt rename to forge-gui/res/cardsfolder/u/unwilling_vessel.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ursine_monstrosity.txt b/forge-gui/res/cardsfolder/u/ursine_monstrosity.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ursine_monstrosity.txt rename to forge-gui/res/cardsfolder/u/ursine_monstrosity.txt diff --git a/forge-gui/res/cardsfolder/upcoming/valgavoth_harrower_of_souls.txt b/forge-gui/res/cardsfolder/v/valgavoth_harrower_of_souls.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/valgavoth_harrower_of_souls.txt rename to forge-gui/res/cardsfolder/v/valgavoth_harrower_of_souls.txt diff --git a/forge-gui/res/cardsfolder/upcoming/valgavoth_terror_eater.txt b/forge-gui/res/cardsfolder/v/valgavoth_terror_eater.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/valgavoth_terror_eater.txt rename to forge-gui/res/cardsfolder/v/valgavoth_terror_eater.txt diff --git a/forge-gui/res/cardsfolder/upcoming/valgavoths_faithful.txt b/forge-gui/res/cardsfolder/v/valgavoths_faithful.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/valgavoths_faithful.txt rename to forge-gui/res/cardsfolder/v/valgavoths_faithful.txt diff --git a/forge-gui/res/cardsfolder/upcoming/valgavoths_lair.txt b/forge-gui/res/cardsfolder/v/valgavoths_lair.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/valgavoths_lair.txt rename to forge-gui/res/cardsfolder/v/valgavoths_lair.txt diff --git a/forge-gui/res/cardsfolder/upcoming/valgavoths_onslaught.txt b/forge-gui/res/cardsfolder/v/valgavoths_onslaught.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/valgavoths_onslaught.txt rename to forge-gui/res/cardsfolder/v/valgavoths_onslaught.txt diff --git a/forge-gui/res/cardsfolder/upcoming/vanish_from_sight.txt b/forge-gui/res/cardsfolder/v/vanish_from_sight.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/vanish_from_sight.txt rename to forge-gui/res/cardsfolder/v/vanish_from_sight.txt diff --git a/forge-gui/res/cardsfolder/v/vault_87_forced_evolution.txt b/forge-gui/res/cardsfolder/v/vault_87_forced_evolution.txt index 637f94f76f7..4c4e24a2be4 100644 --- a/forge-gui/res/cardsfolder/v/vault_87_forced_evolution.txt +++ b/forge-gui/res/cardsfolder/v/vault_87_forced_evolution.txt @@ -2,7 +2,7 @@ Name:Vault 87: Forced Evolution ManaCost:3 G U Types:Enchantment Saga K:Chapter:3:DBSteal,DBPutCounter,DBDraw -SVar:DBSteal:DB$ GainControl | TgtPrompt$ Choose target creature | ValidTgts$ Creature.nonMutant | TgtPrompt$ Select target non-Mutant creature | LoseControl$ LeavesPlay,LoseControl | SpellDescription$ Gain control of target non-Mutant creature for as long as you control NICKNAME. +SVar:DBSteal:DB$ GainControl | ValidTgts$ Creature.nonMutant | TgtPrompt$ Select target non-Mutant creature | LoseControl$ LeavesPlay,LoseControl | SpellDescription$ Gain control of target non-Mutant creature for as long as you control NICKNAME. SVar:DBPutCounter:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBAnimate | SpellDescription$ Put a +1/+1 counter on target creature you control. It becomes a Mutant in addition to its other types. SVar:DBAnimate:DB$ Animate | Defined$ Targeted | Types$ Mutant | Duration$ Permanent SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ X | SpellDescription$ Draw cards equal to the greatest power among Mutants you control. diff --git a/forge-gui/res/cardsfolder/upcoming/vengeful_bloodwitch.txt b/forge-gui/res/cardsfolder/v/vengeful_bloodwitch.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/vengeful_bloodwitch.txt rename to forge-gui/res/cardsfolder/v/vengeful_bloodwitch.txt diff --git a/forge-gui/res/cardsfolder/upcoming/vengeful_possession.txt b/forge-gui/res/cardsfolder/v/vengeful_possession.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/vengeful_possession.txt rename to forge-gui/res/cardsfolder/v/vengeful_possession.txt diff --git a/forge-gui/res/cardsfolder/v/verdant_succession.txt b/forge-gui/res/cardsfolder/v/verdant_succession.txt index 79b46115d3e..b53d096ba65 100644 --- a/forge-gui/res/cardsfolder/v/verdant_succession.txt +++ b/forge-gui/res/cardsfolder/v/verdant_succession.txt @@ -2,6 +2,6 @@ Name:Verdant Succession ManaCost:4 G Types:Enchantment T:Mode$ ChangesZone | ValidCard$ Creature.Green+nonToken | Origin$ Battlefield | Destination$ Graveyard | TriggerZones$ Battlefield | Execute$ TrigSearch | TriggerDescription$ Whenever a green nontoken creature dies, that creature's controller may search their library for a card with the same name as that creature, put it onto the battlefield, then shuffle. -SVar:TrigSearch:DB$ ChangeZone | Optional$ True | DefinedPlayer$ TriggeredCardController | ChangeType$ Triggered.sameName | ChangeNum$ 1 | Origin$ Library | Destination$ Battlefield | Optional$ You | ShuffleNonMandatory$ True +SVar:TrigSearch:DB$ ChangeZone | DefinedPlayer$ TriggeredCardController | ChangeType$ Triggered.sameName | ChangeNum$ 1 | Origin$ Library | Destination$ Battlefield | Optional$ You | ShuffleNonMandatory$ True AI:RemoveDeck:Random Oracle:Whenever a green nontoken creature dies, that creature's controller may search their library for a card with the same name as that creature, put it onto the battlefield, then shuffle. diff --git a/forge-gui/res/cardsfolder/v/vessel_of_ephemera.txt b/forge-gui/res/cardsfolder/v/vessel_of_ephemera.txt index 3ac2ef427f4..63773b615c9 100644 --- a/forge-gui/res/cardsfolder/v/vessel_of_ephemera.txt +++ b/forge-gui/res/cardsfolder/v/vessel_of_ephemera.txt @@ -1,6 +1,6 @@ Name:Vessel of Ephemera ManaCost:1 W Types:Enchantment -A:AB$ Token | Cost$ 2 W Sac<1/CARDNAME> | TokenOwner$ You | TokenAmount$ 2 | TokenScript$ w_1_1_spirit_flying | TokenOwner$ You | SpellDescription$ Create two 1/1 white Spirit creature tokens with flying. +A:AB$ Token | Cost$ 2 W Sac<1/CARDNAME> | TokenOwner$ You | TokenAmount$ 2 | TokenScript$ w_1_1_spirit_flying | SpellDescription$ Create two 1/1 white Spirit creature tokens with flying. DeckHas:Ability$Token Oracle:{2}{W}, Sacrifice Vessel of Ephemera: Create two 1/1 white Spirit creature tokens with flying. diff --git a/forge-gui/res/cardsfolder/upcoming/veteran_survivor.txt b/forge-gui/res/cardsfolder/v/veteran_survivor.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/veteran_survivor.txt rename to forge-gui/res/cardsfolder/v/veteran_survivor.txt diff --git a/forge-gui/res/cardsfolder/upcoming/vicious_clown.txt b/forge-gui/res/cardsfolder/v/vicious_clown.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/vicious_clown.txt rename to forge-gui/res/cardsfolder/v/vicious_clown.txt diff --git a/forge-gui/res/cardsfolder/upcoming/victor_valgavoths_seneschal.txt b/forge-gui/res/cardsfolder/v/victor_valgavoths_seneschal.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/victor_valgavoths_seneschal.txt rename to forge-gui/res/cardsfolder/v/victor_valgavoths_seneschal.txt diff --git a/forge-gui/res/cardsfolder/upcoming/vile_mutilator.txt b/forge-gui/res/cardsfolder/v/vile_mutilator.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/vile_mutilator.txt rename to forge-gui/res/cardsfolder/v/vile_mutilator.txt diff --git a/forge-gui/res/cardsfolder/upcoming/violent_urge.txt b/forge-gui/res/cardsfolder/v/violent_urge.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/violent_urge.txt rename to forge-gui/res/cardsfolder/v/violent_urge.txt diff --git a/forge-gui/res/cardsfolder/v/vivien_natures_avenger.txt b/forge-gui/res/cardsfolder/v/vivien_natures_avenger.txt index ac81175a2bd..31c84c7fe4d 100644 --- a/forge-gui/res/cardsfolder/v/vivien_natures_avenger.txt +++ b/forge-gui/res/cardsfolder/v/vivien_natures_avenger.txt @@ -3,7 +3,7 @@ ManaCost:4 G G Types:Legendary Planeswalker Vivien Loyalty:3 A:AB$ PutCounter | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | CounterNum$ 3 | CounterType$ P1P1 | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Creature | TgtPrompt$ Select target creature | SpellDescription$ Put three +1/+1 counters on up to one target creature. -A:AB$ DigUntil | Cost$ SubCounter<1/LOYALTY> | Planeswalker$ True | Valid$ Card.Creature | ValidDescription$ creature | FoundDestination$ Hand | RevealedDestination$ Library | RevealedLibraryPosition$ -1 | RevealRandomOrder$ True | FoundDestination$ Hand | SpellDescription$ Reveal cards from the top of your library until you reveal a creature card. Put that card into your hand and the rest on the bottom of your library in a random order. +A:AB$ DigUntil | Cost$ SubCounter<1/LOYALTY> | Planeswalker$ True | Valid$ Card.Creature | ValidDescription$ creature | FoundDestination$ Hand | RevealedDestination$ Library | RevealedLibraryPosition$ -1 | RevealRandomOrder$ True | SpellDescription$ Reveal cards from the top of your library until you reveal a creature card. Put that card into your hand and the rest on the bottom of your library in a random order. A:AB$ Pump | Cost$ SubCounter<6/LOYALTY> | Planeswalker$ True | Ultimate$ True | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +10 | NumDef$ +10 | KW$ Trample | SpellDescription$ Target creature gets +10/+10 and gains trample until end of turn. DeckHas:Ability$Counters Oracle:[+1]: Put three +1/+1 counters on up to one target creature.\n[-1]: Reveal cards from the top of your library until you reveal a creature card. Put that card into your hand and the rest on the bottom of your library in a random order.\n[-6]: Target creature gets +10/+10 and gains trample until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/walk_in_closet_forgotten_cellar.txt b/forge-gui/res/cardsfolder/w/walk_in_closet_forgotten_cellar.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/walk_in_closet_forgotten_cellar.txt rename to forge-gui/res/cardsfolder/w/walk_in_closet_forgotten_cellar.txt diff --git a/forge-gui/res/cardsfolder/upcoming/waltz_of_rage.txt b/forge-gui/res/cardsfolder/w/waltz_of_rage.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/waltz_of_rage.txt rename to forge-gui/res/cardsfolder/w/waltz_of_rage.txt diff --git a/forge-gui/res/cardsfolder/upcoming/wary_watchdog.txt b/forge-gui/res/cardsfolder/w/wary_watchdog.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/wary_watchdog.txt rename to forge-gui/res/cardsfolder/w/wary_watchdog.txt diff --git a/forge-gui/res/cardsfolder/upcoming/wickerfolk_thresher.txt b/forge-gui/res/cardsfolder/w/wickerfolk_thresher.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/wickerfolk_thresher.txt rename to forge-gui/res/cardsfolder/w/wickerfolk_thresher.txt diff --git a/forge-gui/res/cardsfolder/upcoming/wildfire_wickerfolk.txt b/forge-gui/res/cardsfolder/w/wildfire_wickerfolk.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/wildfire_wickerfolk.txt rename to forge-gui/res/cardsfolder/w/wildfire_wickerfolk.txt diff --git a/forge-gui/res/cardsfolder/w/winter_cynical_opportunist.txt b/forge-gui/res/cardsfolder/w/winter_cynical_opportunist.txt new file mode 100644 index 00000000000..99abeaf440f --- /dev/null +++ b/forge-gui/res/cardsfolder/w/winter_cynical_opportunist.txt @@ -0,0 +1,14 @@ +Name:Winter, Cynical Opportunist +ManaCost:2 B G +Types:Legendary Creature Human Warlock +PT:2/5 +K:Deathtouch +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigMill | TriggerDescription$ Whenever NICKNAME attacks, mill three cards. +SVar:TrigMill:DB$ Mill | NumCards$ 3 +T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | Delirium$ True | TriggerZones$ Battlefield | Execute$ TrigExileDelirium | TriggerDescription$ Delirium — At the beginning of your end step, you may exile any number of cards from your graveyard with four or more card types among them. If you do, put a permanent card from among them onto the battlefield with a finality counter on it. +SVar:TrigExileDelirium:DB$ ChangeZone | Origin$ Graveyard | Destination$ Exile | ChangeType$ Card.YouOwn | ChangeNum$ X | RememberChanged$ True | Hidden$ True | WithTotalCardTypes$ 4 | SubAbility$ DBReturn +SVar:DBReturn:DB$ ChangeZone | Origin$ Exile | Destination$ Battlefield | WithCountersType$ FINALITY | Hidden$ True | ChangeType$ Permanent.YouOwn+IsRemembered | ChangeNum$ 1 | SubAbility$ DBCleanup | Mandatory$ True +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:Count$ValidGraveyard Card.YouOwn +AI:RemoveDeck:All +Oracle:Deathtouch\nWhenever Winter attacks, mill three cards.\nDelirium — At the beginning of your end step, you may exile any number of cards from your graveyard with four or more card types among them. If you do, put a permanent card from among them onto the battlefield with a finality counter on it. diff --git a/forge-gui/res/cardsfolder/upcoming/winter_misanthropic_guide.txt b/forge-gui/res/cardsfolder/w/winter_misanthropic_guide.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/winter_misanthropic_guide.txt rename to forge-gui/res/cardsfolder/w/winter_misanthropic_guide.txt diff --git a/forge-gui/res/cardsfolder/upcoming/winters_intervention.txt b/forge-gui/res/cardsfolder/w/winters_intervention.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/winters_intervention.txt rename to forge-gui/res/cardsfolder/w/winters_intervention.txt diff --git a/forge-gui/res/cardsfolder/upcoming/withering_torment.txt b/forge-gui/res/cardsfolder/w/withering_torment.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/withering_torment.txt rename to forge-gui/res/cardsfolder/w/withering_torment.txt diff --git a/forge-gui/res/cardsfolder/y/yaroks_fenlurker.txt b/forge-gui/res/cardsfolder/y/yaroks_fenlurker.txt index 398359522a9..8cf98d4cd4f 100644 --- a/forge-gui/res/cardsfolder/y/yaroks_fenlurker.txt +++ b/forge-gui/res/cardsfolder/y/yaroks_fenlurker.txt @@ -3,6 +3,6 @@ ManaCost:B B Types:Creature Horror PT:1/1 T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$ When CARDNAME enters, each opponent exiles a card from their hand. -SVar:TrigExile:DB$ ChangeZone | Origin$ Hand | Destination$ Exile | ChangeType$ Card | DefinedPlayer$ Player.Opponent | Mandatory$ True | ChangeType$ Card | ChangeNum$ 1 | Hidden$ True | IsCurse$ True +SVar:TrigExile:DB$ ChangeZone | Origin$ Hand | Destination$ Exile | DefinedPlayer$ Player.Opponent | Mandatory$ True | ChangeType$ Card | ChangeNum$ 1 | Hidden$ True | IsCurse$ True A:AB$ Pump | Cost$ 2 B | Defined$ Self | NumAtt$ +1 | NumDef$ +1 | SpellDescription$ CARDNAME gets +1/+1 until end of turn. Oracle:When Yarok's Fenlurker enters, each opponent exiles a card from their hand.\n{2}{B}: Yarok's Fenlurker gets +1/+1 until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/you_are_unworthy_of_mercy.txt b/forge-gui/res/cardsfolder/y/you_are_unworthy_of_mercy.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/you_are_unworthy_of_mercy.txt rename to forge-gui/res/cardsfolder/y/you_are_unworthy_of_mercy.txt diff --git a/forge-gui/res/cardsfolder/upcoming/you_cannot_hide_from_me.txt b/forge-gui/res/cardsfolder/y/you_cannot_hide_from_me.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/you_cannot_hide_from_me.txt rename to forge-gui/res/cardsfolder/y/you_cannot_hide_from_me.txt diff --git a/forge-gui/res/cardsfolder/upcoming/you_exist_only_to_amuse.txt b/forge-gui/res/cardsfolder/y/you_exist_only_to_amuse.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/you_exist_only_to_amuse.txt rename to forge-gui/res/cardsfolder/y/you_exist_only_to_amuse.txt diff --git a/forge-gui/res/cardsfolder/upcoming/you_live_only_because_i_will_it.txt b/forge-gui/res/cardsfolder/y/you_live_only_because_i_will_it.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/you_live_only_because_i_will_it.txt rename to forge-gui/res/cardsfolder/y/you_live_only_because_i_will_it.txt diff --git a/forge-gui/res/cardsfolder/upcoming/you_will_know_true_suffering.txt b/forge-gui/res/cardsfolder/y/you_will_know_true_suffering.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/you_will_know_true_suffering.txt rename to forge-gui/res/cardsfolder/y/you_will_know_true_suffering.txt diff --git a/forge-gui/res/cardsfolder/upcoming/your_mistake_is_my_triumph.txt b/forge-gui/res/cardsfolder/y/your_mistake_is_my_triumph.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/your_mistake_is_my_triumph.txt rename to forge-gui/res/cardsfolder/y/your_mistake_is_my_triumph.txt diff --git a/forge-gui/res/cardsfolder/upcoming/your_nightmares_are_delicious.txt b/forge-gui/res/cardsfolder/y/your_nightmares_are_delicious.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/your_nightmares_are_delicious.txt rename to forge-gui/res/cardsfolder/y/your_nightmares_are_delicious.txt diff --git a/forge-gui/res/cardsfolder/upcoming/your_own_face_mocks_you.txt b/forge-gui/res/cardsfolder/y/your_own_face_mocks_you.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/your_own_face_mocks_you.txt rename to forge-gui/res/cardsfolder/y/your_own_face_mocks_you.txt diff --git a/forge-gui/res/cardsfolder/upcoming/your_plans_mean_nothing.txt b/forge-gui/res/cardsfolder/y/your_plans_mean_nothing.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/your_plans_mean_nothing.txt rename to forge-gui/res/cardsfolder/y/your_plans_mean_nothing.txt diff --git a/forge-gui/res/cardsfolder/upcoming/zimone_all_questioning.txt b/forge-gui/res/cardsfolder/z/zimone_all_questioning.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/zimone_all_questioning.txt rename to forge-gui/res/cardsfolder/z/zimone_all_questioning.txt diff --git a/forge-gui/res/cardsfolder/upcoming/zimone_mystery_unraveler.txt b/forge-gui/res/cardsfolder/z/zimone_mystery_unraveler.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/zimone_mystery_unraveler.txt rename to forge-gui/res/cardsfolder/z/zimone_mystery_unraveler.txt diff --git a/forge-gui/res/cardsfolder/upcoming/zimones_hypothesis.txt b/forge-gui/res/cardsfolder/z/zimones_hypothesis.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/zimones_hypothesis.txt rename to forge-gui/res/cardsfolder/z/zimones_hypothesis.txt diff --git a/forge-gui/res/editions/Alchemy Duskmourn.txt b/forge-gui/res/editions/Alchemy Duskmourn.txt index 761fe1255ee..08cae103b59 100644 --- a/forge-gui/res/editions/Alchemy Duskmourn.txt +++ b/forge-gui/res/editions/Alchemy Duskmourn.txt @@ -6,4 +6,33 @@ Type=Online ScryfallCode=YDSK [cards] -0 R Solitary Study // Endless Corridor @Leon Tukker +1 M Ethrimik, Imagined Fiend @John Tedrick +2 U Improvising Aerialist @Riccardo Federici +3 R Mothlight Processionist @A. M. Sartor +4 R Solitary Study // Endless Corridor @Leon Tukker +5 U Housemeld @David Auden Nash +6 M Lurker in the Deep @Jana Heidersdorf +7 R Fear of Ridicule @Warren Mahy +8 R Glimmer Hoarder @Irina Nordsol +9 R Razor Demon @Riccardo Federici +10 U Replicating Terror @Septian Fajrianto +11 M Welcome the Darkness @Tiffany Turrill +12 U Anguished Recollection @Chris Rallis +13 R Crude Abattoir // Unsavory Kitchen @Marina Ortega Lorente +14 U Eager Flameguide @Irina Nordsol +15 R Chittering Illuminator @Aurore Folny +16 U Harrowing Swarm @John Tedrick +17 M Verdant Dread @Septian Fajrianto +18 U Wary Zone Guard @Elizabeth Peiró +19 R Effie, Fast Learner @Elizabeth Peiró +20 R Enduring Friendship @Flavio Greco Paglia +21 U Fear of Change @Maxime Minard +22 R Gilded Ambusher @David Auden Nash +23 U Golden Sidekick @Domenico Cava +24 M Mangled Soulrager @Xabi Gaztelua +25 R Mischievous Lookout @Steven Russell Black +26 R Polterheist @Josu Hernaiz +27 R Unnatural Summons @Jana Heidersdorf +28 R Valiant Emberkin @Andrea Piparo +29 U Wingbright Thief @Racrufi +30 R Soul Shredder @Josu Hernaiz diff --git a/forge-gui/res/editions/Secret Lair Drop Series.txt b/forge-gui/res/editions/Secret Lair Drop Series.txt index 8de4bbbad21..314bf0950dd 100644 --- a/forge-gui/res/editions/Secret Lair Drop Series.txt +++ b/forge-gui/res/editions/Secret Lair Drop Series.txt @@ -796,7 +796,7 @@ F798 M Discord, Lord of Disharmony @Narendra Bintara Adi 827 R Norin the Wary @Jarel Threat 827b R Norin the Wary @Jarel Threat 828 R Keen Duelist @Thanh Tuấn -871 R Soul-Guide Lantern @ +871 R Soul-Guide Lantern @Tyler Walpole 872 R Yargle and Multani @Warren Mahy 873 R Dark Deal @Tyler Jacobson 874 R Archivist of Oghma @Cory Trego-Erdner @@ -1667,6 +1667,10 @@ F1540 M Rainbow Dash @John Thacker 1809 R Varragoth, Bloodsky Sire @Domenico Cava 1810 R Twinflame @Sean Vo 1811 R Genesis Chamber @Eddie Mendoza +1821 R Mana Geyser @Mike Burns +1822 R Lightning Bolt @Mike Burns +1823 R Fierce Guardianship @Mike Burns +1824 R Delayed Blast Fireball @Mike Burns 8001 M Jace, the Mind Sculptor @Wizard of Barge 9990 R Doom Blade @Cynthia Sheppard 9991 R Massacre @Andrey Kuzinskiy diff --git a/forge-gui/res/formats/Archived/Alchemy/2024-10-15.txt b/forge-gui/res/formats/Archived/Alchemy/2024-10-15.txt new file mode 100644 index 00000000000..f8cfaeb614a --- /dev/null +++ b/forge-gui/res/formats/Archived/Alchemy/2024-10-15.txt @@ -0,0 +1,6 @@ +[format] +Name:Alchemy (YDSK) +Type:Archived +Subtype:Arena +Effective:2024-10-15 +Sets:ANA, ANB, WOE, YWOE, LCI, YLCI, MKM, YMKM, OTJ, BIG, YOTJ, BLB, YBLB, DSK, YDSK diff --git a/forge-gui/res/formats/Archived/Historic/2024-10-15.txt b/forge-gui/res/formats/Archived/Historic/2024-10-15.txt new file mode 100644 index 00000000000..b9430dc2525 --- /dev/null +++ b/forge-gui/res/formats/Archived/Historic/2024-10-15.txt @@ -0,0 +1,8 @@ +[format] +Name:Historic (YDSK) +Type:Archived +Subtype:Arena +Effective:2024-10-15 +Sets:KTK, XLN, RIX, DOM, M19, ANA, PANA, GRN, G18, RNA, WAR, M20, ELD, HA1, THB, HA2, IKO, HA3, M21, JMP, AJMP, AKR, ANB, ZNR, KLR, KHM, HA4, STX, STA, HA5, AFR, J21, MID, VOW, YMID, NEO, YNEO, SNC, YSNC, HBG, HA6, EA1, DMU, YDMU, BRO, BRR, YBRO, EA2, ONE, YONE, SIR, SIS, MOM, MUL, MAT, LTR, HA7, EA3, WOE, WOT, YWOE, LCI, YLCI, MKM, YMKM, OTJ, OTP, BIG, YOTJ, MH3, BLB, YBLB, DSK, YDSK +Banned:Agent of Treachery; Arid Mesa; Blood Moon; Bloodstained Mire; Brainstorm; Channel; Commandeer; Counterspell; Dark Ritual; Demonic Tutor; Endurance; Field of the Dead; Flare of Cultivation; Flare of Denial; Flare of Duplication; Flare of Fortitude; Flare of Malice; Flooded Strand; Force of Vigor; Fury; Grief; Harbinger of the Seas; Intruder Alarm; Land Tax; Lightning Bolt; Mana Drain; Marsh Flats; Memory Lapse; Mishra's Bauble; Misty Rainforest; Natural Order; Necropotence; Nexus of Fate; Oko, Thief of Crowns; Once Upon a Time; Polluted Delta; Ragavan, Nimble Pilferer; Reanimate; Scalding Tarn; Show and Tell; Sneak Attack; Solitude; Spreading Seas; Subtlety; Swords to Plowshares; Thassa's Oracle; Tibalt's Trickery; Time Warp; Uro, Titan of Nature's Wrath; Veil of Summer; Verdant Catacombs; Wilderness Reclamation; Windswept Heath; Winter Moon; Wooded Foothills +Additional:Admiral Brass, Unsinkable; Burden of Guilt; Clavileño, First of the Blessed; Crashing Footfalls; Desert; Desertion; Dismember; Duskmantle, House of Shadow; Enlisted Wurm; Evolutionary Leap; Fabricate; Gamble; Ghostly Prison; Gonti, Canny Acquisitor; Goro-Goro and Satoru; Ixidor, Reality Sculptor; Katilda and Lier; Kuldotha Rebirth; Leonin Relic-Warder; Magmaw; Mass Hysteria; Metalspinner's Puzzleknot; Mistveil Plains; Molten Psyche; Monologue Tax; Mystery Key; Mystic Snake; Notion Thief; Nyx Weaver; Olivia, Opulent Outlaw; Pantlaza, Sun-Favored; Persist; Port Razer; Possibility Storm; Prismatic Ending; Prismatic Vista; Putrid Warrior; Shard of Broken Glass; Slimefoot and Squee; Smuggler's Copter; Spell Snare; Stella Lee, Wild Card; Stoneforge Mystic; Timeless Dragon; Treacherous Terrain; Victimize; Xolatoyac, the Smiling Flood; Yuma, Proud Protector diff --git a/forge-gui/res/formats/Archived/Timeless/2024-10-15.txt b/forge-gui/res/formats/Archived/Timeless/2024-10-15.txt new file mode 100644 index 00000000000..6fe3f3c4433 --- /dev/null +++ b/forge-gui/res/formats/Archived/Timeless/2024-10-15.txt @@ -0,0 +1,8 @@ +[format] +Name:Timeless (YDSK) +Type:Archived +Subtype:Vintage +Effective:2024-10-15 +Sets:KTK, XLN, RIX, DOM, M19, ANA, PANA, GRN, G18, RNA, WAR, M20, ELD, HA1, THB, HA2, IKO, HA3, M21, JMP, AJMP, AKR, ANB, ZNR, KLR, KHM, HA4, STX, STA, HA5, AFR, J21, MID, VOW, YMID, NEO, YNEO, SNC, YSNC, HBG, HA6, EA1, DMU, YDMU, BRO, BRR, YBRO, EA2, ONE, YONE, SIR, SIS, MOM, MUL, MAT, LTR, HA7, EA3, WOE, WOT, YWOE, LCI, YLCI, MKM, YMKM, OTJ, OTP, BIG, YOTJ, MH3, BLB, YBLB, DSK, YDSK +Restricted:Channel; Demonic Tutor; Tibalt's Trickery +Additional:Admiral Brass, Unsinkable; Burden of Guilt; Clavileño, First of the Blessed; Crashing Footfalls; Desert; Desertion; Dismember; Duskmantle, House of Shadow; Endurance; Enlisted Wurm; Evolutionary Leap; Fabricate; Fury; Gamble; Ghostly Prison; Gonti, Canny Acquisitor; Goro-Goro and Satoru; Grief; Ixidor, Reality Sculptor; Katilda and Lier; Kuldotha Rebirth; Leonin Relic-Warder; Magmaw; Mass Hysteria; Metalspinner's Puzzleknot; Mistveil Plains; Molten Psyche; Monologue Tax; Mystery Key; Mystic Snake; Notion Thief; Nyx Weaver; Olivia, Opulent Outlaw; Pantlaza, Sun-Favored; Persist; Port Razer; Possibility Storm; Prismatic Ending; Prismatic Vista; Putrid Warrior; Shard of Broken Glass; Show and Tell; Slimefoot and Squee; Smuggler's Copter; Solitude; Spell Snare; Stella Lee, Wild Card; Stoneforge Mystic; Subtlety; Timeless Dragon; Treacherous Terrain; Victimize; Xolatoyac, the Smiling Flood; Yuma, Proud Protector diff --git a/forge-gui/res/formats/Sanctioned/Historic.txt b/forge-gui/res/formats/Sanctioned/Historic.txt index 86df4963dca..4c06aea941e 100644 --- a/forge-gui/res/formats/Sanctioned/Historic.txt +++ b/forge-gui/res/formats/Sanctioned/Historic.txt @@ -4,6 +4,6 @@ Type:Digital Subtype:Arena Effective:2019-11-21 Order:142 -Sets:KTK, XLN, RIX, DOM, M19, ANA, PANA, GRN, G18, RNA, WAR, M20, ELD, HA1, THB, HA2, IKO, HA3, M21, JMP, AJMP, AKR, ANB, ZNR, KLR, KHM, HA4, STX, STA, HA5, AFR, J21, MID, VOW, YMID, NEO, YNEO, SNC, YSNC, HBG, HA6, EA1, DMU, YDMU, BRO, BRR, YBRO, EA2, ONE, YONE, SIR, SIS, MOM, MUL, MAT, LTR, HA7, EA3, WOE, WOT, YWOE, LCI, YLCI, MKM, YMKM, OTJ, OTP, BIG, YOTJ, MH3, BLB, YBLB, DSK +Sets:KTK, XLN, RIX, DOM, M19, ANA, PANA, GRN, G18, RNA, WAR, M20, ELD, HA1, THB, HA2, IKO, HA3, M21, JMP, AJMP, AKR, ANB, ZNR, KLR, KHM, HA4, STX, STA, HA5, AFR, J21, MID, VOW, YMID, NEO, YNEO, SNC, YSNC, HBG, HA6, EA1, DMU, YDMU, BRO, BRR, YBRO, EA2, ONE, YONE, SIR, SIS, MOM, MUL, MAT, LTR, HA7, EA3, WOE, WOT, YWOE, LCI, YLCI, MKM, YMKM, OTJ, OTP, BIG, YOTJ, MH3, BLB, YBLB, DSK, YDSK Banned:Agent of Treachery; Arid Mesa; Blood Moon; Bloodstained Mire; Brainstorm; Channel; Commandeer; Counterspell; Dark Ritual; Demonic Tutor; Endurance; Field of the Dead; Flare of Cultivation; Flare of Denial; Flare of Duplication; Flare of Fortitude; Flare of Malice; Flooded Strand; Force of Vigor; Fury; Grief; Harbinger of the Seas; Intruder Alarm; Land Tax; Lightning Bolt; Mana Drain; Marsh Flats; Memory Lapse; Mishra's Bauble; Misty Rainforest; Natural Order; Necropotence; Nexus of Fate; Oko, Thief of Crowns; Once Upon a Time; Polluted Delta; Ragavan, Nimble Pilferer; Reanimate; Scalding Tarn; Show and Tell; Sneak Attack; Solitude; Spreading Seas; Subtlety; Swords to Plowshares; Thassa's Oracle; Tibalt's Trickery; Time Warp; Uro, Titan of Nature's Wrath; Veil of Summer; Verdant Catacombs; Wilderness Reclamation; Windswept Heath; Winter Moon; Wooded Foothills Additional:Admiral Brass, Unsinkable; Burden of Guilt; Clavileño, First of the Blessed; Crashing Footfalls; Desert; Desertion; Dismember; Duskmantle, House of Shadow; Enlisted Wurm; Evolutionary Leap; Fabricate; Gamble; Ghostly Prison; Gonti, Canny Acquisitor; Goro-Goro and Satoru; Ixidor, Reality Sculptor; Katilda and Lier; Kuldotha Rebirth; Leonin Relic-Warder; Magmaw; Mass Hysteria; Metalspinner's Puzzleknot; Mistveil Plains; Molten Psyche; Monologue Tax; Mystery Key; Mystic Snake; Notion Thief; Nyx Weaver; Olivia, Opulent Outlaw; Pantlaza, Sun-Favored; Persist; Port Razer; Possibility Storm; Prismatic Ending; Prismatic Vista; Putrid Warrior; Shard of Broken Glass; Slimefoot and Squee; Smuggler's Copter; Spell Snare; Stella Lee, Wild Card; Stoneforge Mystic; Timeless Dragon; Treacherous Terrain; Victimize; Xolatoyac, the Smiling Flood; Yuma, Proud Protector diff --git a/forge-gui/res/lists/altwin-achievements.txt b/forge-gui/res/lists/altwin-achievements.txt index 095fd7465ac..61bd6dff6a5 100644 --- a/forge-gui/res/lists/altwin-achievements.txt +++ b/forge-gui/res/lists/altwin-achievements.txt @@ -33,6 +33,7 @@ Mirrodin Besieged|The War's End|Spoiler alert: Phyrexia won. Mortal Combat|The Boneyard|So peaceful... Near-Death Experience|The Edge|Phew... I thought I was going to die! Phage the Untouchable|The Untouchable|None are immune to her deadly touch! +Promising Stairs|Fully Explored|That's just good cardio. Ramses, Assassin Lord|The Precise Strike|Break one gear and the whole machine stops. You are that gear. Revel in Riches|The Dead Man's Chest|Yo-ho-ho, and a bottle of rum! Simic Ascendancy|The Ascension|As you can see, we are going through a period of unprecedented growth. diff --git a/forge-gui/res/quest/commanderprecons/Death Toll [DSC] [2024].dck b/forge-gui/res/quest/commanderprecons/Death Toll [DSC] [2024].dck new file mode 100644 index 00000000000..8d4369649a1 --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Death Toll [DSC] [2024].dck @@ -0,0 +1,97 @@ +[metadata] +Name=Death Toll [DSC] [2024] +[Commander] +1 Winter, Cynical Opportunist|DSC|1 +[Main] +1 Grist, the Hunger Tide|DSC|1 +1 Ob Nixilis Reignited|DSC|1 +1 Professor Onyx|DSC|1 +1 Wrenn and Seven|DSC|1 +1 Burnished Hart|DSC|1 +1 Carrion Grub|DSC|1 +1 Deathcap Cultivator|DSC|1 +1 Demolisher Spawn|DSC|1 +1 Giant Adephage|DSC|1 +1 Gnarlwood Dryad|DSC|1 +1 Grim Flayer|DSC|1 +1 Haywire Mite|DSC|1 +1 Hornet Queen|DSC|1 +1 Ishkanah, Grafwidow|DSC|1 +1 Moldgraf Millipede|DSC|1 +1 Moldgraf Monstrosity|DSC|1 +1 Noxious Gearhulk|DSC|1 +1 Nyx Weaver|DSC|1 +1 Obsessive Skinner|DSC|1 +1 Old Stickfingers|DSC|1 +1 Rendmaw, Creaking Nest|DSC|1 +1 Sakura-Tribe Elder|DSC|1 +1 Scavenging Ooze|DSC|1 +1 Skola Grovedancer|DSC|1 +1 Solemn Simulacrum|DSC|1 +1 Stitcher's Supplier|DSC|1 +1 Suspicious Bookcase|DSC|1 +1 Titania, Nature's Force|DSC|1 +1 Ursine Monstrosity|DSC|1 +1 Vile Mutilator|DSK|1 +1 Arachnogenesis|DSC|1 +1 Grapple with the Past|DSC|1 +1 Grisly Salvage|DSC|1 +1 Harrow|DSC|1 +1 Inscription of Abundance|DSC|1 +1 Putrefy|DSC|1 +1 Convert to Slime|DSC|1 +1 Culling Ritual|DSC|1 +1 Deluge of Doom|DSC|1 +1 Formless Genesis|DSC|1 +1 Harmonize|DSC|1 +1 Mulch|DSC|1 +1 Night's Whisper|DSC|1 +1 Rampant Growth|DSC|1 +1 Reanimate|DSC|1 +1 Binding the Old Gods|DSC|1 +1 Cemetery Tampering|DSC|1 +1 Crawling Sensation|DSC|1 +1 Deadbridge Chant|DSC|1 +1 Deathreap Ritual|DSC|1 +1 Demonic Covenant|DSC|1 +1 Into the Pit|DSC|1 +1 Polluted Cistern // Dim Oubliette|DSC|1 +1 Arcane Signet|DSC|1 +1 Commander's Sphere|DSC|1 +1 Golgari Signet|DSC|1 +1 Mind Stone|DSC|1 +1 Sol Ring|DSC|1 +1 Talisman of Resilience|DSC|1 +1 Whip of Erebos|DSC|1 +1 Whispersilk Cloak|DSC|1 +1 Ash Barrens|DSC|1 +1 Barren Moor|DSC|1 +1 Bojuka Bog|DSC|1 +1 Command Tower|DSC|1 +1 Darkmoss Bridge|DSC|1 +1 Dryad Arbor|DSC|1 +1 Evolving Wilds|DSC|1 +1 Exotic Orchard|DSC|1 +3 Forest|DSK|1 +2 Forest|DSK|2 +2 Forest|DSK|3 +1 Golgari Rot Farm|DSC|1 +1 Grim Backwoods|DSC|1 +1 Jungle Hollow|DSC|1 +1 Llanowar Wastes|DSC|1 +1 Necroblossom Snarl|DSC|1 +1 Reliquary Tower|DSC|1 +3 Swamp|DSK|1 +2 Swamp|DSK|2 +2 Swamp|DSK|3 +1 Tainted Wood|DSC|1 +1 Temple of Malady|DSC|1 +1 Temple of the False God|DSC|1 +1 Terramorphic Expanse|DSK|1 +1 Tranquil Thicket|DSC|1 +1 Tree of Tales|DSC|1 +1 Twilight Mire|DSC|1 +1 Vault of Whispers|DSC|1 +1 Viridescent Bog|DSC|1 +1 Woodland Cemetery|DSC|1 +[Sideboard] \ No newline at end of file diff --git a/forge-gui/res/quest/commanderprecons/Endless Punishment [DSC] [2024].dck b/forge-gui/res/quest/commanderprecons/Endless Punishment [DSC] [2024].dck new file mode 100644 index 00000000000..b16d12cca66 --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Endless Punishment [DSC] [2024].dck @@ -0,0 +1,95 @@ +[metadata] +Name=Endless Punishment [DSC] [2024] +[Commander] +1 Valgavoth, Harrower of Souls|DSC|1 +[Main] +1 Barbflare Gremlin|DSC|1 +1 Blood Artist|DSC|1 +1 Blood Seeker|DSC|1 +1 Braids, Arisen Nightmare|DSC|1 +1 Brash Taunter|DSC|1 +1 Combustible Gearhulk|DSC|1 +1 Falkenrath Noble|DSC|1 +1 Fate Unraveler|DSC|1 +1 Fear of Burning Alive|DSK|1 +1 Florian, Voldaren Scion|DSC|1 +1 Gleeful Arsonist|DSC|1 +1 Gray Merchant of Asphodel|DSC|1 +1 Harsh Mentor|DSC|1 +1 Kaervek the Merciless|DSC|1 +1 Kardur, Doomscourge|DSC|1 +1 Kederekt Parasite|DSC|1 +1 The Lord of Pain|DSC|1 +1 Massacre Girl|DSC|1 +1 Massacre Wurm|DSC|1 +1 Mayhem Devil|DSC|1 +1 Mogis, God of Slaughter|DSC|1 +1 Morbid Opportunist|DSC|1 +1 Nightshade Harvester|DSC|1 +1 Persistent Constrictor|DSC|1 +1 Rakdos, Lord of Riots|DSC|1 +1 Rampaging Ferocidon|DSC|1 +1 Solemn Simulacrum|DSC|1 +1 Star Athlete|DSC|1 +1 Stormfist Crusader|DSC|1 +1 Syr Konrad, the Grim|DSC|1 +1 Tectonic Giant|DSC|1 +1 Vial Smasher the Fierce|DSC|1 +1 Bedevil|DSC|1 +1 Blood Pact|DSC|1 +1 Chaos Warp|DSC|1 +1 Infernal Grasp|DSC|1 +1 Rakdos Charm|DSC|1 +1 Suspended Sentence|DSC|1 +1 Blasphemous Act|DSC|1 +1 Decree of Pain|DSC|1 +1 Feed the Swarm|DSC|1 +1 Grab the Prize|DSK|1 +1 Light Up the Stage|DSC|1 +1 Sadistic Shell Game|DSC|1 +1 Sign in Blood|DSC|1 +1 Bastion of Remembrance|DSC|1 +1 Enchanter's Bane|DSC|1 +1 Spiked Corridor // Torture Pit|DSC|1 +1 Spiteful Visions|DSC|1 +1 Theater of Horrors|DSC|1 +1 Arcane Signet|DSC|1 +1 Basilisk Collar|DSC|1 +1 Fellwar Stone|DSC|1 +1 Lightning Greaves|DSC|1 +1 Mask of Griselbrand|DSC|1 +1 Mind Stone|DSC|1 +1 Rakdos Signet|DSC|1 +1 Séance Board|DSC|1 +1 Sol Ring|DSC|1 +1 Talisman of Indulgence|DSC|1 +1 Thought Vessel|DSC|1 +1 Ash Barrens|DSC|1 +1 Blackcleave Cliffs|DSC|1 +1 Bloodfell Caves|DSC|1 +1 Canyon Slough|DSC|1 +1 Command Tower|DSC|1 +1 Dragonskull Summit|DSC|1 +1 Evolving Wilds|DSC|1 +1 Exotic Orchard|DSC|1 +1 Foreboding Ruins|DSC|1 +1 Geothermal Bog|DSC|1 +1 Graven Cairns|DSC|1 +1 Leechridden Swamp|DSC|1 +3 Mountain|DSK|1 +3 Mountain|DSK|2 +2 Mountain|DSK|3 +1 Shadowblood Ridge|DSC|1 +1 Shivan Gorge|DSC|1 +1 Smoldering Marsh|DSC|1 +1 Spinerock Knoll|DSC|1 +1 Sulfurous Springs|DSC|1 +3 Swamp|DSK|1 +3 Swamp|DSK|2 +2 Swamp|DSK|3 +1 Tainted Peak|DSC|1 +1 Temple of Malice|DSC|1 +1 Temple of the False God|DSC|1 +1 Terramorphic Expanse|DSK|1 +1 Witch's Clinic|DSC|1 +[Sideboard] \ No newline at end of file diff --git a/forge-gui/res/quest/commanderprecons/Jump Scare! [DSC] [2024].dck b/forge-gui/res/quest/commanderprecons/Jump Scare! [DSC] [2024].dck new file mode 100644 index 00000000000..8c4f84a6967 --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Jump Scare! [DSC] [2024].dck @@ -0,0 +1,93 @@ +[metadata] +Name=Jump Scare! [DSC] [2024] +[Commander] +1 Zimone, Mystery Unraveler|DSC|1 +[Main] +1 Aesi, Tyrant of Gyre Strait|DSC|1 +1 Arixmethes, Slumbering Isle|DSC|1 +1 Ashaya, Soul of the Wild|DSC|1 +1 Augur of Autumn|DSC|1 +1 Beanstalk Giant|DSC|1 +1 Body of Knowledge|DSC|1 +1 Citanul Hierophants|DSC|1 +1 Curator Beastie|DSC|1 +1 Deathmist Raptor|DSC|1 +1 Giggling Skitterspike|DSC|1 +1 Glitch Interpreter|DSC|1 +1 Greater Tanuki|DSC|1 +1 Hydra Omnivore|DSC|1 +1 Kefnet the Mindful|DSC|1 +1 Kheru Spellsnatcher|DSC|1 +1 Kianne, Corrupted Memory|DSC|1 +1 Multani, Yavimaya's Avatar|DSC|1 +1 Overgrown Zealot|DSK|1 +1 Rashmi, Eternities Crafter|DSC|1 +1 Sakura-Tribe Elder|DSC|1 +1 Scute Swarm|DSC|1 +1 Shigeki, Jukai Visionary|DSC|1 +1 Shriekwood Devourer|DSC|1 +1 Skaab Ruinator|DSC|1 +1 Tatyova, Benthic Druid|DSC|1 +1 Temur War Shaman|DSC|1 +1 Thunderfoot Baloth|DSC|1 +1 Trygon Predator|DSC|1 +1 Whisperwood Elemental|DSC|1 +1 Worldspine Wurm|DSC|1 +1 Yavimaya Elder|DSC|1 +1 Yedora, Grave Gardener|DSC|1 +1 Beast Within|DSC|1 +1 Biomass Mutation|DSC|1 +1 Cackling Counterpart|DSC|1 +1 Counterspell|DSC|1 +1 Dig Through Time|DSC|1 +1 Eureka Moment|DSC|1 +1 Growth Spiral|DSC|1 +1 Reality Shift|DSC|1 +1 Zimone's Hypothesis|DSC|1 +1 Aether Gale|DSC|1 +1 Cultivate|DSC|1 +1 Disorienting Choice|DSC|1 +1 Explosive Vegetation|DSC|1 +1 Ezuri's Predation|DSC|1 +1 Oversimplify|DSC|1 +1 Overwhelming Stampede|DSC|1 +1 Rampant Growth|DSC|1 +1 Experimental Lab // Staff Room|DSC|1 +1 Growing Dread|DSK|1 +1 Primordial Mist|DSC|1 +1 Retreat to Coralhelm|DSC|1 +1 Sandwurm Convergence|DSC|1 +1 They Came From the Pipes|DSC|1 +1 Trail of Mystery|DSC|1 +1 Wilderness Reclamation|DSC|1 +1 Arcane Signet|DSC|1 +1 Scroll of Fate|DSC|1 +1 Simic Signet|DSC|1 +1 Sol Ring|DSC|1 +1 Ash Barrens|DSC|1 +1 Castle Vantress|DSC|1 +1 Command Tower|DSC|1 +1 Drownyard Temple|DSC|1 +1 Evolving Wilds|DSC|1 +1 Flooded Grove|DSC|1 +3 Forest|DSK|1 +3 Forest|DSK|2 +3 Forest|DSK|3 +1 Hinterland Harbor|DSC|1 +3 Island|DSK|1 +3 Island|DSK|2 +3 Island|DSK|3 +1 Mosswort Bridge|DSC|1 +1 Myriad Landscape|DSC|1 +1 Overflowing Basin|DSC|1 +1 Quandrix Campus|DSC|1 +1 Reliquary Tower|DSC|1 +1 Simic Growth Chamber|DSC|1 +1 Tangled Islet|DSC|1 +1 Temple of Mystery|DSC|1 +1 Temple of the False God|DSC|1 +1 Terramorphic Expanse|DSK|1 +1 Thornwood Falls|DSC|1 +1 Vineglimmer Snarl|DSC|1 +1 Yavimaya Coast|DSC|1 +[Sideboard] \ No newline at end of file diff --git a/forge-gui/res/quest/commanderprecons/Miracle Worker [DSC] [2024].dck b/forge-gui/res/quest/commanderprecons/Miracle Worker [DSC] [2024].dck new file mode 100644 index 00000000000..046c14fe10b --- /dev/null +++ b/forge-gui/res/quest/commanderprecons/Miracle Worker [DSC] [2024].dck @@ -0,0 +1,100 @@ +[metadata] +Name=Miracle Worker [DSC] [2024] +[Commander] +1 Aminatou, Veil Piercer|DSC|1 +[Main] +1 Ancient Cellarspawn|DSC|1 +1 Archetype of Imagination|DSC|1 +1 Arvinox, the Mind Flail|DSC|1 +1 Athreos, Shroud-Veiled|DSC|1 +1 Auramancer|DSC|1 +1 Burnished Hart|DSC|1 +1 Demon of Fate's Design|DSC|1 +1 Doomwake Giant|DSC|1 +1 Dream Eater|DSC|1 +1 Fear of Sleep Paralysis|DSC|1 +1 Mesa Enchantress|DSC|1 +1 Metamorphosis Fanatic|DSC|1 +1 Moon-Blessed Cleric|DSC|1 +1 Nightmare Shepherd|DSC|1 +1 Ondu Spiritdancer|DSC|1 +1 Phenomenon Investigators|DSC|1 +1 Prognostic Sphinx|DSC|1 +1 Soaring Lightbringer|DSC|1 +1 Solemn Simulacrum|DSC|1 +1 Starfield Mystic|DSC|1 +1 The Master of Keys|DSC|1 +1 Verge Rangers|DSC|1 +1 Arcane Denial|DSC|1 +1 Brainstorm|DSC|1 +1 Inkshield|DSC|1 +1 Otherworldly Gaze|DSC|1 +1 Return to Dust|DSC|1 +1 Swords to Plowshares|DSC|1 +1 Telling Time|DSC|1 +1 Thirst for Meaning|DSC|1 +1 Utter End|DSC|1 +1 Aminatou's Augury|DSC|1 +1 Diabolic Vision|DSC|1 +1 Entreat the Angels|DSC|1 +1 Ponder|DSC|1 +1 Portent|DSC|1 +1 Read the Bones|DSC|1 +1 Redress Fate|DSC|1 +1 Terminus|DSC|1 +1 Time Wipe|DSC|1 +1 Bottomless Pool // Locker Room|DSK|1 +1 Cast Out|DSC|1 +1 Cramped Vents // Access Maze|DSC|1 +1 Extravagant Replication|DSC|1 +1 Life Insurance|DSC|1 +1 Mirrormade|DSC|1 +1 Monologue Tax|DSC|1 +1 One with the Multiverse|DSC|1 +1 Secret Arcade // Dusty Parlor|DSC|1 +1 Shark Typhoon|DSC|1 +1 Sigil of the Empty Throne|DSC|1 +1 Sphere of Safety|DSC|1 +1 Spirit-Sister's Call|DSC|1 +1 The Eldest Reborn|DSC|1 +1 Timely Ward|DSC|1 +1 Arcane Signet|DSC|1 +1 Azorius Signet|DSC|1 +1 Brainstone|DSC|1 +1 Commander's Sphere|DSC|1 +1 Mind Stone|DSC|1 +1 Orzhov Signet|DSC|1 +1 Sol Ring|DSC|1 +1 Adarkar Wastes|DSC|1 +1 Arcane Sanctum|DSC|1 +1 Ash Barrens|DSC|1 +1 Azorius Chancery|DSC|1 +1 Bojuka Bog|DSC|1 +1 Caves of Koilos|DSC|1 +1 Command Tower|DSC|1 +1 Dimir Aqueduct|DSC|1 +1 Evolving Wilds|DSC|1 +1 Halimar Depths|DSC|1 +1 Hall of Heliod's Generosity|DSC|1 +1 Obscura Storefront|DSC|1 +1 Orzhov Basilica|DSC|1 +1 Tainted Field|DSC|1 +1 Tainted Isle|DSC|1 +1 Temple of Deceit|DSC|1 +1 Temple of Enlightenment|DSC|1 +1 Temple of Silence|DSC|1 +1 Terramorphic Expanse|DSK|1 +1 Thriving Heath|DSC|1 +1 Thriving Isle|DSC|1 +1 Thriving Moor|DSC|1 +1 Underground River|DSC|1 +2 Island|DSK|1 +1 Island|DSK|2 +1 Island|DSK|3 +2 Plains|DSK|1 +2 Plains|DSK|2 +1 Plains|DSK|3 +2 Swamp|DSK|1 +2 Swamp|DSK|2 +1 Swamp|DSK|3 +[Sideboard] \ No newline at end of file diff --git a/forge-gui/src/main/java/forge/player/HumanCostDecision.java b/forge-gui/src/main/java/forge/player/HumanCostDecision.java index 6f8437163dc..4ffa07d42fc 100644 --- a/forge-gui/src/main/java/forge/player/HumanCostDecision.java +++ b/forge-gui/src/main/java/forge/player/HumanCostDecision.java @@ -992,7 +992,7 @@ public class HumanCostDecision extends CostDecisionMakerBase { cType = getController().chooseCounterType(Lists.newArrayList(cmap.keySet()), sa, prompt, null); } - if (cType == null) { + if (cType == null || !c.canRemoveCounters(cType)) { return false; } @@ -1308,7 +1308,7 @@ public class HumanCostDecision extends CostDecisionMakerBase { public PaymentDecision visit(final CostUntapType cost) { CardCollection typeList = CardLists.getValidCards(player.getGame().getCardsIn(ZoneType.Battlefield), cost.getType().split(";"), player, source, ability); - typeList = CardLists.filter(typeList, Presets.TAPPED); + typeList = CardLists.filter(typeList, Presets.TAPPED, c -> c.getCounters(CounterEnumType.STUN) == 0 || c.canRemoveCounters(CounterType.get(CounterEnumType.STUN))); if (!cost.canUntapSource) { typeList.remove(source); } diff --git a/forge-lda/pom.xml b/forge-lda/pom.xml index f06ef8734a7..133db8447af 100644 --- a/forge-lda/pom.xml +++ b/forge-lda/pom.xml @@ -4,7 +4,7 @@ forge forge - 1.6.65-SNAPSHOT + 1.6.66-SNAPSHOT forge-lda diff --git a/pom.xml b/pom.xml index 993a31fa14f..4a92e6929c3 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ forge pom Forge Parent - 1.6.65-SNAPSHOT + 1.6.66-SNAPSHOT Forge lets you play the card game Magic: The Gathering against a computer opponent using all of the rules.