diff --git a/forge-adventure/pom.xml b/forge-adventure/pom.xml index 4db33e516e6..1ff441e8800 100644 --- a/forge-adventure/pom.xml +++ b/forge-adventure/pom.xml @@ -3,7 +3,7 @@ forge forge - 1.6.56-SNAPSHOT + 1.6.57-SNAPSHOT 4.0.0 diff --git a/forge-ai/pom.xml b/forge-ai/pom.xml index dae7710103d..5e8f803fd2a 100644 --- a/forge-ai/pom.xml +++ b/forge-ai/pom.xml @@ -6,7 +6,7 @@ forge forge - 1.6.56-SNAPSHOT + 1.6.57-SNAPSHOT forge-ai diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java b/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java index 02f19fc12f2..a1f0ffd1fcc 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtilCard.java @@ -432,7 +432,7 @@ public class ComputerUtilCard { * @param list * @return a {@link forge.game.card.Card} object. */ - public static Card getBestCreatureToBounceAI(final CardCollectionView list) { + public static Card getBestCreatureToBounceAI(final Iterable list) { if (Iterables.size(list) == 1) { return Iterables.get(list, 0); } diff --git a/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java b/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java index f420cecf3e8..2458dcf3613 100644 --- a/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java +++ b/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java @@ -86,7 +86,7 @@ public class PlayerControllerAi extends PlayerController { @Override public SpellAbility getAbilityToPlay(Card hostCard, List abilities, ITriggerEvent triggerEvent) { - if (abilities.size() == 0) { + if (abilities.isEmpty()) { return null; } return abilities.get(0); diff --git a/forge-ai/src/main/java/forge/ai/SpellApiToAi.java b/forge-ai/src/main/java/forge/ai/SpellApiToAi.java index 19657159607..b0ec07b06e0 100644 --- a/forge-ai/src/main/java/forge/ai/SpellApiToAi.java +++ b/forge-ai/src/main/java/forge/ai/SpellApiToAi.java @@ -32,6 +32,7 @@ public enum SpellApiToAi { .put(ApiType.BecomeMonarch, AlwaysPlayAi.class) .put(ApiType.BecomesBlocked, BecomesBlockedAi.class) .put(ApiType.BidLife, BidLifeAi.class) + .put(ApiType.BlankLine, AlwaysPlayAi.class) .put(ApiType.Bond, BondAi.class) .put(ApiType.Branch, AlwaysPlayAi.class) .put(ApiType.Camouflage, ChooseCardAi.class) @@ -40,6 +41,7 @@ public enum SpellApiToAi { .put(ApiType.ChangeX, AlwaysPlayAi.class) .put(ApiType.ChangeZone, ChangeZoneAi.class) .put(ApiType.ChangeZoneAll, ChangeZoneAllAi.class) + .put(ApiType.ChaosEnsues, AlwaysPlayAi.class) .put(ApiType.Charm, CharmAi.class) .put(ApiType.ChooseCard, ChooseCardAi.class) .put(ApiType.ChooseColor, ChooseColorAi.class) diff --git a/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java b/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java index fd02a6cb98e..bf263a06eed 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java @@ -1216,7 +1216,7 @@ public class ChangeZoneAi extends SpellAbilityAi { } } if (choice == null) { // can't find anything left - if (sa.getTargets().size() == 0 || !sa.isTargetNumberValid()) { + if (sa.getTargets().isEmpty() || !sa.isTargetNumberValid()) { if (!mandatory) { sa.resetTargets(); } @@ -1432,7 +1432,7 @@ public class ChangeZoneAi extends SpellAbilityAi { final ZoneType destination = ZoneType.smartValueOf(sa.getParam("Destination")); final TargetRestrictions tgt = sa.getTargetRestrictions(); - CardCollection list = new CardCollection(CardUtil.getValidCardsToTarget(tgt, sa)); + List list = CardUtil.getValidCardsToTarget(tgt, sa); if (list.isEmpty()) { return false; diff --git a/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAllAi.java b/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAllAi.java index 07fc3bbaf96..010b8f0fd9c 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAllAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAllAi.java @@ -5,7 +5,6 @@ import java.util.Map; import com.google.common.base.Predicates; import com.google.common.collect.Iterables; -import com.google.common.collect.Lists; import forge.ai.AiController; import forge.ai.AiPlayerPredicates; @@ -197,8 +196,7 @@ public class ChangeZoneAllAi extends SpellAbilityAi { // mass zone change for creatures: if in dire danger, do it; otherwise, only do it if the opponent's // creatures are better in value - if ((CardLists.getNotType(oppType, "Creature").size() == 0) - && (CardLists.getNotType(computerType, "Creature").size() == 0)) { + if (CardLists.getNotType(oppType, "Creature").isEmpty() && CardLists.getNotType(computerType, "Creature").isEmpty()) { if (game.getCombat() != null && ComputerUtilCombat.lifeInSeriousDanger(ai, game.getCombat())) { if (game.getPhaseHandler().is(PhaseType.COMBAT_DECLARE_BLOCKERS) && game.getPhaseHandler().getPlayerTurn().isOpponentOf(ai)) { @@ -225,17 +223,15 @@ public class ChangeZoneAllAi extends SpellAbilityAi { } else if (origin.equals(ZoneType.Graveyard)) { if (sa.usesTargeting()) { // search targetable Opponents - final Iterable oppList = Iterables.filter(ai.getOpponents(), - PlayerPredicates.isTargetableBy(sa)); + final PlayerCollection oppList = ai.getOpponents().filter(PlayerPredicates.isTargetableBy(sa)); - if (Iterables.isEmpty(oppList)) { + if (oppList.isEmpty()) { return false; } // get the one with the most in graveyard // zone is visible so evaluate which would be hurt the most - Player oppTarget = Collections.max(Lists.newArrayList(oppList), - AiPlayerPredicates.compareByZoneValue(sa.getParam("ChangeType"), origin, sa)); + Player oppTarget = Collections.max(oppList, AiPlayerPredicates.compareByZoneValue(sa.getParam("ChangeType"), origin, sa)); // set the target if (!oppTarget.getCardsIn(ZoneType.Graveyard).isEmpty()) { @@ -270,18 +266,14 @@ public class ChangeZoneAllAi extends SpellAbilityAi { return (curHandSize + minAdv - 1 < numExiledWithSrc) || (!noDiscard && numExiledWithSrc >= ai.getMaxHandSize()); } } else if (origin.equals(ZoneType.Stack)) { - // time stop can do something like this: - // Origin$ Stack | Destination$ Exile | SubAbility$ DBSkip - // DBSKipToPhase | DB$SkipToPhase | Phase$ Cleanup - // otherwise, this situation doesn't exist + // TODO return false; } if (destination.equals(ZoneType.Battlefield)) { if (sa.hasParam("GainControl")) { // Check if the cards are valuable enough - if (CardLists.getNotType(oppType, "Creature").size() == 0 - && CardLists.getNotType(computerType, "Creature").size() == 0) { + if (CardLists.getNotType(oppType, "Creature").isEmpty() && CardLists.getNotType(computerType, "Creature").isEmpty()) { if ((ComputerUtilCard.evaluateCreatureList(computerType) + ComputerUtilCard .evaluateCreatureList(oppType)) < 400) { return false; @@ -294,8 +286,7 @@ public class ChangeZoneAllAi extends SpellAbilityAi { } } else { // don't activate if human gets more back than AI does - if ((CardLists.getNotType(oppType, "Creature").size() == 0) - && (CardLists.getNotType(computerType, "Creature").size() == 0)) { + if (CardLists.getNotType(oppType, "Creature").isEmpty() && CardLists.getNotType(computerType, "Creature").isEmpty()) { if (ComputerUtilCard.evaluateCreatureList(computerType) <= (ComputerUtilCard .evaluateCreatureList(oppType) + 100)) { return false; @@ -354,8 +345,7 @@ public class ChangeZoneAllAi extends SpellAbilityAi { return true; // if AI creature is better than Human Creature - return ComputerUtilCard.evaluateCreatureList(aiCards) >= ComputerUtilCard - .evaluateCreatureList(humanCards); + return ComputerUtilCard.evaluateCreatureList(aiCards) >= ComputerUtilCard.evaluateCreatureList(humanCards); } return true; } @@ -416,15 +406,13 @@ public class ChangeZoneAllAi extends SpellAbilityAi { // if the AI is using it defensively, then something else needs to occur // if only creatures are affected evaluate both lists and pass only // if human creatures are more valuable - if ((CardLists.getNotType(humanType, "Creature").isEmpty()) && (CardLists.getNotType(computerType, "Creature").isEmpty())) { - if (ComputerUtilCard.evaluateCreatureList(computerType) >= ComputerUtilCard - .evaluateCreatureList(humanType)) { + if (CardLists.getNotType(humanType, "Creature").isEmpty() && CardLists.getNotType(computerType, "Creature").isEmpty()) { + if (ComputerUtilCard.evaluateCreatureList(computerType) >= ComputerUtilCard.evaluateCreatureList(humanType)) { return false; } } // otherwise evaluate both lists by CMC and pass only if human // permanents are more valuable - else if (ComputerUtilCard.evaluatePermanentList(computerType) >= ComputerUtilCard - .evaluatePermanentList(humanType)) { + else if (ComputerUtilCard.evaluatePermanentList(computerType) >= ComputerUtilCard.evaluatePermanentList(humanType)) { return false; } } else if (origin.equals(ZoneType.Graveyard)) { @@ -457,11 +445,7 @@ public class ChangeZoneAllAi extends SpellAbilityAi { } else if (origin.equals(ZoneType.Exile)) { } else if (origin.equals(ZoneType.Stack)) { - // time stop can do something like this: - // Origin$ Stack | Destination$ Exile | SubAbility$ DBSkip - // DBSKipToPhase | DB$SkipToPhase | Phase$ Cleanup - // otherwise, this situation doesn't exist - return false; + // currently only exists indirectly (e.g. Summary Dismissal via PlayAi) } if (destination.equals(ZoneType.Battlefield)) { @@ -469,25 +453,22 @@ public class ChangeZoneAllAi extends SpellAbilityAi { if (mandatory) { return true; } - if (sa.getParam("GainControl") != null) { + if (sa.hasParam("GainControl")) { // Check if the cards are valuable enough - if ((CardLists.getNotType(humanType, "Creature").size() == 0) && (CardLists.getNotType(computerType, "Creature").size() == 0)) { - return (ComputerUtilCard.evaluateCreatureList(computerType) + ComputerUtilCard - .evaluateCreatureList(humanType)) >= 1; + if (CardLists.getNotType(humanType, "Creature").isEmpty() && CardLists.getNotType(computerType, "Creature").isEmpty()) { + return (ComputerUtilCard.evaluateCreatureList(computerType) + ComputerUtilCard.evaluateCreatureList(humanType)) >= 1; } // otherwise evaluate both lists by CMC and pass only if human // permanents are less valuable - else return (ComputerUtilCard.evaluatePermanentList(computerType) + ComputerUtilCard + return (ComputerUtilCard.evaluatePermanentList(computerType) + ComputerUtilCard .evaluatePermanentList(humanType)) >= 1; - } else { - // don't activate if human gets more back than AI does - if ((CardLists.getNotType(humanType, "Creature").isEmpty()) && (CardLists.getNotType(computerType, "Creature").isEmpty())) { - return ComputerUtilCard.evaluateCreatureList(computerType) > ComputerUtilCard - .evaluateCreatureList(humanType); - } // otherwise evaluate both lists by CMC and pass only if human - // permanents are less valuable - else return ComputerUtilCard.evaluatePermanentList(computerType) > ComputerUtilCard - .evaluatePermanentList(humanType); } + + // don't activate if human gets more back than AI does + if (CardLists.getNotType(humanType, "Creature").isEmpty() && CardLists.getNotType(computerType, "Creature").isEmpty()) { + return ComputerUtilCard.evaluateCreatureList(computerType) > ComputerUtilCard.evaluateCreatureList(humanType); + } // otherwise evaluate both lists by CMC and pass only if human + // permanents are less valuable + return ComputerUtilCard.evaluatePermanentList(computerType) > ComputerUtilCard.evaluatePermanentList(humanType); } return true; diff --git a/forge-ai/src/main/java/forge/ai/ability/ClashAi.java b/forge-ai/src/main/java/forge/ai/ability/ClashAi.java index 8541efdb2f7..e360b6863da 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ClashAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ClashAi.java @@ -59,7 +59,7 @@ public class ClashAi extends SpellAbilityAi { @Override protected Player chooseSinglePlayer(Player ai, SpellAbility sa, Iterable options, Map params) { for (Player p : options) { - if (p.getCardsIn(ZoneType.Library).size() == 0) + if (p.getCardsIn(ZoneType.Library).isEmpty()) return p; } diff --git a/forge-ai/src/main/java/forge/ai/ability/CounterAi.java b/forge-ai/src/main/java/forge/ai/ability/CounterAi.java index a13b1dbfe96..1c175905e1f 100644 --- a/forge-ai/src/main/java/forge/ai/ability/CounterAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/CounterAi.java @@ -64,8 +64,7 @@ public class CounterAi extends SpellAbilityAi { if (sa.usesTargeting()) { final SpellAbility topSA = ComputerUtilAbility.getTopSpellAbilityOnStack(game, sa); - if ((topSA.isSpell() && !CardFactoryUtil.isCounterableBy(topSA.getHostCard(), sa)) || topSA.getActivatingPlayer() == ai - || ai.getAllies().contains(topSA.getActivatingPlayer())) { + if ((topSA.isSpell() && !CardFactoryUtil.isCounterableBy(topSA.getHostCard(), sa)) || ai.getYourTeam().contains(topSA.getActivatingPlayer())) { // might as well check for player's friendliness return false; } else if (sa.hasParam("ConditionWouldDestroy") && !CounterEffect.checkForConditionWouldDestroy(sa, topSA)) { diff --git a/forge-ai/src/main/java/forge/ai/ability/RegenerateAi.java b/forge-ai/src/main/java/forge/ai/ability/RegenerateAi.java index 2cffe2688bd..b9b8108471f 100644 --- a/forge-ai/src/main/java/forge/ai/ability/RegenerateAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/RegenerateAi.java @@ -89,7 +89,7 @@ public class RegenerateAi extends SpellAbilityAi { // filter AIs battlefield by what I can target List targetables = CardLists.getTargetableCards(ai.getCardsIn(ZoneType.Battlefield), sa); - if (targetables.size() == 0) { + if (targetables.isEmpty()) { return false; } @@ -153,11 +153,11 @@ public class RegenerateAi extends SpellAbilityAi { CardCollectionView targetables = CardLists.getTargetableCards(game.getCardsIn(ZoneType.Battlefield), sa); final List compTargetables = CardLists.filterControlledBy(targetables, ai); - if (targetables.size() == 0) { + if (targetables.isEmpty()) { return false; } - if (!mandatory && compTargetables.size() == 0) { + if (!mandatory && compTargetables.isEmpty()) { return false; } diff --git a/forge-ai/src/main/java/forge/ai/ability/RegenerateAllAi.java b/forge-ai/src/main/java/forge/ai/ability/RegenerateAllAi.java index 909fe257786..3508b96ed1e 100644 --- a/forge-ai/src/main/java/forge/ai/ability/RegenerateAllAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/RegenerateAllAi.java @@ -32,7 +32,7 @@ public class RegenerateAllAi extends SpellAbilityAi { list = CardLists.getValidCards(list, valid, hostCard.getController(), hostCard, sa); list = CardLists.filter(list, CardPredicates.isController(ai)); - if (list.size() == 0) { + if (list.isEmpty()) { return false; } diff --git a/forge-core/pom.xml b/forge-core/pom.xml index 1bce1d8a50c..373b090f3c3 100644 --- a/forge-core/pom.xml +++ b/forge-core/pom.xml @@ -6,7 +6,7 @@ forge forge - 1.6.56-SNAPSHOT + 1.6.57-SNAPSHOT forge-core diff --git a/forge-game/pom.xml b/forge-game/pom.xml index 828f9c5a97c..ec54950674a 100644 --- a/forge-game/pom.xml +++ b/forge-game/pom.xml @@ -6,7 +6,7 @@ forge forge - 1.6.56-SNAPSHOT + 1.6.57-SNAPSHOT forge-game diff --git a/forge-game/src/main/java/forge/game/GameAction.java b/forge-game/src/main/java/forge/game/GameAction.java index de559263e22..f89eaca73d2 100644 --- a/forge-game/src/main/java/forge/game/GameAction.java +++ b/forge-game/src/main/java/forge/game/GameAction.java @@ -1439,6 +1439,8 @@ public class GameAction { } setHoldCheckingStaticAbilities(false); + // important to collect first otherwise if a static fires it will mess up registered ones from LKI + game.getTriggerHandler().collectTriggerForWaiting(); if (game.getTriggerHandler().runWaitingTriggers()) { checkAgain = true; } diff --git a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java index a4b39e47d1f..bcc36751067 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java @@ -3580,6 +3580,18 @@ public class AbilityUtils { } return doXMath(amount, m, source, ctb); } + if (value.startsWith("PlaneswalkedToThisTurn")) { + int found = 0; + String name = value.split(" ")[1]; + List pwTo = player.getPlaneswalkedToThisTurn(); + for (Card c : pwTo) { + if (c.getName().equals(name)) { + found++; + break; + } + } + return doXMath(found, m, source, ctb); + } return doXMath(0, m, source, ctb); } diff --git a/forge-game/src/main/java/forge/game/ability/ApiType.java b/forge-game/src/main/java/forge/game/ability/ApiType.java index 06760ca1109..17c12ada344 100644 --- a/forge-game/src/main/java/forge/game/ability/ApiType.java +++ b/forge-game/src/main/java/forge/game/ability/ApiType.java @@ -37,6 +37,7 @@ public enum ApiType { ChangeX (ChangeXEffect.class), ChangeZone (ChangeZoneEffect.class), ChangeZoneAll (ChangeZoneAllEffect.class), + ChaosEnsues (ChaosEnsuesEffect.class), Charm (CharmEffect.class), ChooseCard (ChooseCardEffect.class), ChooseColor (ChooseColorEffect.class), @@ -189,7 +190,7 @@ public enum ApiType { Vote (VoteEffect.class), WinsGame (GameWinEffect.class), - + BlankLine (BlankLineEffect.class), DamageResolve (DamageResolveEffect.class), ChangeZoneResolve (ChangeZoneResolveEffect.class), InternalLegendaryRule (CharmEffect.class), diff --git a/forge-game/src/main/java/forge/game/ability/effects/BlankLineEffect.java b/forge-game/src/main/java/forge/game/ability/effects/BlankLineEffect.java new file mode 100644 index 00000000000..7eb821c2412 --- /dev/null +++ b/forge-game/src/main/java/forge/game/ability/effects/BlankLineEffect.java @@ -0,0 +1,16 @@ +package forge.game.ability.effects; + +import forge.game.ability.SpellAbilityEffect; +import forge.game.spellability.SpellAbility; + +public class BlankLineEffect extends SpellAbilityEffect { + @Override + protected String getStackDescription(SpellAbility sa) { + return "\r\n"; + } + + @Override + public void resolve(SpellAbility sa) { + // this "effect" just allows spacing to look better for certain card displays + } +} 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 6068a34149a..20e245d35dc 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 @@ -339,7 +339,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect { final String fromGraveyard = " from the graveyard"; if (destination.equals(ZoneType.Battlefield)) { - final boolean attacking = (sa.hasParam("Attacking")); + final boolean attacking = sa.hasParam("Attacking"); if (ZoneType.Graveyard.equals(origin)) { sb.append("Return").append(targetname).append(fromGraveyard).append(" to the battlefield"); } else { @@ -565,6 +565,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect { // If a card is moved to library from the stack, remove its spells from the stack if (sa.hasParam("Fizzle")) { + // TODO only AI still targets as card, try to remove it if (gameCard.isInZone(ZoneType.Exile) || gameCard.isInZone(ZoneType.Hand) || gameCard.isInZone(ZoneType.Stack)) { // This only fizzles spells, not anything else. game.getStack().remove(gameCard); diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChaosEnsuesEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChaosEnsuesEffect.java new file mode 100644 index 00000000000..cd9e3cc397a --- /dev/null +++ b/forge-game/src/main/java/forge/game/ability/effects/ChaosEnsuesEffect.java @@ -0,0 +1,74 @@ +package forge.game.ability.effects; + +import com.google.common.collect.Lists; +import forge.game.Game; +import forge.game.ability.AbilityKey; +import forge.game.ability.AbilityUtils; +import forge.game.ability.SpellAbilityEffect; +import forge.game.card.Card; +import forge.game.player.Player; +import forge.game.spellability.SpellAbility; +import forge.game.trigger.Trigger; +import forge.game.trigger.TriggerType; +import forge.game.zone.ZoneType; + +import java.util.*; + +public class ChaosEnsuesEffect extends SpellAbilityEffect { + /** 311.7. Each plane card has a triggered ability that triggers “Whenever chaos ensues.” These are called + chaos abilities. Each one is indicated by a chaos symbol to the left of the ability, though the symbol + itself has no special rules meaning. This ability triggers if the chaos symbol is rolled on the planar + die (see rule 901.9b), if a resolving spell or ability says that chaos ensues, or if a resolving spell or + ability states that chaos ensues for a particular object. In the last case, the chaos ability can trigger + even if that plane card is still in the planar deck but revealed. A chaos ability is controlled by the + current planar controller. **/ + + @Override + public void resolve(SpellAbility sa) { + final Card host = sa.getHostCard(); + final Player activator = sa.getActivatingPlayer(); + final Game game = activator.getGame(); + + if (game.getActivePlanes() == null) { // not a planechase game, nothing happens + return; + } + + Map runParams = AbilityKey.mapFromPlayer(activator); + Map> tweakedTrigs = new HashMap<>(); + + List affected = Lists.newArrayList(); + if (sa.hasParam("Defined")) { + for (final Card c : AbilityUtils.getDefinedCards(host, sa.getParam("Defined"), sa)) { + for (Trigger t : c.getTriggers()) { + if (t.getMode() == TriggerType.ChaosEnsues) { // also allow current zone for any Defined + //String zones = t.getParam("TriggerZones"); + //t.putParam("TriggerZones", zones + "," + c.getZone().getZoneType().toString()); + EnumSet zones = (EnumSet) t.getActiveZone(); + tweakedTrigs.put(t.getId(), zones); + zones.add(c.getZone().getZoneType()); + t.setActiveZone(zones); + affected.add(c); + game.getTriggerHandler().registerOneTrigger(t); + } + } + } + runParams.put(AbilityKey.Affected, affected); + if (affected.isEmpty()) { // if no Defined has chaos ability, don't trigger non Defined + return; + } + } + + game.getTriggerHandler().runTrigger(TriggerType.ChaosEnsues, runParams,false); + + for (Map.Entry> e : tweakedTrigs.entrySet()) { + for (Card c : affected) { + for (Trigger t : c.getTriggers()) { + if (t.getId() == e.getKey()) { + EnumSet zones = e.getValue(); + t.setActiveZone(zones); + } + } + } + } + } +} diff --git a/forge-game/src/main/java/forge/game/ability/effects/PlaneswalkEffect.java b/forge-game/src/main/java/forge/game/ability/effects/PlaneswalkEffect.java index caac7f2b2c3..84d8827c0b4 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/PlaneswalkEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/PlaneswalkEffect.java @@ -13,8 +13,14 @@ public class PlaneswalkEffect extends SpellAbilityEffect { public void resolve(SpellAbility sa) { Game game = sa.getActivatingPlayer().getGame(); - for (Player p : game.getPlayers()) { - p.leaveCurrentPlane(); + if (game.getActivePlanes() == null) { // not a planechase game, nothing happens + return; + } + + if (!sa.hasParam("DontPlaneswalkAway")) { + for (Player p : game.getPlayers()) { + p.leaveCurrentPlane(); + } } if (sa.hasParam("Defined")) { CardCollectionView destinations = AbilityUtils.getDefinedCards(sa.getHostCard(), sa.getParam("Defined"), sa); diff --git a/forge-game/src/main/java/forge/game/ability/effects/RollDiceEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RollDiceEffect.java index 9dc8daa1b08..428c1f1e620 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RollDiceEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RollDiceEffect.java @@ -68,6 +68,9 @@ public class RollDiceEffect extends SpellAbilityEffect { return rollDiceForPlayer(sa, player, amount, sides, 0, 0, null); } private static int rollDiceForPlayer(SpellAbility sa, Player player, int amount, int sides, int ignore, int modifier, List rollsResult) { + if (amount == 0) { + return 0; + } int advantage = getRollAdvange(player); amount += advantage; int total = 0; diff --git a/forge-game/src/main/java/forge/game/ability/effects/RunChaosEffect.java b/forge-game/src/main/java/forge/game/ability/effects/RunChaosEffect.java index de2784f0418..7bd737e9623 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/RunChaosEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/RunChaosEffect.java @@ -1,12 +1,6 @@ package forge.game.ability.effects; -import java.util.List; -import java.util.Map; - import com.google.common.collect.Lists; - -import forge.game.PlanarDice; -import forge.game.ability.AbilityKey; import forge.game.ability.AbilityUtils; import forge.game.ability.SpellAbilityEffect; import forge.game.card.Card; @@ -16,17 +10,17 @@ import forge.game.trigger.Trigger; import forge.game.trigger.TriggerType; import forge.game.trigger.WrappedAbility; +import java.util.List; + public class RunChaosEffect extends SpellAbilityEffect { @Override public void resolve(SpellAbility sa) { - Map map = AbilityKey.mapFromPlayer(sa.getActivatingPlayer()); - map.put(AbilityKey.Result, PlanarDice.Chaos); List validSA = Lists.newArrayList(); for (final Card c : getTargetCards(sa)) { for (Trigger t : c.getTriggers()) { - if (TriggerType.PlanarDice.equals(t.getMode()) && t.performTest(map)) { + if (t.getMode() == TriggerType.ChaosEnsues) { SpellAbility triggerSA = t.ensureAbility().copy(sa.getActivatingPlayer()); Player decider = sa.getActivatingPlayer(); @@ -44,5 +38,4 @@ public class RunChaosEffect extends SpellAbilityEffect { } sa.getActivatingPlayer().getController().orderAndPlaySimultaneousSa(validSA); } - } diff --git a/forge-game/src/main/java/forge/game/ability/effects/VoteEffect.java b/forge-game/src/main/java/forge/game/ability/effects/VoteEffect.java index 2305418b22a..71256adcc8a 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/VoteEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/VoteEffect.java @@ -6,6 +6,7 @@ import java.util.Collections; import java.util.List; import java.util.Map; +import forge.util.Lang; import org.apache.commons.lang3.StringUtils; import com.google.common.collect.ArrayListMultimap; @@ -35,13 +36,13 @@ public class VoteEffect extends SpellAbilityEffect { @Override protected String getStackDescription(final SpellAbility sa) { final StringBuilder sb = new StringBuilder(); - sb.append(StringUtils.join(getDefinedPlayersOrTargeted(sa), ", ")); - sb.append(" vote "); + sb.append(Lang.joinHomogenous(getDefinedPlayersOrTargeted(sa))).append(" vote "); if (sa.hasParam("VoteType")) { - sb.append(StringUtils.join(sa.getParam("VoteType").split(","), " or ")); + sb.append("for ").append(StringUtils.join(sa.getParam("VoteType").split(","), " or ")); } else if (sa.hasParam("VoteMessage")) { sb.append(sa.getParam("VoteMessage")); } + sb.append("."); return sb.toString(); } diff --git a/forge-game/src/main/java/forge/game/card/CardFactory.java b/forge-game/src/main/java/forge/game/card/CardFactory.java index 4e1cc6a80ee..e4c43590940 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactory.java +++ b/forge-game/src/main/java/forge/game/card/CardFactory.java @@ -350,9 +350,17 @@ public class CardFactory { planesWalkTrigger.setOverridingAbility(AbilityFactory.getAbility(rolledWalk, card)); card.addTrigger(planesWalkTrigger); + String chaosTrig = "Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Static$ True"; + + String rolledChaos = "DB$ ChaosEnsues"; + + Trigger chaosTrigger = TriggerHandler.parseTrigger(chaosTrig, card, true); + chaosTrigger.setOverridingAbility(AbilityFactory.getAbility(rolledChaos, card)); + card.addTrigger(chaosTrigger); + String specialA = "ST$ RollPlanarDice | Cost$ X | SorcerySpeed$ True | Activator$ Player | SpecialAction$ True" + " | ActivationZone$ Command | SpellDescription$ Roll the planar dice. X is equal to the number of " + - "times you have previously taken this action this turn."; + "times you have previously taken this action this turn. | CostDesc$ {X}: "; SpellAbility planarRoll = AbilityFactory.getAbility(specialA, card); planarRoll.setSVar("X", "Count$PlanarDiceSpecialActionThisTurn"); diff --git a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java index 181c4185ffb..2c6744f7231 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java +++ b/forge-game/src/main/java/forge/game/card/CardFactoryUtil.java @@ -815,9 +815,9 @@ public class CardFactoryUtil { inst.addTrigger(trigger); } else if (keyword.equals("Ascend")) { // Ascend trigger only for Permanent - if (card.isPermanent()) { - final String trig = "Mode$ Always | TriggerZones$ Battlefield | Secondary$ True" - + " | Static$ True | Blessing$ False | IsPresent$ Permanent.YouCtrl | PresentCompare$ GE10 " + if (card.isPermanent() || card.isPlane()) { + final String trig = "Mode$ Always | TriggerZones$ " + (card.isPlane() ? "Command" : "Battlefield") + + " | Secondary$ True | Static$ True | Blessing$ False | IsPresent$ Permanent.YouCtrl | PresentCompare$ GE10" + " | TriggerDescription$ Ascend (" + inst.getReminderText() + ")"; final String effect = "DB$ Ascend | Defined$ You"; @@ -1318,8 +1318,8 @@ public class CardFactoryUtil { // Second, create the trigger that runs when the haunted creature dies final StringBuilder sbDies = new StringBuilder(); - sbDies.append("Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | TriggerZones$ Exile |"); - sbDies.append("ValidCard$ Creature.HauntedBy | Execute$ ").append(hauntSVarName); + sbDies.append("Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | TriggerZones$ Exile"); + sbDies.append(" | ValidCard$ Creature.HauntedBy | Execute$ ").append(hauntSVarName); sbDies.append(" | TriggerDescription$ ").append(hauntDescription); final Trigger hauntedDies = TriggerHandler.parseTrigger(sbDies.toString(), card, intrinsic); @@ -1369,7 +1369,7 @@ public class CardFactoryUtil { // First, create trigger that runs when the haunter goes to the graveyard final StringBuilder sbHaunter = new StringBuilder(); sbHaunter.append("Mode$ ChangesZone | Origin$ "); - sbHaunter.append(card.isCreature() ? "Battlefield" : "Stack | ResolvedCard$ True"); + sbHaunter.append(card.isCreature() ? "Battlefield" : "Stack | Fizzle$ False"); sbHaunter.append(" | Destination$ Graveyard | ValidCard$ Card.Self"); sbHaunter.append(" | Secondary$ True | TriggerDescription$ Haunt (").append(inst.getReminderText()).append(")"); 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 b02ad738922..77dc2a7a033 100644 --- a/forge-game/src/main/java/forge/game/player/Player.java +++ b/forge-game/src/main/java/forge/game/player/Player.java @@ -209,6 +209,7 @@ public class Player extends GameEntity implements Comparable { private Map maingameCardsMap = Maps.newHashMap(); private CardCollection currentPlanes = new CardCollection(); + private CardCollection planeswalkedToThisTurn = new CardCollection(); private PlayerStatistics stats = new PlayerStatistics(); private PlayerController controller; @@ -1918,6 +1919,10 @@ public class Player extends GameEntity implements Comparable { completedDungeons.clear(); } + public final List getPlaneswalkedToThisTurn() { + return planeswalkedToThisTurn; + } + public final void altWinBySpellEffect(final String sourceName) { if (cantWin()) { System.out.println("Tried to win, but currently can't."); @@ -2458,6 +2463,7 @@ public class Player extends GameEntity implements Comparable { setNumManaConversion(0); damageReceivedThisTurn.clear(); + planeswalkedToThisTurn.clear(); // set last turn nr if (game.getPhaseHandler().isPlayerTurn(this)) { @@ -2617,7 +2623,7 @@ public class Player extends GameEntity implements Comparable { * Then runs triggers. */ public void planeswalkTo(SpellAbility sa, final CardCollectionView destinations) { - System.out.println(getName() + ": planeswalk to " + destinations.toString()); + System.out.println(getName() + " planeswalks to " + destinations.toString()); currentPlanes.addAll(destinations); game.getView().updatePlanarPlayer(getView()); @@ -2625,8 +2631,9 @@ public class Player extends GameEntity implements Comparable { moveParams.put(AbilityKey.LastStateBattlefield, sa.getLastStateBattlefield()); moveParams.put(AbilityKey.LastStateGraveyard, sa.getLastStateGraveyard()); - for (Card c : currentPlanes) { + for (Card c : destinations) { game.getAction().moveTo(ZoneType.Command, c, sa, moveParams); + planeswalkedToThisTurn.add(c); //getZone(ZoneType.PlanarDeck).remove(c); //getZone(ZoneType.Command).add(c); } @@ -2634,7 +2641,7 @@ public class Player extends GameEntity implements Comparable { game.setActivePlanes(currentPlanes); //Run PlaneswalkedTo triggers here. final Map runParams = AbilityKey.newMap(); - runParams.put(AbilityKey.Cards, currentPlanes); + runParams.put(AbilityKey.Cards, destinations); game.getTriggerHandler().runTrigger(TriggerType.PlaneswalkedTo, runParams, false); view.updateCurrentPlaneName(currentPlanes.toString().replaceAll(" \\(.*","").replace("[","")); } diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerChangesZone.java b/forge-game/src/main/java/forge/game/trigger/TriggerChangesZone.java index 11a27e60e2e..413d2eca648 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerChangesZone.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerChangesZone.java @@ -135,10 +135,14 @@ public class TriggerChangesZone extends Trigger { } } - if (hasParam("ResolvedCard")) { + if (hasParam("Fizzle")) { if (!runParams.containsKey(AbilityKey.Fizzle)) { return false; } + Boolean val = (Boolean) runParams.get(AbilityKey.Fizzle); + if ("True".equals(getParam("Fizzle")) != val) { + return false; + } } // Check number of lands ETB this turn on triggered card's controller diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerChaosEnsues.java b/forge-game/src/main/java/forge/game/trigger/TriggerChaosEnsues.java new file mode 100644 index 00000000000..787acf1650f --- /dev/null +++ b/forge-game/src/main/java/forge/game/trigger/TriggerChaosEnsues.java @@ -0,0 +1,63 @@ +package forge.game.trigger; + +import forge.game.GameObject; +import forge.game.ability.AbilityKey; +import forge.game.card.Card; +import forge.game.spellability.SpellAbility; + +import java.util.Map; + +public class TriggerChaosEnsues extends Trigger { + + /** + *

+ * Constructor for Trigger_ChaosEnsues + *

+ * + * @param params + * a {@link java.util.HashMap} object. + * @param host + * a {@link forge.game.card.Card} object. + * @param intrinsic + * the intrinsic + */ + public TriggerChaosEnsues(final Map params, final Card host, final boolean intrinsic) { + super(params, host, intrinsic); + } + + /* (non-Javadoc) + * @see forge.card.trigger.Trigger#performTest(java.util.Map) + */ + @Override + public boolean performTest(Map runParams) { + if (!matchesValidParam("ValidPlayer", runParams.get(AbilityKey.Player))) { + return false; + } + if (runParams.containsKey(AbilityKey.Affected)) { + final Object o = runParams.get(AbilityKey.Affected); + if (o instanceof GameObject) { + final GameObject c = (GameObject) o; + if (!c.equals(this.getHostCard())) { + return false; + } + } else if (o instanceof Iterable) { + for (Object o2 : (Iterable) o) { + if (!o2.equals(this.getHostCard())) { + return false; + } + } + } + } + return true; + } + + @Override + public void setTriggeringObjects(SpellAbility sa, Map runParams) { + sa.setTriggeringObjectsFrom(runParams, AbilityKey.Player); + } + + @Override + public String getImportantStackObjects(SpellAbility sa) { + return ""; + } +} diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java b/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java index 8a54c840cf0..8098aeab9e3 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java @@ -180,7 +180,7 @@ public class TriggerHandler { return FileSection.parseToMap(trigParse, FileSection.DOLLAR_SIGN_KV_SEPARATOR); } - private void collectTriggerForWaiting() { + public void collectTriggerForWaiting() { for (final TriggerWaiting wt : waitingTriggers) { if (wt.getTriggers() != null) continue; diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerType.java b/forge-game/src/main/java/forge/game/trigger/TriggerType.java index c0ef1b69bff..990af336a5b 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerType.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerType.java @@ -39,6 +39,7 @@ public enum TriggerType { ChangesController(TriggerChangesController.class), ChangesZone(TriggerChangesZone.class), ChangesZoneAll(TriggerChangesZoneAll.class), + ChaosEnsues(TriggerChaosEnsues.class), Clashed(TriggerClashed.class), ClassLevelGained(TriggerClassLevelGained.class), ConjureAll(TriggerConjureAll.class), diff --git a/forge-gui-android/pom.xml b/forge-gui-android/pom.xml index ae03902f122..130b595baae 100644 --- a/forge-gui-android/pom.xml +++ b/forge-gui-android/pom.xml @@ -19,7 +19,7 @@ forge forge - 1.6.56-SNAPSHOT + 1.6.57-SNAPSHOT forge-gui-android diff --git a/forge-gui-desktop/pom.xml b/forge-gui-desktop/pom.xml index ff795ea3f71..f9845274792 100644 --- a/forge-gui-desktop/pom.xml +++ b/forge-gui-desktop/pom.xml @@ -4,7 +4,7 @@ forge forge - 1.6.56-SNAPSHOT + 1.6.57-SNAPSHOT forge-gui-desktop diff --git a/forge-gui-ios/pom.xml b/forge-gui-ios/pom.xml index d4af0a8609d..4afbdde3251 100644 --- a/forge-gui-ios/pom.xml +++ b/forge-gui-ios/pom.xml @@ -12,7 +12,7 @@ forge forge - 1.6.56-SNAPSHOT + 1.6.57-SNAPSHOT forge-gui-ios diff --git a/forge-gui-mobile-dev/pom.xml b/forge-gui-mobile-dev/pom.xml index 3a9338620ed..3141a39cad7 100644 --- a/forge-gui-mobile-dev/pom.xml +++ b/forge-gui-mobile-dev/pom.xml @@ -4,7 +4,7 @@ forge forge - 1.6.56-SNAPSHOT + 1.6.57-SNAPSHOT forge-gui-mobile-dev diff --git a/forge-gui-mobile/pom.xml b/forge-gui-mobile/pom.xml index 4e506c14ca6..1d1dadf1671 100644 --- a/forge-gui-mobile/pom.xml +++ b/forge-gui-mobile/pom.xml @@ -4,7 +4,7 @@ forge forge - 1.6.56-SNAPSHOT + 1.6.57-SNAPSHOT forge-gui-mobile diff --git a/forge-gui-mobile/src/forge/adventure/data/SettingData.java b/forge-gui-mobile/src/forge/adventure/data/SettingData.java index 048e608b8a6..fddfb1b705a 100644 --- a/forge-gui-mobile/src/forge/adventure/data/SettingData.java +++ b/forge-gui-mobile/src/forge/adventure/data/SettingData.java @@ -19,4 +19,5 @@ public class SettingData { public Float rewardCardAdjLandscape; public Float cardTooltipAdjLandscape; public boolean dayNightBG; + public boolean disableWinLose; } diff --git a/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java b/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java index 0b8b3d49a38..2d31b59a7ac 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/DuelScene.java @@ -34,6 +34,7 @@ import forge.player.GamePlayerUtil; import forge.player.PlayerControllerHuman; import forge.screens.FScreen; import forge.screens.LoadingOverlay; +import forge.screens.TransitionScreen; import forge.screens.match.MatchController; import forge.sound.MusicPlaylist; import forge.sound.SoundSystem; @@ -130,18 +131,20 @@ public class DuelScene extends ForgeScene { @Override public void run(Integer result) { if (result == 0) { - afterGameEnd(enemyName, finalWinner, true, true); + afterGameEnd(enemyName, finalWinner); + if (Config.instance().getSettingData().disableWinLose) + exitDuelScene(); } fb.dispose(); } })); } else { - afterGameEnd(enemyName, winner, false, false); + afterGameEnd(enemyName, winner); } } - - void afterGameEnd(String enemyName, boolean winner, boolean showOverlay, boolean alternate) { - Runnable runnable = () -> Gdx.app.postRunnable(()-> { + Runnable endRunnable = null; + void afterGameEnd(String enemyName, boolean winner) { + endRunnable = () -> Gdx.app.postRunnable(()-> { if (GameScene.instance().isNotInWorldMap()) { SoundSystem.instance.pause(); GameHUD.getInstance().playAudio(); @@ -160,14 +163,9 @@ public class DuelScene extends ForgeScene { ((IAfterMatch) last).setWinner(winner); } }); - if (showOverlay) { - FThreads.invokeInEdtNowOrLater(() -> { - matchOverlay = new LoadingOverlay(runnable, true, alternate); - matchOverlay.show(); - }); - } else { - runnable.run(); - } + } + public void exitDuelScene() { + Forge.setTransitionScreen(new TransitionScreen(endRunnable, Forge.takeScreenshot(), false, false)); } void addEffects(RegisteredPlayer player, Array effects) { diff --git a/forge-gui-mobile/src/forge/adventure/scene/SettingsScene.java b/forge-gui-mobile/src/forge/adventure/scene/SettingsScene.java index 02c404b73c4..555992547a7 100644 --- a/forge-gui-mobile/src/forge/adventure/scene/SettingsScene.java +++ b/forge-gui-mobile/src/forge/adventure/scene/SettingsScene.java @@ -17,7 +17,6 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.time.LocalTime; import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Stream; @@ -203,7 +202,6 @@ public class SettingsScene extends UIScene { boolean value = ((CheckBox) actor).isChecked(); Config.instance().getSettingData().fullScreen = value; Config.instance().saveSettings(); - setTargetTime(LocalTime.now().getHour()); //update if (FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_FULLSCREEN_MODE) != value) { FModel.getPreferences().setPref(ForgePreferences.FPref.UI_LANDSCAPE_MODE, value); @@ -223,6 +221,14 @@ public class SettingsScene extends UIScene { } } }); + addSettingField(Forge.getLocalizer().getMessage("lblDisableWinLose"), Config.instance().getSettingData().disableWinLose, new ChangeListener() { + @Override + public void changed(ChangeEvent event, Actor actor) { + boolean value = ((CheckBox) actor).isChecked(); + Config.instance().getSettingData().disableWinLose = value; + Config.instance().saveSettings(); + } + }); addCheckBox(Forge.getLocalizer().getMessage("lblCardName"), ForgePreferences.FPref.UI_OVERLAY_CARD_NAME); addSettingSlider(Forge.getLocalizer().getMessage("cbAdjustMusicVolume"), ForgePreferences.FPref.UI_VOL_MUSIC, 0, 100); addSettingSlider(Forge.getLocalizer().getMessage("cbAdjustSoundsVolume"), ForgePreferences.FPref.UI_VOL_SOUNDS, 0, 100); diff --git a/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java b/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java index e9f4e7cb127..2fc837eac90 100644 --- a/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java +++ b/forge-gui-mobile/src/forge/adventure/stage/GameHUD.java @@ -335,13 +335,17 @@ public class GameHUD extends Stage { unloadAudio(); SoundSystem.instance.resume(); // resume World BGM } + //unequip and reequip abilities + updateAbility(); } - - void updateAbility() { + void clearAbility() { for (TextraButton button : abilityButtonMap) { button.remove(); } abilityButtonMap.clear(); + } + void updateAbility() { + clearAbility(); setAbilityButton(AdventurePlayer.current().getEquippedAbility1()); setAbilityButton(AdventurePlayer.current().getEquippedAbility2()); float x = Forge.isLandscapeMode() ? 426f : 216f; @@ -568,6 +572,14 @@ public class GameHUD extends Stage { } opacity = visible ? 1f : 0.4f; } + void toggleConsole() { + console.toggle(); + if (console.isVisible()) { + clearAbility(); + } else { + updateAbility(); + } + } @Override public boolean keyUp(int keycode) { @@ -582,12 +594,12 @@ public class GameHUD extends Stage { } ui.pressDown(keycode); if (keycode == Input.Keys.F9 || keycode == Input.Keys.F10) { - console.toggle(); + toggleConsole(); return true; } if (keycode == Input.Keys.BACK) { if (console.isVisible()) { - console.toggle(); + toggleConsole(); } } if (console.isVisible()) @@ -699,7 +711,7 @@ public class GameHUD extends Stage { @Override public boolean longPress(Actor actor, float x, float y) { - console.toggle(); + toggleConsole(); return super.longPress(actor, x, y); } } diff --git a/forge-gui-mobile/src/forge/adventure/util/CardUtil.java b/forge-gui-mobile/src/forge/adventure/util/CardUtil.java index 2324f18ac70..a86a2df61d6 100644 --- a/forge-gui-mobile/src/forge/adventure/util/CardUtil.java +++ b/forge-gui-mobile/src/forge/adventure/util/CardUtil.java @@ -350,7 +350,7 @@ public class CardUtil { public static Deck generateDeck(GeneratedDeckData data, CardEdition starterEdition, boolean discourageDuplicates) { - List editionCodes = (starterEdition != null)?Arrays.asList(starterEdition.getCode(), starterEdition.getCode2()):Arrays.asList("JMP", "J22", "DMU","BRO"); + List editionCodes = (starterEdition != null)?Arrays.asList(starterEdition.getCode(), starterEdition.getCode2()):Arrays.asList("JMP", "J22", "DMU", "BRO", "ONE", "MOM"); Deck deck= new Deck(data.name); if(data.mainDeck!=null) { diff --git a/forge-gui-mobile/src/forge/screens/match/MatchController.java b/forge-gui-mobile/src/forge/screens/match/MatchController.java index 1352dd98dfe..acb8c490e6b 100644 --- a/forge-gui-mobile/src/forge/screens/match/MatchController.java +++ b/forge-gui-mobile/src/forge/screens/match/MatchController.java @@ -6,11 +6,11 @@ import java.util.List; import java.util.Map; import forge.adventure.scene.DuelScene; +import forge.adventure.util.Config; import forge.ai.GameState; import forge.deck.Deck; import forge.game.player.Player; import forge.item.IPaperCard; -import forge.screens.TransitionScreen; import forge.util.collect.FCollection; import org.apache.commons.lang3.StringUtils; @@ -312,14 +312,12 @@ public class MatchController extends AbstractGuiGame { @Override public void finishGame() { if (Forge.isMobileAdventureMode) { - Forge.setCursor(null, "0"); - if (DuelScene.instance().hasCallbackExit()) + if (Config.instance().getSettingData().disableWinLose) { + Forge.setCursor(null, "0"); + if (!DuelScene.instance().hasCallbackExit()) + DuelScene.instance().exitDuelScene(); return; - Forge.setTransitionScreen(new TransitionScreen(() -> { - Forge.clearTransitionScreen(); - Forge.clearCurrentScreen(); - }, Forge.takeScreenshot(), false, false)); - return; + } } if (hasLocalPlayers() || getGameView().isMatchOver()) { view.setViewWinLose(new ViewWinLose(getGameView())); diff --git a/forge-gui-mobile/src/forge/screens/match/winlose/AdventureWinLose.java b/forge-gui-mobile/src/forge/screens/match/winlose/AdventureWinLose.java new file mode 100644 index 00000000000..2a3bcaee978 --- /dev/null +++ b/forge-gui-mobile/src/forge/screens/match/winlose/AdventureWinLose.java @@ -0,0 +1,46 @@ +package forge.screens.match.winlose; + +import forge.Forge; +import forge.adventure.scene.DuelScene; +import forge.game.GameView; + +public class AdventureWinLose extends ControlWinLose { + /** + * @param v   ViewWinLose + * @param game + */ + public AdventureWinLose(ViewWinLose v, GameView game) { + super(v, game); + v.getBtnContinue().setVisible(false); + v.getBtnRestart().setVisible(false); + v.getLabelShowBattlefield().setVisible(false); + v.getBtnQuit().setText(Forge.getLocalizer().getMessage("lblBackToAdventure")); + Forge.setCursor(null, "0"); + } + + @Override + public void actionOnContinue() { + //Do Nothing + } + + @Override + public void actionOnRestart() { + //Do Nothing + } + + @Override + public void actionOnQuit() { + getView().hide(); + DuelScene.instance().exitDuelScene(); + } + + @Override + public void saveOptions() { + //Do Nothing + } + + @Override + public void showRewards() { + //Do Nothing + } +} diff --git a/forge-gui-mobile/src/forge/screens/match/winlose/ViewWinLose.java b/forge-gui-mobile/src/forge/screens/match/winlose/ViewWinLose.java index 5d7cc6b1fa8..afd79206f4c 100644 --- a/forge-gui-mobile/src/forge/screens/match/winlose/ViewWinLose.java +++ b/forge-gui-mobile/src/forge/screens/match/winlose/ViewWinLose.java @@ -123,6 +123,9 @@ public class ViewWinLose extends FOverlay implements IWinLoseView { }).build()); lblTitle.setText(composeTitle(game0)); + if (Forge.isMobileAdventureMode) + control = new AdventureWinLose(this, game0); + showGameOutcomeSummary(); showPlayerScores(); control.showRewards(); @@ -152,6 +155,10 @@ public class ViewWinLose extends FOverlay implements IWinLoseView { return this.btnQuit; } + public FLabel getLabelShowBattlefield() { + return this.btnShowBattlefield; + } + private void showGameOutcomeSummary() { for (GameLogEntry o : game.getGameLog().getLogEntriesExact(GameLogEntryType.GAME_OUTCOME)) { pnlOutcomes.add(new FLabel.Builder().text(o.message).font(FSkinFont.get(14)).build()); @@ -191,12 +198,20 @@ public class ViewWinLose extends FOverlay implements IWinLoseView { y += h + dy; h = height / 12; - btnContinue.setBounds(x, y, w, h); - y += h + dy; - btnRestart.setBounds(x, y, w, h); - y += h + dy; - btnQuit.setBounds(x, y, w, h); - y += h + dy; + if (Forge.isMobileAdventureMode) { + btnQuit.setBounds(x, y, w, h); + y += h + dy; + btnContinue.setVisible(false); + btnRestart.setVisible(false); + } else { + btnContinue.setBounds(x, y, w, h); + y += h + dy; + btnRestart.setBounds(x, y, w, h); + y += h + dy; + btnQuit.setBounds(x, y, w, h); + y += h + dy; + } + h = lblLog.getAutoSizeBounds().height + dy; lblLog.setBounds(x, y, w, h); diff --git a/forge-gui/pom.xml b/forge-gui/pom.xml index b39765363a8..46fd77e56d2 100644 --- a/forge-gui/pom.xml +++ b/forge-gui/pom.xml @@ -4,7 +4,7 @@ forge forge - 1.6.56-SNAPSHOT + 1.6.57-SNAPSHOT forge-gui diff --git a/forge-gui/res/adventure/Shandalar/config.json b/forge-gui/res/adventure/Shandalar/config.json index 75c7e42f6f7..aa5fac61fdf 100644 --- a/forge-gui/res/adventure/Shandalar/config.json +++ b/forge-gui/res/adventure/Shandalar/config.json @@ -84,8 +84,8 @@ "pileDecks": { "W":"decks/starter/pile_white_e.json", "B":"decks/starter/pile_black_e.json", - "U":"decks/starter/pile_blue_e.json", - "R":"decks/starter/pile_red_e.json", + "U":"decks/starter/pile_blue_e.json", + "R":"decks/starter/pile_red_e.json", "G":"decks/starter/pile_green_e.json" }, "startItems": [ @@ -122,8 +122,8 @@ "pileDecks": { "W":"decks/starter/pile_white_n.json", "B":"decks/starter/pile_black_n.json", - "U":"decks/starter/pile_blue_n.json", - "R":"decks/starter/pile_red_n.json", + "U":"decks/starter/pile_blue_n.json", + "R":"decks/starter/pile_red_n.json", "G":"decks/starter/pile_green_n.json" }, "startItems": [ @@ -191,8 +191,8 @@ "pileDecks": { "W":"decks/starter/pile_white_h.json", "B":"decks/starter/pile_black_h.json", - "U":"decks/starter/pile_blue_h.json", - "R":"decks/starter/pile_red_h.json", + "U":"decks/starter/pile_blue_h.json", + "R":"decks/starter/pile_red_h.json", "G":"decks/starter/pile_green_h.json" } } @@ -212,7 +212,7 @@ "Brother's War", "Jumpstart 22", "Phyrexia: ONE", - "March o.t Machine", + "MOM", "(All)" ] } diff --git a/forge-gui/res/adventure/Shandalar/decks/copperhostbrutalizer.dck b/forge-gui/res/adventure/Shandalar/decks/copperhostbrutalizer.dck new file mode 100644 index 00000000000..5a4ac2f544b --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/decks/copperhostbrutalizer.dck @@ -0,0 +1,43 @@ +[metadata] +Name=copperhostbrutalizer +[Avatar] + +[Main] +2 Blighted Burgeoning|MOM|1 +1 Bloated Contaminator|ONE|1 +1 Bloated Contaminator|ONE|2 +1 Bloated Processor|MOM|1 +1 Bloated Processor|MOM|2 +2 Converter Beast|MOM|1 +2 Drown in Ichor|ONE|1 +4 Elvish Vatkeeper|MOM|1 +2 Expand the Sphere|ONE|1 +1 Forest|ONE|1 +5 Forest|ONE|2 +6 Forest|ONE|3 +2 Gift of Compleation|MOM|1 +2 Glistening Dawn|MOM|2 +1 Grafted Butcher|MOM|1 +1 Grafted Butcher|MOM|2 +2 Gulping Scraptrap|ONE|1 +2 Ichor Drinker|MOM|1 +4 Jungle Hollow|MOM|1 +3 Swamp|ONE|1 +1 Swamp|ONE|2 +3 Swamp|ONE|3 +1 Swamp|ONE|4 +2 Tangled Skyline|MOM|1 +2 Traumatic Revelation|MOM|1 +2 Vat Emergence|ONE|1 +2 Vat of Rebirth|ONE|1 +2 Venomous Brutalizer|ONE|1 +[Sideboard] + +[Planes] + +[Schemes] + +[Conspiracy] + +[Dungeon] + diff --git a/forge-gui/res/adventure/Shandalar/decks/drossgrimnarch.dck b/forge-gui/res/adventure/Shandalar/decks/drossgrimnarch.dck new file mode 100644 index 00000000000..41b2062b94f --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/decks/drossgrimnarch.dck @@ -0,0 +1,47 @@ +[metadata] +Name=drossgrimnarch +[Avatar] + +[Main] +2 Annihilating Glare|ONE|1 +2 Bilious Skulldweller|ONE|1 +2 Blightwing Whelp|YONE|1 +2 Chittering Skitterling|ONE|1 +2 Darkslick Shores|ONE|1 +4 Dismal Backwater|MOM|1 +2 Distorted Curiosity|ONE|1 +2 Drown in Ichor|ONE|1 +1 Experimental Augury|ONE|1 +1 Experimental Augury|ONE|2 +1 Grafted Butcher|MOM|1 +1 Grafted Butcher|MOM|2 +2 Grim Affliction|NPH|1 +2 Gulping Scraptrap|ONE|1 +2 Infectious Inquiry|ONE|1 +2 Island|MOM|1 +3 Island|MOM|2 +1 Island|MOM|3 +1 Mercurial Spelldancer|ONE|1 +1 Mercurial Spelldancer|ONE|2 +1 Myr Convert|ONE|1 +1 Myr Convert|ONE|2 +2 Necrogen Communion|ONE|1 +2 Pestilent Syphoner|ONE|1 +2 Quicksilver Servitor|YONE|1 +2 Sheoldred's Headcleaver|ONE|1 +5 Swamp|MOM|1 +1 Swamp|MOM|2 +4 Swamp|MOM|3 +1 Thrummingbird|ONE|1 +1 Thrummingbird|ONE|2 +2 Viral Drake|NPH|1 +[Sideboard] + +[Planes] + +[Schemes] + +[Conspiracy] + +[Dungeon] + diff --git a/forge-gui/res/adventure/Shandalar/decks/furnacetormentor.dck b/forge-gui/res/adventure/Shandalar/decks/furnacetormentor.dck new file mode 100644 index 00000000000..e003da28e43 --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/decks/furnacetormentor.dck @@ -0,0 +1,45 @@ +[metadata] +Name=furnacetormentor +[Avatar] + +[Main] +1 All Will Be One|ONE|1 +1 All Will Be One|ONE|2 +2 Armored Scrapgorger|ONE|1 +2 Axiom Engraver|ONE|1 +2 Blighted Burgeoning|MOM|1 +2 Churning Reservoir|ONE|1 +2 Cinderslash Ravager|ONE|1 +2 Converter Beast|MOM|1 +2 Copperline Gorge|ONE|1 +2 Copperline Gorge|ONE|2 +2 Evolving Adaptive|ONE|1 +2 Expand the Sphere|ONE|1 +2 Exuberant Fuseling|ONE|1 +1 Forest|ONE|1 +1 Forest|ONE|2 +1 Forest|ONE|3 +4 Forest|ONE|4 +4 Magmatic Sprinter|ONE|1 +3 Mountain|ONE|1 +3 Mountain|ONE|2 +2 Mountain|ONE|3 +5 Mountain|ONE|4 +2 Nahiri's Warcrafting|MOM|1 +2 Thrill of Possibility|ONE|1 +1 Urabrask's Anointer|ONE|1 +1 Urabrask's Anointer|ONE|2 +2 Urabrask's Forge|ONE|1 +2 Urabrask's Forge|ONE|2 +1 Vindictive Flamestoker|ONE|1 +1 Vindictive Flamestoker|ONE|2 +[Sideboard] + +[Planes] + +[Schemes] + +[Conspiracy] + +[Dungeon] + diff --git a/forge-gui/res/adventure/Shandalar/decks/gitaxianscientist.dck b/forge-gui/res/adventure/Shandalar/decks/gitaxianscientist.dck new file mode 100644 index 00000000000..781ccb8ce02 --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/decks/gitaxianscientist.dck @@ -0,0 +1,43 @@ +[metadata] +Name=gitaxianscientist +[Avatar] + +[Main] +2 Blighted Agent|NPH|1 +2 Bloated Contaminator|ONE|2 +2 Contagious Vorrac|ONE|1 +4 Distorted Curiosity|ONE|1 +1 Experimental Augury|ONE|1 +1 Experimental Augury|ONE|2 +2 Forest|ONE|1 +2 Forest|ONE|2 +3 Forest|ONE|3 +1 Forest|ONE|4 +2 Glistener Seer|ONE|1 +2 Ichorspit Basilisk|ONE|1 +2 Infectious Bite|ONE|1 +6 Island|ONE|1 +3 Island|ONE|2 +2 Island|ONE|3 +3 Island|ONE|4 +1 Mindsplice Apparatus|ONE|1 +1 Mindsplice Apparatus|ONE|2 +1 Myr Convert|ONE|1 +1 Myr Convert|ONE|2 +2 Serum Snare|ONE|1 +2 Tainted Observer|ONE|1 +2 The Seedcore|ONE|2 +2 Thrummingbird|ONE|1 +2 Thrummingbird|ONE|2 +4 Viral Drake|NPH|1 +2 Vivisurgeon's Insight|ONE|1 +[Sideboard] + +[Planes] + +[Schemes] + +[Conspiracy] + +[Dungeon] + diff --git a/forge-gui/res/adventure/Shandalar/decks/phyrexianangel.dck b/forge-gui/res/adventure/Shandalar/decks/phyrexianangel.dck new file mode 100644 index 00000000000..fefbfe3fb6f --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/decks/phyrexianangel.dck @@ -0,0 +1,45 @@ +[metadata] +Name=phyrexianangel +[Avatar] + +[Main] +2 Apostle of Invasion|ONE|1 +2 Bloated Contaminator|ONE|1 +2 Blossoming Sands|MOM|1 +2 Charge of the Mites|ONE|1 +4 Crawling Chorus|ONE|1 +2 Duelist of Deep Faith|ONE|1 +2 Flensing Raptor|ONE|1 +3 Forest|ONE|3 +3 Forest|ONE|4 +2 Infectious Bite|ONE|1 +2 Infested Fleshcutter|ONE|1 +2 Mite Overseer|ONE|2 +1 Myr Convert|ONE|1 +1 Myr Convert|ONE|2 +2 Norn's Wellspring|ONE|1 +1 Ossification|ONE|1 +1 Ossification|ONE|2 +2 Phyrexia's Core|NPH|1 +2 Plague Nurse|ONE|1 +3 Plains|ONE|1 +2 Plains|ONE|2 +1 Plains|ONE|3 +4 Plains|ONE|4 +2 Razorverge Thicket|ONE|2 +1 Sinew Dancer|ONE|1 +1 Sinew Dancer|ONE|2 +2 Slaughter Singer|ONE|1 +2 Slaughter Singer|ONE|2 +2 The Seedcore|ONE|1 +2 Venerated Rotpriest|ONE|1 +[Sideboard] + +[Planes] + +[Schemes] + +[Conspiracy] + +[Dungeon] + diff --git a/forge-gui/res/adventure/Shandalar/decks/phyrexianduelist.json b/forge-gui/res/adventure/Shandalar/decks/phyrexianduelist.json index eca588ea0ae..222826c04f0 100644 --- a/forge-gui/res/adventure/Shandalar/decks/phyrexianduelist.json +++ b/forge-gui/res/adventure/Shandalar/decks/phyrexianduelist.json @@ -3,7 +3,7 @@ "template": { "count":60, - "colors":["White", "Black"], + "colors":["White"], "tribe":"Phyrexian", "tribeCards":1.0, "tribeSynergyCards":0.5, diff --git a/forge-gui/res/adventure/Shandalar/maps/map/main_story/forest_capital.tmx b/forge-gui/res/adventure/Shandalar/maps/map/main_story/forest_capital.tmx index ecbbff4557c..7b8b0ec26f8 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/main_story/forest_capital.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/main_story/forest_capital.tmx @@ -151,6 +151,7 @@ "Challenger 20", "Challenger 21", "Challenger 22", + "Copper Host Infector", "Dino", "Eldraine Faerie", "Elf", diff --git a/forge-gui/res/adventure/Shandalar/maps/map/main_story/island_capital.tmx b/forge-gui/res/adventure/Shandalar/maps/map/main_story/island_capital.tmx index 938ac91d906..2d41597ecab 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/main_story/island_capital.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/main_story/island_capital.tmx @@ -137,6 +137,7 @@ "Challenger 22", "Djinn", "Elemental", + "Gitaxian Underling", "Merfolk", "Merfolk Avatar", "Merfolk Fighter", diff --git a/forge-gui/res/adventure/Shandalar/maps/map/main_story/mountain_capital.tmx b/forge-gui/res/adventure/Shandalar/maps/map/main_story/mountain_capital.tmx index 7484d64f9f2..b8b51a39da2 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/main_story/mountain_capital.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/main_story/mountain_capital.tmx @@ -136,6 +136,7 @@ "Efreet", "Fire Elemental", "Flame Elemental", + "Furnace Goblin", "Goblin", "Goblin Chief", "Goblin Warrior", diff --git a/forge-gui/res/adventure/Shandalar/maps/map/main_story/plains_capital.tmx b/forge-gui/res/adventure/Shandalar/maps/map/main_story/plains_capital.tmx index 32c421d6046..34ffc2a88ef 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/main_story/plains_capital.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/main_story/plains_capital.tmx @@ -145,6 +145,7 @@ "Human guard", "Knight", "Monk", + "Orthodoxy Duelist", "White Dwarf", "White Wiz1", "White Wiz2", diff --git a/forge-gui/res/adventure/Shandalar/maps/map/main_story/swamp_capital.tmx b/forge-gui/res/adventure/Shandalar/maps/map/main_story/swamp_capital.tmx index cf3faf42af4..f3594ff88b4 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/main_story/swamp_capital.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/main_story/swamp_capital.tmx @@ -67,6 +67,7 @@ "Dark Knight", "Death Knight", "Demon", + "Dross Gladiator", "Ghoul", "Ghost", "Harpy", diff --git a/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_b1.tmx b/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_b1.tmx index b7f548e6be7..71cb5a5d5a8 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_b1.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_b1.tmx @@ -1,5 +1,5 @@ - + @@ -13,7 +13,7 @@ - eJy1lVEOhCAMRP01epYeYw9mun94H4+3IbFhtrYKFkgaIAiPMgNuyzRtFfGZ/aiZ/zYSldjpvz+KeayFx2eN7Tw+istnbkzXPfTm4nqoZ+Za+vbiW1zR2vJa/j7iM2vfieriS4Xf6nmPy6BvUnrfRYQrdwf99MTnDtyavEZwUT+dLz/kHeXqs9Uh49pXLX7GIncW3ym9D2xH7nEuUgvX83RSeUaYwpX3wdJO96Nc69y9f9EInsX1zrd1zR/ubyqt + eJy1lVEOhCAMRP3duGfhGB7MdP/Y++zxDIkTx24rCJVkAgTD67SA6zxNa0XLq021fXqU06FvOs85tkjm733wZO95XNbBjubK7k3SfwzR+WYfrGywisr3EWyLi1pb8YxywfPO1ZU+6cy/E4fHFapvVvW+0ggXd4fPU40vAdwWX09wuX7ar1R8j3J1brWwPnKuuOHO8jul4+CxFXerSkMPrnems+Gzlwku3gerdnoObq9XK+/evyjCZwvXy+/dPTf2kSWe @@ -26,7 +26,7 @@ - eJzbwcPAsIMI3K6HGxOjXwYNE6OnD2g2PjCBCLtH7SUOT9eD4GlQN8zQQ4jRKn6R01Ub1N4OEtMZLcIZHaC7iV72TtDD5NPDXmzuGGr2TkfCIIDMxxau9PAvuj3z0NxJy3IDnU+v8goEZujhLkdoaS++8pIW9uLzJ6X2wsoeZAATI6deAABIX/aO + eJzbwcPAsIMAbtNjYGjHgzv0CJshg4YJqQfhPqC5+MCEUXupYu80oLnToXgd1A0bkMRm0Mhe5HQ1D2rvAhLTGS3CGR3cxOIOetg7QQ+TTw97sbljKNl7CCntToe6AZm/DEu40sO/6PZcRHPnDDrZi60coaW9G/RwlyO0tBdfeUkLe88RUV6SY+8dpLIHGcDEbpNRPgMAC9v4YQ== @@ -79,25 +79,25 @@ ] - + [ { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 10, "rarity": [ "Common" ] "colors": [ "blue" ] }, { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 3, "rarity": [ "Uncommon" ] "colors": [ "blue" ] }, { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 1, "rarity": [ "Rare", "Mythic Rare" ] @@ -107,6 +107,7 @@ + diff --git a/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_black1.tmx b/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_black1.tmx index 94a51babcd4..1b6b1ec61ec 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_black1.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_black1.tmx @@ -58,21 +58,21 @@ [ { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 10, "rarity": [ "Common" ] "colors": [ "black" ] }, { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 3, "rarity": [ "Uncommon" ] "colors": [ "black" ] }, { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 1, "rarity": [ "Rare", "Mythic Rare" ] diff --git a/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_g1.tmx b/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_g1.tmx index 86ca6abef7d..887d5326a30 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_g1.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_g1.tmx @@ -1,5 +1,5 @@ - + @@ -49,21 +49,21 @@ [ { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 10, "rarity": [ "Common" ] "colors": [ "green" ] }, { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 3, "rarity": [ "Uncommon" ] "colors": [ "green" ] }, { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 1, "rarity": [ "Rare", "Mythic Rare" ] @@ -101,6 +101,7 @@ + diff --git a/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_r1.tmx b/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_r1.tmx index e6f1ad70970..17bb536325f 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_r1.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_r1.tmx @@ -46,7 +46,6 @@ - @@ -99,21 +98,21 @@ [ { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 10, "rarity": [ "Common" ] "colors": [ "red" ] }, { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 3, "rarity": [ "Uncommon" ] "colors": [ "red" ] }, { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 1, "rarity": [ "Rare", "Mythic Rare" ] diff --git a/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_w1.tmx b/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_w1.tmx index 6a124f83a5c..f98f3b40ed4 100644 --- a/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_w1.tmx +++ b/forge-gui/res/adventure/Shandalar/maps/map/phyrexian_w1.tmx @@ -1,5 +1,5 @@ - + @@ -64,21 +64,21 @@ [ { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 10, "rarity": [ "Common" ] "colors": [ "white" ] }, { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 3, "rarity": [ "Uncommon" ] "colors": [ "white" ] }, { - "editions": [ "ONE" ], + "editions": [ "NPH","ONE","MOM" ], "type": "card", "count": 1, "rarity": [ "Rare", "Mythic Rare" ] @@ -88,6 +88,7 @@ + diff --git a/forge-gui/res/adventure/Shandalar/maps/tileset/GitaxianTilesheet.png b/forge-gui/res/adventure/Shandalar/maps/tileset/GitaxianTilesheet.png index c761bcdc52c..dd29c9526e9 100644 Binary files a/forge-gui/res/adventure/Shandalar/maps/tileset/GitaxianTilesheet.png and b/forge-gui/res/adventure/Shandalar/maps/tileset/GitaxianTilesheet.png differ diff --git a/forge-gui/res/adventure/Shandalar/sprites/heroes/avatar.atlas b/forge-gui/res/adventure/Shandalar/sprites/heroes/avatar.atlas index 98a0d34f9e0..31dbe1d4fa9 100644 --- a/forge-gui/res/adventure/Shandalar/sprites/heroes/avatar.atlas +++ b/forge-gui/res/adventure/Shandalar/sprites/heroes/avatar.atlas @@ -602,4 +602,64 @@ Werewolf_f size: 16, 16 Werewolf_f size: 16, 16 - xy: 144, 304 \ No newline at end of file + xy: 144, 304 +Leonin_m + xy: 0, 320 + size: 16, 16 +Leonin_m + xy: 16, 320 + size: 16, 16 +Leonin_m + xy: 32, 320 + size: 16, 16 +Leonin_m + xy: 48, 320 + size: 16, 16 +Leonin_m + xy: 64, 320 + size: 16, 16 +Leonin_m + xy: 80, 320 + size: 16, 16 +Leonin_m + xy: 96, 320 + size: 16, 16 +Leonin_m + xy: 112, 320 + size: 16, 16 +Leonin_m + xy: 128, 320 + size: 16, 16 +Leonin_m + xy: 144, 320 + size: 16, 16 +Leonin_f + xy: 0, 336 + size: 16, 16 +Leonin_f + xy: 16, 336 + size: 16, 16 +Leonin_f + xy: 32, 336 + size: 16, 16 +Leonin_f + xy: 48, 336 + size: 16, 16 +Leonin_f + xy: 64, 336 + size: 16, 16 +Leonin_f + xy: 80, 336 + size: 16, 16 +Leonin_f + xy: 96, 336 + size: 16, 16 +Leonin_f + xy: 112, 336 + size: 16, 16 +Leonin_f + xy: 128, 336 + size: 16, 16 +Leonin_f + size: 16, 16 + xy: 144, 336 \ No newline at end of file diff --git a/forge-gui/res/adventure/Shandalar/sprites/heroes/avatar.png b/forge-gui/res/adventure/Shandalar/sprites/heroes/avatar.png index 0af59e078d2..224d0baa5b5 100644 Binary files a/forge-gui/res/adventure/Shandalar/sprites/heroes/avatar.png and b/forge-gui/res/adventure/Shandalar/sprites/heroes/avatar.png differ diff --git a/forge-gui/res/adventure/Shandalar/sprites/heroes/leonin_f.atlas b/forge-gui/res/adventure/Shandalar/sprites/heroes/leonin_f.atlas new file mode 100644 index 00000000000..cddaed27111 --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/sprites/heroes/leonin_f.atlas @@ -0,0 +1,485 @@ +leonin_f.png +size: 64,96 +format: RGBA8888 +filter: Nearest,Nearest +repeat: none +IdleRight + xy: 0, 0 + size: 16, 16 +IdleRight + xy: 16, 0 + size: 16, 16 +IdleRight + xy: 32, 0 + size: 16, 16 +IdleRight + xy: 48, 0 + size: 16, 16 +IdleRightDown + xy: 64, 0 + size: 16, 16 +IdleRightDown + xy: 80, 0 + size: 16, 16 +IdleRightDown + xy: 96, 0 + size: 16, 16 +IdleRightDown + xy: 112, 0 + size: 16, 16 +IdleDown + xy: 128, 0 + size: 16, 16 +IdleDown + xy: 144, 0 + size: 16, 16 +IdleDown + xy: 160, 0 + size: 16, 16 +IdleDown + xy: 176, 0 + size: 16, 16 +IdleLeftDown + xy: 192, 0 + size: 16, 16 +IdleLeftDown + xy: 208, 0 + size: 16, 16 +IdleLeftDown + xy: 224, 0 + size: 16, 16 +IdleLeftDown + xy: 240, 0 + size: 16, 16 +IdleLeft + xy: 256, 0 + size: 16, 16 +IdleLeft + xy: 272, 0 + size: 16, 16 +IdleLeft + xy: 288, 0 + size: 16, 16 +IdleLeft + xy: 304, 0 + size: 16, 16 +IdleLeftUp + xy: 320, 0 + size: 16, 16 +IdleLeftUp + xy: 336, 0 + size: 16, 16 +IdleLeftUp + xy: 352, 0 + size: 16, 16 +IdleLeftUp + xy: 368, 0 + size: 16, 16 +IdleUp + xy: 384, 0 + size: 16, 16 +IdleUp + xy: 400, 0 + size: 16, 16 +IdleUp + xy: 416, 0 + size: 16, 16 +IdleUp + xy: 432, 0 + size: 16, 16 +IdleRightUp + xy: 448, 0 + size: 16, 16 +IdleRightUp + xy: 464, 0 + size: 16, 16 +IdleRightUp + xy: 480, 0 + size: 16, 16 +IdleRightUp + xy: 496, 0 + size: 16, 16 +WalkRight + xy: 0, 16 + size: 16, 16 +WalkRight + xy: 16, 16 + size: 16, 16 +WalkRight + xy: 32, 16 + size: 16, 16 +WalkRight + xy: 48, 16 + size: 16, 16 +WalkRightDown + xy: 64, 16 + size: 16, 16 +WalkRightDown + xy: 80, 16 + size: 16, 16 +WalkRightDown + xy: 96, 16 + size: 16, 16 +WalkRightDown + xy: 112, 16 + size: 16, 16 +WalkDown + xy: 128, 16 + size: 16, 16 +WalkDown + xy: 144, 16 + size: 16, 16 +WalkDown + xy: 160, 16 + size: 16, 16 +WalkDown + xy: 176, 16 + size: 16, 16 +WalkLeftDown + xy: 192, 16 + size: 16, 16 +WalkLeftDown + xy: 208, 16 + size: 16, 16 +WalkLeftDown + xy: 224, 16 + size: 16, 16 +WalkLeftDown + xy: 240, 16 + size: 16, 16 +WalkLeft + xy: 256, 16 + size: 16, 16 +WalkLeft + xy: 272, 16 + size: 16, 16 +WalkLeft + xy: 288, 16 + size: 16, 16 +WalkLeft + xy: 304, 16 + size: 16, 16 +WalkLeftUp + xy: 320, 16 + size: 16, 16 +WalkLeftUp + xy: 336, 16 + size: 16, 16 +WalkLeftUp + xy: 352, 16 + size: 16, 16 +WalkLeftUp + xy: 368, 16 + size: 16, 16 +WalkUp + xy: 384, 16 + size: 16, 16 +WalkUp + xy: 400, 16 + size: 16, 16 +WalkUp + xy: 416, 16 + size: 16, 16 +WalkUp + xy: 432, 16 + size: 16, 16 +WalkRightUp + xy: 448, 16 + size: 16, 16 +WalkRightUp + xy: 464, 16 + size: 16, 16 +WalkRightUp + xy: 480, 16 + size: 16, 16 +WalkRightUp + xy: 496, 16 + size: 16, 16 +AttackRight + xy: 0, 32 + size: 16, 16 +AttackRight + xy: 16, 32 + size: 16, 16 +AttackRight + xy: 32, 32 + size: 16, 16 +AttackRight + xy: 48, 32 + size: 16, 16 +AttackRightDown + xy: 64, 32 + size: 16, 16 +AttackRightDown + xy: 80, 32 + size: 16, 16 +AttackRightDown + xy: 96, 32 + size: 16, 16 +AttackRightDown + xy: 112, 32 + size: 16, 16 +AttackDown + xy: 128, 32 + size: 16, 16 +AttackDown + xy: 144, 32 + size: 16, 16 +AttackDown + xy: 160, 32 + size: 16, 16 +AttackDown + xy: 176, 32 + size: 16, 16 +AttackLeftDown + xy: 192, 32 + size: 16, 16 +AttackLeftDown + xy: 208, 32 + size: 16, 16 +AttackLeftDown + xy: 224, 32 + size: 16, 16 +AttackLeftDown + xy: 240, 32 + size: 16, 16 +AttackLeft + xy: 256, 32 + size: 16, 16 +AttackLeft + xy: 272, 32 + size: 16, 16 +AttackLeft + xy: 288, 32 + size: 16, 16 +AttackLeft + xy: 304, 32 + size: 16, 16 +AttackLeftUp + xy: 320, 32 + size: 16, 16 +AttackLeftUp + xy: 336, 32 + size: 16, 16 +AttackLeftUp + xy: 352, 32 + size: 16, 16 +AttackLeftUp + xy: 368, 32 + size: 16, 16 +AttackUp + xy: 384, 32 + size: 16, 16 +AttackUp + xy: 400, 32 + size: 16, 16 +AttackUp + xy: 416, 32 + size: 16, 16 +AttackUp + xy: 432, 32 + size: 16, 16 +AttackRightUp + xy: 448, 32 + size: 16, 16 +AttackRightUp + xy: 464, 32 + size: 16, 16 +AttackRightUp + xy: 480, 32 + size: 16, 16 +AttackRightUp + xy: 496, 32 + size: 16, 16 +HitRight + xy: 0, 48 + size: 16, 16 +HitRight + xy: 16, 48 + size: 16, 16 +HitRight + xy: 32, 48 + size: 16, 16 +HitRight + xy: 48, 48 + size: 16, 16 +HitRightDown + xy: 64, 48 + size: 16, 16 +HitRightDown + xy: 80, 48 + size: 16, 16 +HitRightDown + xy: 96, 48 + size: 16, 16 +HitRightDown + xy: 112, 48 + size: 16, 16 +HitDown + xy: 128, 48 + size: 16, 16 +HitDown + xy: 144, 48 + size: 16, 16 +HitDown + xy: 160, 48 + size: 16, 16 +HitDown + xy: 176, 48 + size: 16, 16 +HitLeftDown + xy: 192, 48 + size: 16, 16 +HitLeftDown + xy: 208, 48 + size: 16, 16 +HitLeftDown + xy: 224, 48 + size: 16, 16 +HitLeftDown + xy: 240, 48 + size: 16, 16 +HitLeft + xy: 256, 48 + size: 16, 16 +HitLeft + xy: 272, 48 + size: 16, 16 +HitLeft + xy: 288, 48 + size: 16, 16 +HitLeft + xy: 304, 48 + size: 16, 16 +HitLeftUp + xy: 320, 48 + size: 16, 16 +HitLeftUp + xy: 336, 48 + size: 16, 16 +HitLeftUp + xy: 352, 48 + size: 16, 16 +HitLeftUp + xy: 368, 48 + size: 16, 16 +HitUp + xy: 384, 48 + size: 16, 16 +HitUp + xy: 400, 48 + size: 16, 16 +HitUp + xy: 416, 48 + size: 16, 16 +HitUp + xy: 432, 48 + size: 16, 16 +HitRightUp + xy: 448, 48 + size: 16, 16 +HitRightUp + xy: 464, 48 + size: 16, 16 +HitRightUp + xy: 480, 48 + size: 16, 16 +HitRightUp + xy: 496, 48 + size: 16, 16 +DeathRight + xy: 0, 64 + size: 16, 16 +DeathRight + xy: 16, 64 + size: 16, 16 +DeathRight + xy: 32, 64 + size: 16, 16 +DeathRight + xy: 48, 64 + size: 16, 16 +DeathRightDown + xy: 64, 64 + size: 16, 16 +DeathRightDown + xy: 80, 64 + size: 16, 16 +DeathRightDown + xy: 96, 64 + size: 16, 16 +DeathRightDown + xy: 112, 64 + size: 16, 16 +DeathDown + xy: 128, 64 + size: 16, 16 +DeathDown + xy: 144, 64 + size: 16, 16 +DeathDown + xy: 160, 64 + size: 16, 16 +DeathDown + xy: 176, 64 + size: 16, 16 +DeathLeftDown + xy: 192, 64 + size: 16, 16 +DeathLeftDown + xy: 208, 64 + size: 16, 16 +DeathLeftDown + xy: 224, 64 + size: 16, 16 +DeathLeftDown + xy: 240, 64 + size: 16, 16 +DeathLeft + xy: 256, 64 + size: 16, 16 +DeathLeft + xy: 272, 64 + size: 16, 16 +DeathLeft + xy: 288, 64 + size: 16, 16 +DeathLeft + xy: 304, 64 + size: 16, 16 +DeathLeftUp + xy: 320, 64 + size: 16, 16 +DeathLeftUp + xy: 336, 64 + size: 16, 16 +DeathLeftUp + xy: 352, 64 + size: 16, 16 +DeathLeftUp + xy: 368, 64 + size: 16, 16 +DeathUp + xy: 384, 64 + size: 16, 16 +DeathUp + xy: 400, 64 + size: 16, 16 +DeathUp + xy: 416, 64 + size: 16, 16 +DeathUp + xy: 432, 64 + size: 16, 16 +DeathRightUp + xy: 448, 64 + size: 16, 16 +DeathRightUp + xy: 464, 64 + size: 16, 16 +DeathRightUp + xy: 480, 64 + size: 16, 16 +DeathRightUp + xy: 496, 64 + size: 16, 16 \ No newline at end of file diff --git a/forge-gui/res/adventure/Shandalar/sprites/heroes/leonin_f.png b/forge-gui/res/adventure/Shandalar/sprites/heroes/leonin_f.png new file mode 100644 index 00000000000..e44780fa74c Binary files /dev/null and b/forge-gui/res/adventure/Shandalar/sprites/heroes/leonin_f.png differ diff --git a/forge-gui/res/adventure/Shandalar/sprites/heroes/leonin_m.atlas b/forge-gui/res/adventure/Shandalar/sprites/heroes/leonin_m.atlas new file mode 100644 index 00000000000..9b20c089895 --- /dev/null +++ b/forge-gui/res/adventure/Shandalar/sprites/heroes/leonin_m.atlas @@ -0,0 +1,485 @@ +leonin_m.png +size: 64,96 +format: RGBA8888 +filter: Nearest,Nearest +repeat: none +IdleRight + xy: 0, 0 + size: 16, 16 +IdleRight + xy: 16, 0 + size: 16, 16 +IdleRight + xy: 32, 0 + size: 16, 16 +IdleRight + xy: 48, 0 + size: 16, 16 +IdleRightDown + xy: 64, 0 + size: 16, 16 +IdleRightDown + xy: 80, 0 + size: 16, 16 +IdleRightDown + xy: 96, 0 + size: 16, 16 +IdleRightDown + xy: 112, 0 + size: 16, 16 +IdleDown + xy: 128, 0 + size: 16, 16 +IdleDown + xy: 144, 0 + size: 16, 16 +IdleDown + xy: 160, 0 + size: 16, 16 +IdleDown + xy: 176, 0 + size: 16, 16 +IdleLeftDown + xy: 192, 0 + size: 16, 16 +IdleLeftDown + xy: 208, 0 + size: 16, 16 +IdleLeftDown + xy: 224, 0 + size: 16, 16 +IdleLeftDown + xy: 240, 0 + size: 16, 16 +IdleLeft + xy: 256, 0 + size: 16, 16 +IdleLeft + xy: 272, 0 + size: 16, 16 +IdleLeft + xy: 288, 0 + size: 16, 16 +IdleLeft + xy: 304, 0 + size: 16, 16 +IdleLeftUp + xy: 320, 0 + size: 16, 16 +IdleLeftUp + xy: 336, 0 + size: 16, 16 +IdleLeftUp + xy: 352, 0 + size: 16, 16 +IdleLeftUp + xy: 368, 0 + size: 16, 16 +IdleUp + xy: 384, 0 + size: 16, 16 +IdleUp + xy: 400, 0 + size: 16, 16 +IdleUp + xy: 416, 0 + size: 16, 16 +IdleUp + xy: 432, 0 + size: 16, 16 +IdleRightUp + xy: 448, 0 + size: 16, 16 +IdleRightUp + xy: 464, 0 + size: 16, 16 +IdleRightUp + xy: 480, 0 + size: 16, 16 +IdleRightUp + xy: 496, 0 + size: 16, 16 +WalkRight + xy: 0, 16 + size: 16, 16 +WalkRight + xy: 16, 16 + size: 16, 16 +WalkRight + xy: 32, 16 + size: 16, 16 +WalkRight + xy: 48, 16 + size: 16, 16 +WalkRightDown + xy: 64, 16 + size: 16, 16 +WalkRightDown + xy: 80, 16 + size: 16, 16 +WalkRightDown + xy: 96, 16 + size: 16, 16 +WalkRightDown + xy: 112, 16 + size: 16, 16 +WalkDown + xy: 128, 16 + size: 16, 16 +WalkDown + xy: 144, 16 + size: 16, 16 +WalkDown + xy: 160, 16 + size: 16, 16 +WalkDown + xy: 176, 16 + size: 16, 16 +WalkLeftDown + xy: 192, 16 + size: 16, 16 +WalkLeftDown + xy: 208, 16 + size: 16, 16 +WalkLeftDown + xy: 224, 16 + size: 16, 16 +WalkLeftDown + xy: 240, 16 + size: 16, 16 +WalkLeft + xy: 256, 16 + size: 16, 16 +WalkLeft + xy: 272, 16 + size: 16, 16 +WalkLeft + xy: 288, 16 + size: 16, 16 +WalkLeft + xy: 304, 16 + size: 16, 16 +WalkLeftUp + xy: 320, 16 + size: 16, 16 +WalkLeftUp + xy: 336, 16 + size: 16, 16 +WalkLeftUp + xy: 352, 16 + size: 16, 16 +WalkLeftUp + xy: 368, 16 + size: 16, 16 +WalkUp + xy: 384, 16 + size: 16, 16 +WalkUp + xy: 400, 16 + size: 16, 16 +WalkUp + xy: 416, 16 + size: 16, 16 +WalkUp + xy: 432, 16 + size: 16, 16 +WalkRightUp + xy: 448, 16 + size: 16, 16 +WalkRightUp + xy: 464, 16 + size: 16, 16 +WalkRightUp + xy: 480, 16 + size: 16, 16 +WalkRightUp + xy: 496, 16 + size: 16, 16 +AttackRight + xy: 0, 32 + size: 16, 16 +AttackRight + xy: 16, 32 + size: 16, 16 +AttackRight + xy: 32, 32 + size: 16, 16 +AttackRight + xy: 48, 32 + size: 16, 16 +AttackRightDown + xy: 64, 32 + size: 16, 16 +AttackRightDown + xy: 80, 32 + size: 16, 16 +AttackRightDown + xy: 96, 32 + size: 16, 16 +AttackRightDown + xy: 112, 32 + size: 16, 16 +AttackDown + xy: 128, 32 + size: 16, 16 +AttackDown + xy: 144, 32 + size: 16, 16 +AttackDown + xy: 160, 32 + size: 16, 16 +AttackDown + xy: 176, 32 + size: 16, 16 +AttackLeftDown + xy: 192, 32 + size: 16, 16 +AttackLeftDown + xy: 208, 32 + size: 16, 16 +AttackLeftDown + xy: 224, 32 + size: 16, 16 +AttackLeftDown + xy: 240, 32 + size: 16, 16 +AttackLeft + xy: 256, 32 + size: 16, 16 +AttackLeft + xy: 272, 32 + size: 16, 16 +AttackLeft + xy: 288, 32 + size: 16, 16 +AttackLeft + xy: 304, 32 + size: 16, 16 +AttackLeftUp + xy: 320, 32 + size: 16, 16 +AttackLeftUp + xy: 336, 32 + size: 16, 16 +AttackLeftUp + xy: 352, 32 + size: 16, 16 +AttackLeftUp + xy: 368, 32 + size: 16, 16 +AttackUp + xy: 384, 32 + size: 16, 16 +AttackUp + xy: 400, 32 + size: 16, 16 +AttackUp + xy: 416, 32 + size: 16, 16 +AttackUp + xy: 432, 32 + size: 16, 16 +AttackRightUp + xy: 448, 32 + size: 16, 16 +AttackRightUp + xy: 464, 32 + size: 16, 16 +AttackRightUp + xy: 480, 32 + size: 16, 16 +AttackRightUp + xy: 496, 32 + size: 16, 16 +HitRight + xy: 0, 48 + size: 16, 16 +HitRight + xy: 16, 48 + size: 16, 16 +HitRight + xy: 32, 48 + size: 16, 16 +HitRight + xy: 48, 48 + size: 16, 16 +HitRightDown + xy: 64, 48 + size: 16, 16 +HitRightDown + xy: 80, 48 + size: 16, 16 +HitRightDown + xy: 96, 48 + size: 16, 16 +HitRightDown + xy: 112, 48 + size: 16, 16 +HitDown + xy: 128, 48 + size: 16, 16 +HitDown + xy: 144, 48 + size: 16, 16 +HitDown + xy: 160, 48 + size: 16, 16 +HitDown + xy: 176, 48 + size: 16, 16 +HitLeftDown + xy: 192, 48 + size: 16, 16 +HitLeftDown + xy: 208, 48 + size: 16, 16 +HitLeftDown + xy: 224, 48 + size: 16, 16 +HitLeftDown + xy: 240, 48 + size: 16, 16 +HitLeft + xy: 256, 48 + size: 16, 16 +HitLeft + xy: 272, 48 + size: 16, 16 +HitLeft + xy: 288, 48 + size: 16, 16 +HitLeft + xy: 304, 48 + size: 16, 16 +HitLeftUp + xy: 320, 48 + size: 16, 16 +HitLeftUp + xy: 336, 48 + size: 16, 16 +HitLeftUp + xy: 352, 48 + size: 16, 16 +HitLeftUp + xy: 368, 48 + size: 16, 16 +HitUp + xy: 384, 48 + size: 16, 16 +HitUp + xy: 400, 48 + size: 16, 16 +HitUp + xy: 416, 48 + size: 16, 16 +HitUp + xy: 432, 48 + size: 16, 16 +HitRightUp + xy: 448, 48 + size: 16, 16 +HitRightUp + xy: 464, 48 + size: 16, 16 +HitRightUp + xy: 480, 48 + size: 16, 16 +HitRightUp + xy: 496, 48 + size: 16, 16 +DeathRight + xy: 0, 64 + size: 16, 16 +DeathRight + xy: 16, 64 + size: 16, 16 +DeathRight + xy: 32, 64 + size: 16, 16 +DeathRight + xy: 48, 64 + size: 16, 16 +DeathRightDown + xy: 64, 64 + size: 16, 16 +DeathRightDown + xy: 80, 64 + size: 16, 16 +DeathRightDown + xy: 96, 64 + size: 16, 16 +DeathRightDown + xy: 112, 64 + size: 16, 16 +DeathDown + xy: 128, 64 + size: 16, 16 +DeathDown + xy: 144, 64 + size: 16, 16 +DeathDown + xy: 160, 64 + size: 16, 16 +DeathDown + xy: 176, 64 + size: 16, 16 +DeathLeftDown + xy: 192, 64 + size: 16, 16 +DeathLeftDown + xy: 208, 64 + size: 16, 16 +DeathLeftDown + xy: 224, 64 + size: 16, 16 +DeathLeftDown + xy: 240, 64 + size: 16, 16 +DeathLeft + xy: 256, 64 + size: 16, 16 +DeathLeft + xy: 272, 64 + size: 16, 16 +DeathLeft + xy: 288, 64 + size: 16, 16 +DeathLeft + xy: 304, 64 + size: 16, 16 +DeathLeftUp + xy: 320, 64 + size: 16, 16 +DeathLeftUp + xy: 336, 64 + size: 16, 16 +DeathLeftUp + xy: 352, 64 + size: 16, 16 +DeathLeftUp + xy: 368, 64 + size: 16, 16 +DeathUp + xy: 384, 64 + size: 16, 16 +DeathUp + xy: 400, 64 + size: 16, 16 +DeathUp + xy: 416, 64 + size: 16, 16 +DeathUp + xy: 432, 64 + size: 16, 16 +DeathRightUp + xy: 448, 64 + size: 16, 16 +DeathRightUp + xy: 464, 64 + size: 16, 16 +DeathRightUp + xy: 480, 64 + size: 16, 16 +DeathRightUp + xy: 496, 64 + size: 16, 16 \ No newline at end of file diff --git a/forge-gui/res/adventure/Shandalar/sprites/heroes/leonin_m.png b/forge-gui/res/adventure/Shandalar/sprites/heroes/leonin_m.png new file mode 100644 index 00000000000..e0f40a85e8b Binary files /dev/null and b/forge-gui/res/adventure/Shandalar/sprites/heroes/leonin_m.png differ diff --git a/forge-gui/res/adventure/Shandalar/sprites/phyrexianduelist.png b/forge-gui/res/adventure/Shandalar/sprites/phyrexianduelist.png index a2d8e985c16..e29d02e0e1b 100644 Binary files a/forge-gui/res/adventure/Shandalar/sprites/phyrexianduelist.png and b/forge-gui/res/adventure/Shandalar/sprites/phyrexianduelist.png differ diff --git a/forge-gui/res/adventure/Shandalar/world/black.json b/forge-gui/res/adventure/Shandalar/world/black.json index 17b9fe383e3..6d907a7044e 100644 --- a/forge-gui/res/adventure/Shandalar/world/black.json +++ b/forge-gui/res/adventure/Shandalar/world/black.json @@ -47,6 +47,7 @@ "Dark Knight", "Death Knight", "Demon", + "Dross Gladiator", "Eye", "Fungus", "Frog", diff --git a/forge-gui/res/adventure/Shandalar/world/blue.json b/forge-gui/res/adventure/Shandalar/world/blue.json index c5aa793b397..1af44d47e32 100644 --- a/forge-gui/res/adventure/Shandalar/world/blue.json +++ b/forge-gui/res/adventure/Shandalar/world/blue.json @@ -43,6 +43,7 @@ "Frog", "Frost Titan", "Geist", + "Gitaxian Underling", "Horror", "Illusionist", "Jellyfish", diff --git a/forge-gui/res/adventure/Shandalar/world/enemies.json b/forge-gui/res/adventure/Shandalar/world/enemies.json index 83ff0e1bc3e..0c4b90abdc0 100644 --- a/forge-gui/res/adventure/Shandalar/world/enemies.json +++ b/forge-gui/res/adventure/Shandalar/world/enemies.json @@ -3366,7 +3366,7 @@ "name": "Copper Host Brutalizer", "sprite": "sprites/copperhostbrutalizer.atlas", "deck": [ - "deckscopperhostbrutalizer.json" + "decks/copperhostbrutalizer.dck" ], "ai": "", "spawnRate": 1, @@ -4680,7 +4680,7 @@ "name": "Dross Grimnarch", "sprite": "sprites/drossgrimnarch.atlas", "deck": [ - "decks/drossgrimnarch.json" + "decks/drossgrimnarch.dck" ], "spawnRate": 1, "difficulty": 0.1, @@ -6197,7 +6197,7 @@ "name": "Furnace Tormentor", "sprite": "sprites/furnacetormentor.atlas", "deck": [ - "decks/furnacetormentor.json" + "decks/furnacetormentor.dck" ], "ai": "", "spawnRate": 1, @@ -6814,7 +6814,7 @@ "name": "Gitaxian Scientist", "sprite": "sprites/gitaxianscientist.atlas", "deck": [ - "decks/gitaxianscientist.json" + "decks/gitaxianscientist.dck" ], "ai": "", "spawnRate": 1, @@ -11471,7 +11471,7 @@ "name": "Orthodoxy Angel", "sprite": "sprites/phyrexianangel.atlas", "deck": [ - "decks/phyrexianangel.json" + "decks/phyrexianangel.dck" ], "spawnRate": 1, "difficulty": 0.1, @@ -12441,16 +12441,6 @@ "scale": 0.4, "life": 40, "rewards": [ - { - "type": "deckCard", - "probability": 1, - "count": 2, - "addMaxCount": 4, - "rarity": [ - "common", - "uncommon" - ] - }, { "type": "deckCard", "probability": 1, diff --git a/forge-gui/res/adventure/Shandalar/world/green.json b/forge-gui/res/adventure/Shandalar/world/green.json index 049692f29b5..1dd2f7f1acb 100644 --- a/forge-gui/res/adventure/Shandalar/world/green.json +++ b/forge-gui/res/adventure/Shandalar/world/green.json @@ -42,6 +42,7 @@ "Challenger 20", "Challenger 21", "Challenger 22", + "Copper Host Infector", "Dino", "Eldraine Faerie", "Elf", diff --git a/forge-gui/res/adventure/Shandalar/world/heroes.json b/forge-gui/res/adventure/Shandalar/world/heroes.json index 28747eba3e3..36d01af3b11 100644 --- a/forge-gui/res/adventure/Shandalar/world/heroes.json +++ b/forge-gui/res/adventure/Shandalar/world/heroes.json @@ -70,7 +70,14 @@ "male":"sprites/heroes/werewolf_m.atlas", "femaleAvatar":"Werewolf_f", "maleAvatar":"Werewolf_m" - } + }, + { + "name":"Leonin", + "female":"sprites/heroes/leonin_f.atlas", + "male":"sprites/heroes/leonin_m.atlas", + "femaleAvatar":"Leonin_f", + "maleAvatar":"Leonin_m" + } ] diff --git a/forge-gui/res/adventure/Shandalar/world/red.json b/forge-gui/res/adventure/Shandalar/world/red.json index d872bef2dcf..02eb218b8c8 100644 --- a/forge-gui/res/adventure/Shandalar/world/red.json +++ b/forge-gui/res/adventure/Shandalar/world/red.json @@ -47,6 +47,7 @@ "Efreet", "Fire Elemental", "Flame Elemental", + "Furnace Goblin", "Goblin", "Goblin Chief", "Goblin Warrior", diff --git a/forge-gui/res/adventure/Shandalar/world/white.json b/forge-gui/res/adventure/Shandalar/world/white.json index 1872c4db27b..932a59fcaf4 100644 --- a/forge-gui/res/adventure/Shandalar/world/white.json +++ b/forge-gui/res/adventure/Shandalar/world/white.json @@ -54,6 +54,7 @@ "Knight", "Kor Warrior", "Monk", + "Orthodoxy Duelist", "Owl", "Raven", "Scorpion", diff --git a/forge-gui/res/blockdata/boosters-special.txt b/forge-gui/res/blockdata/boosters-special.txt index 4c322ebe993..8338a28cf11 100644 --- a/forge-gui/res/blockdata/boosters-special.txt +++ b/forge-gui/res/blockdata/boosters-special.txt @@ -312,13 +312,13 @@ ONE Toxic 1: 1 wholeSheet("ONE Toxic 1"), 1 RareMythic:fromSheet("ONE Green Inse ONE Toxic 2: 1 wholeSheet("ONE Toxic 2"), 1 RareMythic:fromSheet("ONE Green Inserts") # MOM Jumpstart -MOM Mite-y 1: 1 wholeSheet("MOM Mite-y 1"), 1 RareMythic:fromSheet("MOM White Inserts") -MOM Mite-y 2: 1 wholeSheet("MOM Mite-y 2"), 1 RareMythic:fromSheet("MOM White Inserts") -MOM Progress 1: 1 wholeSheet("MOM Progress 1"), 1 RareMythic:fromSheet("MOM Blue Inserts") -MOM Progress 2: 1 wholeSheet("MOM Progress 2"), 1 RareMythic:fromSheet("MOM Blue Inserts") -MOM Corruption 1: 1 wholeSheet("MOM Corruption 1"), 1 RareMythic:fromSheet("MOM Black Inserts") -MOM Corruption 2: 1 wholeSheet("MOM Corruption 2"), 1 RareMythic:fromSheet("MOM Black Inserts") -MOM Rebellious 1: 1 wholeSheet("MOM Rebellious 1"), 1 RareMythic:fromSheet("MOM Red Inserts") -MOM Rebellious 2: 1 wholeSheet("MOM Rebellious 2"), 1 RareMythic:fromSheet("MOM Red Inserts") -MOM Toxic 1: 1 wholeSheet("MOM Toxic 1"), 1 RareMythic:fromSheet("MOM Green Inserts") -MOM Toxic 2: 1 wholeSheet("MOM Toxic 2"), 1 RareMythic:fromSheet("MOM Green Inserts") \ No newline at end of file +MOM Brood 1: 1 wholeSheet("MOM Brood 1"), 1 RareMythic:fromSheet("MOM White Inserts") +MOM Brood 2: 1 wholeSheet("MOM Brood 2"), 1 RareMythic:fromSheet("MOM White Inserts") +MOM Overachiever 1: 1 wholeSheet("MOM Overachiever 1"), 1 RareMythic:fromSheet("MOM Blue Inserts") +MOM Overachiever 2: 1 wholeSheet("MOM Overachiever 2"), 1 RareMythic:fromSheet("MOM Blue Inserts") +MOM Expendable 1: 1 wholeSheet("MOM Expendable 1"), 1 RareMythic:fromSheet("MOM Black Inserts") +MOM Expendable 2: 1 wholeSheet("MOM Expendable 2"), 1 RareMythic:fromSheet("MOM Black Inserts") +MOM Reinforcement 1: 1 wholeSheet("MOM Reinforcement 1"), 1 RareMythic:fromSheet("MOM Red Inserts") +MOM Reinforcement 2: 1 wholeSheet("MOM Reinforcement 2"), 1 RareMythic:fromSheet("MOM Red Inserts") +MOM Buff 1: 1 wholeSheet("MOM Buff 1"), 1 RareMythic:fromSheet("MOM Green Inserts") +MOM Buff 2: 1 wholeSheet("MOM Buff 2"), 1 RareMythic:fromSheet("MOM Green Inserts") \ No newline at end of file diff --git a/forge-gui/res/blockdata/printsheets.txt b/forge-gui/res/blockdata/printsheets.txt index 65ce772a0d1..471c19d3397 100644 --- a/forge-gui/res/blockdata/printsheets.txt +++ b/forge-gui/res/blockdata/printsheets.txt @@ -5995,191 +5995,64 @@ Kaya, Ghost Assassin|CN2|2 1 Elesh Norn, Mother of Machines|ONE 1 Mondrak, Glory Dominus|ONE 1 Phyrexian Vindicator|ONE -[ONE Mite-y 1] - -1 Mite Overseer|ONE -1 Bladed Ambassador|ONE -1 Sinew Dancer|ONE -1 Duelist of Deep Faith|ONE -1 Basilica Shepherd|ONE -1 Annex Sentry|ONE -1 Porcelain Zealot|ONE -1 Planar Disruption|ONE -1 Charge of the Mites|ONE -1 Vanish into Eternity|ONE -1 Infested Fleshcutter|ONE -7 Plains|ONE -1 The Fair Basilica|ONE - -[ONE Mite-y 2] - -1 Mite Overseer|ONE -1 Bladed Ambassador|ONE -1 Crawling Chorus|ONE -1 Mandible Justiciar|ONE -1 Duelist of Deep Faith|ONE -1 Porcelain Zealot|ONE -1 Apostle of Invasion|ONE -1 Zealot's Conviction|ONE -1 Ossification|ONE -1 Compleat Devotion|ONE -1 Vanish into Eternity|ONE -7 Plains|ONE -1 The Fair Basilica|ONE - -[ONE Progress 1] - -1 Serum Sovereign|ONE -1 Glistener Seer|ONE -1 Ichor Synthesizer|ONE -1 Chrome Prowler|ONE -1 Meldweb Curator|ONE -1 Quicksilver Fisher|ONE -1 Mesmerizing Dose|ONE -1 Serum Snare|ONE -1 Tamiyo's Immobilizer|ONE -1 Distorted Curiosity|ONE -1 The Surgical Bay|ONE -7 Islands|ONE - -[ONE Progress 2] - -1 Serum Sovereign|ONE -1 Chrome Prowler|ONE -1 Atmosphere Surgeon|ONE -1 Trawler Drake|ONE -1 Myr Custodian|ONE -1 Experimental Augury|ONE -1 Bring the Ending|ONE -1 Mesmerizing Dose|ONE -1 Distorted Curiosity|ONE -1 Surgical Skullbomb|ONE -1 The Surgical Bay|ONE -7 Islands|ONE - -[ONE Corruption 1] - -1 Kinzu of the Bleak Coven|ONE -1 Bonepicker Skirge|ONE -1 Pestilent Syphoner|ONE -1 Testament Bearer|ONE -1 Ambulatory Edifice|ONE -1 Nimraiser Paladin|ONE -1 Annihilating Glare|ONE -1 Drown in Ichor|ONE -1 Feed the Infection|ONE -1 Anoint with Affliction|ONE -1 Dross Skullbomb|ONE -1 The Dross Pits|ONE -7 Swamps|ONE - -[ONE Corruption 2] - -1 Kinzu of the Bleak Coven|ONE -1 Bonepicker Skirge|ONE -1 Stinging Hivemaster|ONE -1 Testament Bearer|ONE -1 Bilious Skulldweller|ONE -1 Chittering Skitterling|ONE -1 Nimraiser Paladin|ONE -1 Offer Immortality|ONE -1 Vraska's Fall|ONE -1 Infectious Inquiry|ONE -1 Necrogen Communion|ONE -1 The Dross Pits|ONE -7 Swamps|ONE [MOM Brood 1] - -1 Essence of Orthodoxy|MOM -1 Norn's Inquisitor|MOM -1 Phyrexian Pegasus|MOM -1 Alabaster Host Sanctifier|MOM -1 Infected Defector|MOM -1 Alabaster Host Intercessor|MOM -1 Seedpod Caretaker|MOM -1 Tiller of Flesh|MOM -1 Sunder the Gateway|MOM -1 Angelic Intervention|MOM -1 Cut Short|MOM -8 Plains|MOM +1 Essence of Orthodoxy +1 Norn's Inquisitor +1 Phyrexian Pegasus +1 Alabaster Host Sanctifier +1 Infected Defector +1 Alabaster Host Intercessor +1 Seedpod Caretaker +1 Tiller of Flesh +1 Sunder the Gateway +1 Angelic Intervention +1 Cut Short +8 Plains [MOM Brood 2] - -1 Essence of Orthodoxy|MOM -1 Phyrexian Pegasus|MOM -1 Seedpod Caretaker|MOM -1 Norn's Inquisitor |MOM -1 Alabaster Host Sanctifier|MOM -1 Infected Defector|MOM -1 Alabaster Host Intercessor|MOM -1 Tiller of Flesh|MOM -1 Aerial Boost|MOM -1 Inspired Charge|MOM -1 Seal from Existence|MOM -8 Plains|MOM - -[MOM Reinforcement 1] - -1 Orthion, Hero of Lavabrink|MOM -1 Axgard Artisan|MOM -1 Cragsmasher Yeti|MOM -1 Fearless Skald|MOM -1 Karsus Depthguard|MOM -1 Hangar Scrounger|MOM -1 Redcap Heelslasher|MOM -1 Ral's Reinforcements|MOM -1 Coming In Hot|MOM -1 Volcanic Spite|MOM -8 Mountain|MOM - -[MOM Reinforcement 2] - -1 Orthion, Hero of Lavabrink|MOM -1 Axgard Artisan|MOM -1 Cragsmasher Yeti|MOM -1 Trailblazing Historian|MOM -1 Karsus Depthguard|MOM -1 Hangar Scrounger|MOM -1 Redcap Heelslasher|MOM -1 Fearless Skald|MOM -1 Mirran Banesplitter|MOM -1 Volcanic Spite|MOM -1 Shatter the Source|MOM -8 Mountain|MOM +1 Essence of Orthodoxy +1 Phyrexian Pegasus +1 Seedpod Caretaker +1 Norn's Inquisitor +1 Alabaster Host Sanctifier +1 Infected Defector +1 Alabaster Host Intercessor +1 Tiller of Flesh +1 Aerial Boost +1 Inspired Charge +1 Seal from Existence +8 Plains [MOM Overachiever 1] - -1 Zephyr Winder|MOM -1 Expedition Lookout|MOM -1 Preening Champion|MOM -1 Thunderhead Squadron|MOM -1 Tidal Terror|MOM -1 Referee Squad|MOM -1 Oracle of Tragedy|MOM -1 Interdisciplinary Mascot|MOM -1 Temporal Cleansing|MOM -1 Ephara's Dispersal|MOM -1 Meeting of Minds|MOM -8 Island|MOM +1 Zephyr Winder +1 Expedition Lookout +1 Preening Champion +1 Thunderhead Squadron +1 Tidal Terror +1 Referee Squad +1 Oracle of Tragedy +1 Interdisciplinary Mascot +1 Temporal Cleansing +1 Ephara's Dispersal +1 Meeting of Minds +8 Island [MOM Overachiever 2] - -1 Zephyr Winder|MOM -1 Expedition Lookout|MOM -1 Xerex Strobe-Knight|MOM -1 Thunderhead Squadron|MOM -1 Tidal Terror|MOM -1 Referee Squad|MOM -1 Oracle of Tragedy|MOM -1 Interdisciplinary Mascot|MOM -1 Ephara's Dispersal|MOM -1 Wicked Slumber|MOM -1 Astral Wingspan|MOM -8 Island|MOM +1 Zephyr Winder +1 Expedition Lookout +1 Xerex Strobe-Knight +1 Thunderhead Squadron +1 Tidal Terror +1 Referee Squad +1 Oracle of Tragedy +1 Interdisciplinary Mascot +1 Ephara's Dispersal +1 Wicked Slumber +1 Astral Wingspan +8 Island [MOM Expendable 1] - 1 Terror of Towashi|MOM 1 Seer of Stolen Sight|MOM 1 Injector Crocodile|MOM @@ -6187,14 +6060,13 @@ Kaya, Ghost Assassin|CN2|2 1 Etched Familiar|MOM 1 Ichor Shade|MOM 1 Scorn-Blade Berserker|MOM -1 Final Flourish|MOM -1 Unseal the Necropolis|MOM -1 Deadly Derision|MOM +1 Final Flourish|MOM +1 Unseal the Necropolis|MOM +1 Deadly Derision|MOM 1 Gift of Compleation|MOM 8 Swamp|MOM [MOM Expendable 2] - 1 Terror of Towashi|MOM 1 Injector Crocodile|MOM 1 Seer of Stolen Sight|MOM @@ -6208,8 +6080,34 @@ Kaya, Ghost Assassin|CN2|2 1 Gift of Compleation|MOM 8 Swamp|MOM -[MOM Buff 1] +[MOM Reinforcement 1] +1 Orthion, Hero of Lavabrink|MOM +1 Axgard Artisan|MOM +1 Cragsmasher Yeti|MOM +1 Fearless Skald|MOM +1 Karsus Depthguard|MOM +1 Hangar Scrounger|MOM +1 Redcap Heelslasher|MOM +1 Ral's Reinforcements|MOM +1 Coming In Hot|MOM +1 Volcanic Spite|MOM +8 Mountain|MOM +[MOM Reinforcement 2] +1 Orthion, Hero of Lavabrink|MOM +1 Axgard Artisan|MOM +1 Cragsmasher Yeti|MOM +1 Trailblazing Historian|MOM +1 Karsus Depthguard|MOM +1 Hangar Scrounger|MOM +1 Redcap Heelslasher|MOM +1 Fearless Skald|MOM +1 Mirran Banesplitter|MOM +1 Volcanic Spite|MOM +1 Shatter the Source|MOM +8 Mountain|MOM + +[MOM Buff 1] 1 Surrak and Goreclaw|MOM 1 Fairgrounds Trumpeter|MOM 1 Ruins Recluse|MOM @@ -6221,10 +6119,9 @@ Kaya, Ghost Assassin|CN2|2 1 Arachnoid Adaptation|MOM 1 Cosmic Hunger|MOM 1 Fertilid's Favor|MOM -8 Forests|MOM +8 Forest [MOM Buff 2] - 1 Surrak and Goreclaw|MOM 1 Fairgrounds Trumpeter|MOM 1 Placid Rottentail|MOM @@ -6236,71 +6133,90 @@ Kaya, Ghost Assassin|CN2|2 1 Arachnoid Adaptation|MOM 1 Tandem Takedown|MOM 1 Blighted Burgeoning|MOM -8 Forests|MOM +8 Forest|MOM + +[MOM Black Inserts] +1 Archpriest of Shadows|MOM +1 Ayara, Widow of the Realm|MOM +1 Bloated Processor|MOM +1 Breach the Multiverse|MOM +1 Grafted Butcher|MOM +1 Hoarding Broodlord|MOM +1 Invasion of Fiora|MOM +1 Pile On|MOM +1 Realmbreaker, the Invasion Tree|MOM +1 Terror of Towashi|MOM +1 Invasion of Innistrad|MOM +1 Invasion of Ravnica|MOM +1 Sheoldred|MOM +1 Sword of Once and Future|MOM [MOM Blue Inserts] 1 Chrome Host Seedshark|MOM 1 Complete the Circuit|MOM -1 Rona, Herald of Invasion|MOM -1 Invasion of Segovia|MOM -1 Invasion of Arcavios|MOM 1 Faerie Mastermind|MOM -1 Zephyr Singer|MOM -1 Transcendent Message|MOM +1 Interdisciplinary Mascot|MOM +1 Invasion of Arcavios|MOM +1 Invasion of Segovia|MOM +1 Realmbreaker, the Invasion Tree|MOM +1 Rona, Herald of Invasion|MOM 1 See Double|MOM +1 Transcendent Message|MOM +1 Zephyr Singer|MOM +1 Invasion of Ravnica|MOM 1 Jin-Gitaxias|MOM - -[MOM Red Inserts] -1 Chandra, Hope's Beacon|MOM -1 Invasion of Tarkir|MOM -1 Urabrask|MOM -1 Bloodfeather Phoenix|MOM -1 Into the Fire|MOM -1 City on Fire|MOM -1 Etali, Primal Conqueror|MOM -1 Invasion of Kaldheim|MOM -1 Nahiri's Warcrafting|MOM -1 Voldaren Thrillseeker|MOM -1 Rampaging Raptor|MOM +1 Sword of Once and Future|MOM [MOM Green Inserts] +1 Ancient Imperiosaur|MOM +1 Deeproot Wayfinder|MOM +1 Doomskar Warrior|MOM 1 Glistening Dawn|MOM 1 Invasion of Ikoria|MOM 1 Invasion of Ixalan|MOM 1 Ozolith, the Shattered Spire|MOM -1 Tribute to the World Tree|MOM 1 Polukranos Reborn|MOM +1 Realmbreaker, the Invasion Tree|MOM +1 Surrak and Goreclaw|MOM +1 Tribute to the World Tree|MOM +1 Invasion of Ravnica|MOM 1 Invasion of Shandalar|MOM +1 Sword of Once and Future|MOM 1 Vorinclex|MOM 1 Wrenn and Realmbreaker|MOM -1 Doomskar Warrior|MOM -1 Deeproot Wayfinder|MOM -1 Ancient Imperiosaur|MOM -[MOM Black Inserts] - -1 Archpriest of Shadows|MOM -1 Ayara, Widow of the Realm|MOM -1 Bloated Processor|MOM -1 Hoarding Broodlord|MOM -1 Invasion of Fiora|MOM -1 Grafted Butcher|MOM -1 Breach the Multiverse|MOM -1 Pile On|MOM -1 Sheoldred|MOM -1 Invasion of Innistrad|MOM +[MOM Red Inserts] +1 Bloodfeather Phoenix|MOM +1 City on Fire|MOM +1 Etali, Primal Conquerer|MOM +1 Into the Fire|MOM +1 Invasion of Kaladheim|MOM +1 Invasion of Karsus|MOM +1 Nahiri's Warcrafting|MOM +1 Orthion, Hero of Lavabrink|MOM +1 Rampaging Raptor|MOM +1 Realmbreaker, the Invasion Tree|MOM +1 Voldaren Thrillseeker|MOM +1 Chandra, Hope's Beacon|MOM +1 Invasion of Ravnica|MOM +1 Invasion of Tarkir|MOM +1 Sword of Once and Future|MOM +1 Urabrask|MOM [MOM White Inserts] - -1 Archangel Elspeth|MOM -1 Elesh Norn|MOM -1 Monastery Mentor|MOM 1 Boon-Bringer Valkyrie|MOM 1 Dusk Legion Duelist|MOM +1 Essence of Orthodoxy|MOM 1 Guardian of Ghirapur|MOM 1 Heliod, the Radiant Dawn|MOM 1 Invasion of Gobakhan|MOM -1 Knight-Errant of Eos|MOM 1 Invasion of Theros|MOM +1 Knight-Errant of Eos|MOM +1 Realmbreaker, the Invasion Tree|MOM +1 Progenitor Exarch|MOM 1 Sunfall|MOM -1 Progenitor Exarch|MOM \ No newline at end of file +1 Archangel Elspeth|MOM +1 Elesh Norn|MOM +1 Invasion of Ravnica|MOM +1 Monastery Mentor|MOM +1 Sword of Once and Future|MOM diff --git a/forge-gui/res/cardsfolder/a/academy_at_tolaria_west.txt b/forge-gui/res/cardsfolder/a/academy_at_tolaria_west.txt index 72be95b3659..18c29be0598 100644 --- a/forge-gui/res/cardsfolder/a/academy_at_tolaria_west.txt +++ b/forge-gui/res/cardsfolder/a/academy_at_tolaria_west.txt @@ -1,9 +1,10 @@ Name:Academy at Tolaria West ManaCost:no cost Types:Plane Dominaria -T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Command | IsPresent$ Card.YouCtrl | PresentZone$ Hand | PresentCompare$ EQ0 | Execute$ AcademicDraw | TriggerDescription$ At the beginning of your end step, if you have no cards in hand, draw seven cards. +T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Command | IsPresent$ Card.YouOwn | PresentZone$ Hand | PresentCompare$ EQ0 | Execute$ AcademicDraw | TriggerDescription$ At the beginning of your end step, if you have no cards in hand, draw seven cards. SVar:AcademicDraw:DB$ Draw | Defined$ You | NumCards$ 7 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, discard your hand. -SVar:RolledChaos:DB$ Discard | Mode$ Hand | Defined$ You +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigDiscard | TriggerDescription$ Whenever chaos ensues, discard your hand. +SVar:TrigDiscard:DB$ Discard | Mode$ Hand | Defined$ You SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | CardsInHandLE$ 2 -Oracle:At the beginning of your end step, if you have no cards in hand, draw seven cards.\nWhenever you roll {CHAOS}, discard your hand. +Deckhas:Ability$Discard +Oracle:At the beginning of your end step, if you have no cards in hand, draw seven cards.\nWhenever chaos ensues, discard your hand. diff --git a/forge-gui/res/cardsfolder/a/agyrem.txt b/forge-gui/res/cardsfolder/a/agyrem.txt index 0a6067f2cd5..2b9275191e8 100644 --- a/forge-gui/res/cardsfolder/a/agyrem.txt +++ b/forge-gui/res/cardsfolder/a/agyrem.txt @@ -10,9 +10,9 @@ T:Mode$ ChangesZone | ValidCard$ Creature.nonWhite | Origin$ Battlefield | Desti SVar:TrigDelay2:DB$ Effect | Name$ Agyrem Effect For non-White Creatures | Triggers$ TrigEOT2 | RememberObjects$ TriggeredCard | Duration$ Permanent SVar:TrigEOT2:Mode$ Phase | Phase$ End of Turn | Execute$ AgyremReturn2 | TriggerDescription$ Return creature to its owner's hand at the beginning of the next end step. SVar:AgyremReturn2:DB$ ChangeZone | Defined$ Remembered | Origin$ Graveyard | Destination$ Hand | SubAbility$ AgyremCleanup -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, creatures can't attack you until a player planeswalks. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, creatures can't attack you until a player planeswalks. SVar:RolledChaos:DB$ Effect | Name$ Agyrem Effect - Can't Attack | StaticAbilities$ STCantAttack | Triggers$ TrigPlaneswalk | Duration$ Permanent SVar:STCantAttack:Mode$ CantAttack | EffectZone$ Command | ValidCard$ Creature | Target$ You | Description$ Creatures can't attack you until a player planeswalks. SVar:TrigPlaneswalk:Mode$ PlaneswalkedFrom | Execute$ AgyremCleanup | Static$ True SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:Whenever a white creature dies, return it to the battlefield under its owner's control at the beginning of the next end step.\nWhenever a nonwhite creature dies, return it to its owner's hand at the beginning of the next end step.\nWhenever you roll {CHAOS}, creatures can't attack you until a player planeswalks. +Oracle:Whenever a white creature dies, return it to the battlefield under its owner's control at the beginning of the next end step.\nWhenever a nonwhite creature dies, return it to its owner's hand at the beginning of the next end step.\nWhenever chaos ensues, creatures can't attack you until a player planeswalks. diff --git a/forge-gui/res/cardsfolder/a/akoum.txt b/forge-gui/res/cardsfolder/a/akoum.txt index 7ec5af49c89..0068edb6057 100644 --- a/forge-gui/res/cardsfolder/a/akoum.txt +++ b/forge-gui/res/cardsfolder/a/akoum.txt @@ -2,7 +2,7 @@ Name:Akoum ManaCost:no cost Types:Plane Zendikar S:Mode$ CastWithFlash | ValidCard$ Enchantment | ValidSA$ Spell | EffectZone$ Command | Caster$ Player | Description$ Players may cast enchantment spells as though they had flash. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, destroy target creature that isn't enchanted. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, destroy target creature that isn't enchanted. SVar:RolledChaos:DB$ Destroy | ValidTgts$ Creature.unenchanted | TgtPrompt$ Select target creature that isn't enchanted SVar:AIRollPlanarDieParams:Mode$ Always | OppHasCreatureInPlay$ True | RollInMain1$ True -Oracle:Players may cast enchantment spells as though they had flash.\nWhenever you roll {CHAOS}, destroy target creature that isn't enchanted. +Oracle:Players may cast enchantment spells as though they had flash.\nWhenever chaos ensues, destroy target creature that isn't enchanted. diff --git a/forge-gui/res/cardsfolder/a/aretopolis.txt b/forge-gui/res/cardsfolder/a/aretopolis.txt index 1f15bf5f42e..a6a4a50bb4d 100644 --- a/forge-gui/res/cardsfolder/a/aretopolis.txt +++ b/forge-gui/res/cardsfolder/a/aretopolis.txt @@ -8,8 +8,8 @@ SVar:ScrollsOfLife:DB$ GainLife | Defined$ You | LifeAmount$ NumScrolls SVar:NumScrolls:Count$CardCounters.SCROLL T:Mode$ Always | TriggerZones$ Command | CheckSVar$ NumScrolls | SVarCompare$ GE10 | Execute$ RolledWalk | TriggerDescription$ When CARDNAME has ten or more scroll counters on it, planeswalk. SVar:RolledWalk:DB$ Planeswalk -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, put a scroll counter on CARDNAME, then draw cards equal to the number of scroll counters on it. -SVar:RolledChaos:DB$ PutCounter | Defined$ Self | CounterType$ SCROLL | CounterNum$ 1 | SubAbility$ ScrollsOfKnowledge -SVar:ScrollsOfKnowledge:DB$ Draw | Defined$ You | NumCards$ NumScrolls +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigPutCounter | TriggerDescription$ Whenever chaos ensues, put a scroll counter on CARDNAME, then draw cards equal to the number of scroll counters on it. +SVar:TrigPutCounter:DB$ PutCounter | CounterType$ SCROLL | SubAbility$ ScrollsOfKnowledge +SVar:ScrollsOfKnowledge:DB$ Draw | NumCards$ NumScrolls SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:When you planeswalk to Aretopolis or at the beginning of your upkeep, put a scroll counter on Aretopolis, then you gain life equal to the number of scroll counters on it.\nWhen Aretopolis has ten or more scroll counters on it, planeswalk.\nWhenever you roll {CHAOS}, put a scroll counter on Aretopolis, then draw cards equal to the number of scroll counters on it. +Oracle:When you planeswalk to Aretopolis or at the beginning of your upkeep, put a scroll counter on Aretopolis, then you gain life equal to the number of scroll counters on it.\nWhen Aretopolis has ten or more scroll counters on it, planeswalk.\nWhenever chaos ensues, put a scroll counter on Aretopolis, then draw cards equal to the number of scroll counters on it. diff --git a/forge-gui/res/cardsfolder/a/astral_arena.txt b/forge-gui/res/cardsfolder/a/astral_arena.txt index 0bf2f017133..4fd4a2a5cd6 100644 --- a/forge-gui/res/cardsfolder/a/astral_arena.txt +++ b/forge-gui/res/cardsfolder/a/astral_arena.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Kolbahan S:Mode$ AttackRestrict | EffectZone$ Command | MaxAttackers$ 1 | Description$ No more than one creature can attack each combat. S:Mode$ Continuous | EffectZone$ Command | GlobalRule$ No more than one creature can block each combat. | Description$ No more than one creature can block each combat. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, CARDNAME deals 2 damage to each creature. -SVar:RolledChaos:DB$ DamageAll | NumDmg$ 2 | ValidCards$ Creature | ValidDescription$ each creature. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, CARDNAME deals 2 damage to each creature. +SVar:RolledChaos:DB$ DamageAll | NumDmg$ 2 | ValidCards$ Creature SVar:AIRollPlanarDieParams:Mode$ Random | MinTurn$ 5 -Oracle:No more than one creature can attack each combat.\nNo more than one creature can block each combat.\nWhenever you roll {CHAOS}, Astral Arena deals 2 damage to each creature. +Oracle:No more than one creature can attack each combat.\nNo more than one creature can block each combat.\nWhenever chaos ensues, Astral Arena deals 2 damage to each creature. diff --git a/forge-gui/res/cardsfolder/b/bant.txt b/forge-gui/res/cardsfolder/b/bant.txt index 124c7ff5036..7a6e65a1329 100644 --- a/forge-gui/res/cardsfolder/b/bant.txt +++ b/forge-gui/res/cardsfolder/b/bant.txt @@ -2,9 +2,9 @@ Name:Bant ManaCost:no cost Types:Plane Alara S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature | AddKeyword$ Exalted | Description$ All creatures have exalted. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, put a divinity counter on target green, white, or blue creature. That creature has indestructible for as long as it has a divinity counter on it. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, put a divinity counter on target green, white, or blue creature. That creature has indestructible for as long as it has a divinity counter on it. SVar:RolledChaos:DB$ PutCounter | ValidTgts$ Creature.Green,Creature.White,Creature.Blue | CounterType$ DIVINITY | CounterNum$ 1 | SubAbility$ DivineCharacter SVar:DivineCharacter:DB$ Animate | Defined$ Targeted | staticAbilities$ IndestructibleAspect | Duration$ Permanent SVar:IndestructibleAspect:Mode$ Continuous | EffectZone$ Battlefield | Affected$ Card.Self+counters_GE1_DIVINITY | AddKeyword$ Indestructible SVar:AIRollPlanarDieParams:Mode$ Always | HasColorCreatureInPlay$ GWU -Oracle:All creatures have exalted. (Whenever a creature attacks alone, it gets +1/+1 until end of turn for each instance of exalted among permanents its controller controls.)\nWhenever you roll {CHAOS}, put a divinity counter on target green, white, or blue creature. That creature has indestructible for as long as it has a divinity counter on it. +Oracle:All creatures have exalted. (Whenever a creature attacks alone, it gets +1/+1 until end of turn for each instance of exalted among permanents its controller controls.)\nWhenever chaos ensues, put a divinity counter on target green, white, or blue creature. That creature has indestructible for as long as it has a divinity counter on it. diff --git a/forge-gui/res/cardsfolder/b/bloodhill_bastion.txt b/forge-gui/res/cardsfolder/b/bloodhill_bastion.txt index 640d5e437c9..23b23f1c97e 100644 --- a/forge-gui/res/cardsfolder/b/bloodhill_bastion.txt +++ b/forge-gui/res/cardsfolder/b/bloodhill_bastion.txt @@ -3,8 +3,8 @@ ManaCost:no cost Types:Plane Equilor T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | TriggerZones$ Command | ValidCard$ Creature | Execute$ TrigPump | TriggerDescription$ Whenever a creature enters the battlefield, it gains double strike and haste until end of turn. SVar:TrigPump:DB$ Pump | Defined$ TriggeredCard | KW$ Double Strike & Haste -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, exile target nontoken creature you control, then return it to the battlefield under your control. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, exile target nontoken creature you control, then return it to the battlefield under your control. SVar:RolledChaos:DB$ ChangeZone | ValidTgts$ Creature.nonToken+YouCtrl | TgtPrompt$ Select target non-Token creature you control | Origin$ Battlefield | Destination$ Exile | RememberTargets$ True | ForgetOtherTargets$ True | SubAbility$ RestorationReturn SVar:RestorationReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | GainControl$ True SVar:AIRollPlanarDieParams:Mode$ Always | MinTurn$ 3 | RollInMain1$ True -Oracle:Whenever a creature enters the battlefield, it gains double strike and haste until end of turn.\nWhenever you roll {CHAOS}, exile target nontoken creature you control, then return it to the battlefield under your control. +Oracle:Whenever a creature enters the battlefield, it gains double strike and haste until end of turn.\nWhenever chaos ensues, exile target nontoken creature you control, then return it to the battlefield under your control. diff --git a/forge-gui/res/cardsfolder/b/breaking_entering.txt b/forge-gui/res/cardsfolder/b/breaking_entering.txt index 40578757c58..246d88cac07 100644 --- a/forge-gui/res/cardsfolder/b/breaking_entering.txt +++ b/forge-gui/res/cardsfolder/b/breaking_entering.txt @@ -11,8 +11,7 @@ ALTERNATE Name:Entering ManaCost:4 B R Types:Sorcery -A:SP$ ChooseCard | Cost$ 4 B R | Choices$ Creature | ChoiceZone$ Graveyard | Amount$ 1 | SubAbility$ DBChangeZone | SpellDescription$ Put a creature card from a graveyard onto the battlefield under your control. It gains haste until end of turn. -SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | Defined$ ChosenCard | GainControl$ True | RememberChanged$ True | SubAbility$ DBPump -SVar:DBPump:DB$ Pump | Defined$ Remembered | KW$ Haste | SubAbility$ DBCleanup +A:SP$ ChangeZone | ChangeType$ Creature | Origin$ Graveyard | Destination$ Battlefield | GainControl$ True | Hidden$ True | RememberChanged$ True | SubAbility$ DBPump | SpellDescription$ Put a creature card from a graveyard onto the battlefield under your control. It gains haste until end of turn. +SVar:DBPump:DB$ Pump | Defined$ Remembered | KW$ Haste | SubAbility$ DBCleanup | StackDescription$ None SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True Oracle:Put a creature card from a graveyard onto the battlefield under your control. It gains haste until end of turn.\nFuse (You may cast one or both halves of this card from your hand.) diff --git a/forge-gui/res/cardsfolder/c/celestine_reef.txt b/forge-gui/res/cardsfolder/c/celestine_reef.txt index fe5ed254da0..34a5685b47e 100644 --- a/forge-gui/res/cardsfolder/c/celestine_reef.txt +++ b/forge-gui/res/cardsfolder/c/celestine_reef.txt @@ -2,11 +2,11 @@ Name:Celestine Reef ManaCost:no cost Types:Plane Luvion S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.withoutFlying+withoutIslandwalk | AddHiddenKeyword$ CARDNAME can't attack. | Description$ Creatures without flying or islandwalk can't attack. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, until a player planeswalks, you can't lose the game and your opponents can't win the game. -SVar:RolledChaos:DB$ Effect | Name$ Celestine Reef Effect | StaticAbilities$ STCantlose,STCantWin | Triggers$ TrigPlaneswalk | Duration$ Permanent +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, until a player planeswalks, you can't lose the game and your opponents can't win the game. +SVar:RolledChaos:DB$ Effect | StaticAbilities$ STCantlose,STCantWin | Triggers$ TrigPlaneswalk | Duration$ Permanent SVar:STCantlose:Mode$ Continuous | EffectZone$ Command | Affected$ You | AddKeyword$ You can't lose the game. | Description$ Until a player planeswalks, you can't lose the game and your opponents can't win the game. -SVar:STCantWin:Mode$ Continuous | EffectZone$ Command | Affected$ Player.Opponent | AddKeyword$ You can't win the game. +SVar:STCantWin:Mode$ Continuous | EffectZone$ Command | Affected$ Opponent | AddKeyword$ You can't win the game. SVar:TrigPlaneswalk:Mode$ PlaneswalkedFrom | Execute$ DBCleanup | Static$ True SVar:DBCleanup:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:Creatures without flying or islandwalk can't attack.\nWhenever you roll {CHAOS}, until a player planeswalks, you can't lose the game and your opponents can't win the game. +Oracle:Creatures without flying or islandwalk can't attack.\nWhenever chaos ensues, until a player planeswalks, you can't lose the game and your opponents can't win the game. diff --git a/forge-gui/res/cardsfolder/c/cliffside_market.txt b/forge-gui/res/cardsfolder/c/cliffside_market.txt index 3a9bb257acd..04e5c42a145 100644 --- a/forge-gui/res/cardsfolder/c/cliffside_market.txt +++ b/forge-gui/res/cardsfolder/c/cliffside_market.txt @@ -4,8 +4,8 @@ Types:Plane Mercadia T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigLife | OptionalDecider$ You | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your upkeep, you may exchange life totals with target player. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigLife | TriggerZones$ Command | Secondary$ True | OptionalDecider$ You | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your upkeep, you may exchange life totals with target player. SVar:TrigLife:DB$ ExchangeLife | Optional$ True | ValidTgts$ Player | TgtPrompt$ Select target player to exchange life totals with -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, exchange control of two target permanents that share a card type. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, exchange control of two target permanents that share a card type. SVar:RolledChaos:DB$ ExchangeControl | TargetMin$ 2 | TargetMax$ 2 | ValidTgts$ Permanent | TgtPrompt$ Select target permanents that share a permanent type | TargetsWithSameCardType$ True AI:RemoveDeck:All AI:RemoveDeck:Random -Oracle:When you planeswalk to Cliffside Market or at the beginning of your upkeep, you may exchange life totals with target player.\nWhenever you roll {CHAOS}, exchange control of two target permanents that share a card type. +Oracle:When you planeswalk to Cliffside Market or at the beginning of your upkeep, you may exchange life totals with target player.\nWhenever chaos ensues, exchange control of two target permanents that share a card type. diff --git a/forge-gui/res/cardsfolder/e/edge_of_malacol.txt b/forge-gui/res/cardsfolder/e/edge_of_malacol.txt index 74b0cccf0ff..b35267a3cf5 100644 --- a/forge-gui/res/cardsfolder/e/edge_of_malacol.txt +++ b/forge-gui/res/cardsfolder/e/edge_of_malacol.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Belenon R:Event$ Untap | ActiveZones$ Command | ValidCard$ Creature.YouCtrl | ReplaceWith$ RepPutCounter | UntapStep$ True | Description$ If a creature you control would untap during your untap step, put two +1/+1 counters on it instead. SVar:RepPutCounter:DB$ PutCounter | Defined$ ReplacedCard | CounterType$ P1P1 | CounterNum$ 2 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, untap each creature you control. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, untap each creature you control. SVar:RolledChaos:DB$ UntapAll | ValidCards$ Creature.YouCtrl SVar:AIRollPlanarDieParams:Mode$ Always | HasCreatureInPlay$ True -Oracle:If a creature you control would untap during your untap step, put two +1/+1 counters on it instead.\nWhenever you roll {CHAOS}, untap each creature you control. +Oracle:If a creature you control would untap during your untap step, put two +1/+1 counters on it instead.\nWhenever chaos ensues, untap each creature you control. diff --git a/forge-gui/res/cardsfolder/e/eloren_wilds.txt b/forge-gui/res/cardsfolder/e/eloren_wilds.txt index ac7eb180887..f17a3ab34eb 100644 --- a/forge-gui/res/cardsfolder/e/eloren_wilds.txt +++ b/forge-gui/res/cardsfolder/e/eloren_wilds.txt @@ -3,10 +3,10 @@ ManaCost:no cost Types:Plane Shandalar T:Mode$ TapsForMana | ValidCard$ Permanent | Execute$ TrigMana | TriggerZones$ Command | Static$ True | TriggerDescription$ Whenever a player taps a permanent for mana, that player adds one mana of any type that permanent produced. SVar:TrigMana:DB$ ManaReflected | ColorOrType$ Type | ReflectProperty$ Produced | Defined$ TriggeredActivator -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, target player can't cast spells until a player planeswalks. -SVar:RolledChaos:DB$ Effect | ValidTgts$ Player | IsCurse$ True | Name$ Eloren Wilds Effect | StaticAbilities$ STCantCast | Triggers$ TrigPlaneswalk | RememberObjects$ Targeted | Duration$ Permanent +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, target player can't cast spells until a player planeswalks. +SVar:RolledChaos:DB$ Effect | ValidTgts$ Player | IsCurse$ True | StaticAbilities$ STCantCast | Triggers$ TrigPlaneswalk | RememberObjects$ Targeted | Duration$ Permanent SVar:STCantCast:Mode$ CantBeCast | EffectZone$ Command | ValidCard$ Card | Caster$ Player.IsRemembered | Description$ Target player can't cast spells until a player planeswalks. SVar:TrigPlaneswalk:Mode$ PlaneswalkedFrom | Execute$ ExileSelf | Static$ True SVar:ExileSelf:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:Whenever a player taps a permanent for mana, that player adds one mana of any type that permanent produced.\nWhenever you roll {CHAOS}, target player can't cast spells until a player planeswalks. +Oracle:Whenever a player taps a permanent for mana, that player adds one mana of any type that permanent produced.\nWhenever chaos ensues, target player can't cast spells until a player planeswalks. diff --git a/forge-gui/res/cardsfolder/e/extract_from_darkness.txt b/forge-gui/res/cardsfolder/e/extract_from_darkness.txt index 25e96fb7a2d..e7ae2c7ae97 100644 --- a/forge-gui/res/cardsfolder/e/extract_from_darkness.txt +++ b/forge-gui/res/cardsfolder/e/extract_from_darkness.txt @@ -1,9 +1,8 @@ Name:Extract from Darkness ManaCost:3 U B Types:Sorcery -A:SP$ Mill | Cost$ 3 U B | NumCards$ 2 | Defined$ Player | SubAbility$ DBChoose | SpellDescription$ Each player mills two cards. Then you put a creature card from a graveyard onto the battlefield under your control. -SVar:DBChoose:DB$ ChooseCard | Defined$ You | Choices$ Creature | ChoiceZone$ Graveyard | Mandatory$ True | SubAbility$ DBReturn -SVar:DBReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | Defined$ ChosenCard | GainControl$ True +A:SP$ Mill | NumCards$ 2 | Defined$ Player | SubAbility$ DBChoose | SpellDescription$ Each player mills two cards. +SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ChangeType$ Creature | ChangeNum$ 1 | Mandatory$ True | GainControl$ True | SelectPrompt$ Select a creature card to return to the battlefield | Hidden$ True | StackDescription$ SpellDescription | SpellDescription$ Then you put a creature card from a graveyard onto the battlefield under your control. AI:RemoveDeck:Random -DeckHas:Ability$Graveyard +DeckHas:Ability$Mill|Graveyard Oracle:Each player mills two cards. Then you put a creature card from a graveyard onto the battlefield under your control. diff --git a/forge-gui/res/cardsfolder/f/feeding_grounds.txt b/forge-gui/res/cardsfolder/f/feeding_grounds.txt index a4d558d56c7..80ad0ed8aed 100644 --- a/forge-gui/res/cardsfolder/f/feeding_grounds.txt +++ b/forge-gui/res/cardsfolder/f/feeding_grounds.txt @@ -3,8 +3,8 @@ ManaCost:no cost Types:Plane Muraganda S:Mode$ ReduceCost | EffectZone$ Command | ValidCard$ Card.Green | Type$ Spell | Amount$ 1 | Description$ Green spells cost {1} less to cast. S:Mode$ ReduceCost | EffectZone$ Command | ValidCard$ Card.Red | Type$ Spell | Amount$ 1 | Description$ Red spells cost {1} less to cast. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ DBPutCounter | TriggerDescription$ Whenever you roll {CHAOS}, put X +1/+1 counters on target creature, where X is that creature's mana value. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ DBPutCounter | TriggerDescription$ Whenever chaos ensues, put X +1/+1 counters on target creature, where X is that creature's mana value. SVar:DBPutCounter:DB$ PutCounter | ValidTgts$ Creature | TgtPrompt$ Select target creature | CounterType$ P1P1 | CounterNum$ Y SVar:Y:Targeted$CardManaCost SVar:AIRollPlanarDieParams:Mode$ Always | HasCreatureInPlay$ True -Oracle:Red spells cost {1} less to cast.\nGreen spells cost {1} less to cast.\nWhenever you roll {CHAOS}, put X +1/+1 counters on target creature, where X is that creature's mana value. +Oracle:Red spells cost {1} less to cast.\nGreen spells cost {1} less to cast.\nWhenever chaos ensues, put X +1/+1 counters on target creature, where X is that creature's mana value. diff --git a/forge-gui/res/cardsfolder/f/fields_of_summer.txt b/forge-gui/res/cardsfolder/f/fields_of_summer.txt index 69aa7773071..37c7b90f7db 100644 --- a/forge-gui/res/cardsfolder/f/fields_of_summer.txt +++ b/forge-gui/res/cardsfolder/f/fields_of_summer.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Moag T:Mode$ SpellCast | OptionalDecider$ TriggeredPlayer | TriggerZones$ Command | Execute$ LifeSummer | TriggerDescription$ Whenever a player casts a spell, that player may gain 2 life. SVar:LifeSummer:DB$ GainLife | Defined$ TriggeredPlayer | LifeAmount$ 2 -T:Mode$ PlanarDice | Result$ Chaos | OptionalDecider$ You | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, you may gain 10 life. +T:Mode$ ChaosEnsues | TriggerZones$ Command | OptionalDecider$ You | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you may gain 10 life. SVar:RolledChaos:DB$ GainLife | LifeAmount$ 10 | Defined$ You SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:Whenever a player casts a spell, that player may gain 2 life.\nWhenever you roll {CHAOS}, you may gain 10 life. +Oracle:Whenever a player casts a spell, that player may gain 2 life.\nWhenever chaos ensues, you may gain 10 life. diff --git a/forge-gui/res/cardsfolder/f/furnace_layer.txt b/forge-gui/res/cardsfolder/f/furnace_layer.txt index c07007cf2c1..93fccc2e662 100644 --- a/forge-gui/res/cardsfolder/f/furnace_layer.txt +++ b/forge-gui/res/cardsfolder/f/furnace_layer.txt @@ -6,7 +6,7 @@ T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ FurnaceDiscard | Tri SVar:FurnaceDiscard:DB$ Discard | ValidTgts$ Player | TargetsAtRandom$ True | NumCards$ 1 | Mode$ TgtChoose | RememberDiscarded$ True | SubAbility$ DBLoseLife SVar:DBLoseLife:DB$ LoseLife | Defined$ Targeted | LifeAmount$ 3 | ConditionDefined$ Remembered | ConditionPresent$ Land | ConditionCompare$ GE1 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | OptionalDecider$ You | TriggerDescription$ Whenever you roll {CHAOS}, you may destroy target nonland permanent. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | OptionalDecider$ You | TriggerDescription$ Whenever chaos ensues, you may destroy target nonland permanent. SVar:RolledChaos:DB$ Destroy | ValidTgts$ Permanent.nonLand | TgtPrompt$ Select target nonland permanent to destroy SVar:AIRollPlanarDieParams:Mode$ Always | MinTurn$ 3 | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:When you planeswalk to Furnace Layer or at the beginning of your upkeep, select target player at random. That player discards a card. If that player discards a land card this way, they lose 3 life.\nWhenever you roll {CHAOS}, you may destroy target nonland permanent. +Oracle:When you planeswalk to Furnace Layer or at the beginning of your upkeep, select target player at random. That player discards a card. If that player discards a land card this way, they lose 3 life.\nWhenever chaos ensues, you may destroy target nonland permanent. diff --git a/forge-gui/res/cardsfolder/g/gavony.txt b/forge-gui/res/cardsfolder/g/gavony.txt index 9386453d0fa..8746a233101 100644 --- a/forge-gui/res/cardsfolder/g/gavony.txt +++ b/forge-gui/res/cardsfolder/g/gavony.txt @@ -2,7 +2,7 @@ Name:Gavony ManaCost:no cost Types:Plane Innistrad S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature | AddKeyword$ Vigilance | Description$ All creatures have vigilance. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, creatures you control gain indestructible until end of turn. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, creatures you control gain indestructible until end of turn. SVar:RolledChaos:DB$ PumpAll | ValidCards$ Creature.YouCtrl | KW$ Indestructible SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:All creatures have vigilance.\nWhenever you roll {CHAOS}, creatures you control gain indestructible until end of turn. +Oracle:All creatures have vigilance.\nWhenever chaos ensues, creatures you control gain indestructible until end of turn. diff --git a/forge-gui/res/cardsfolder/g/glen_elendra.txt b/forge-gui/res/cardsfolder/g/glen_elendra.txt index f4c0254ef80..4ed1763304f 100644 --- a/forge-gui/res/cardsfolder/g/glen_elendra.txt +++ b/forge-gui/res/cardsfolder/g/glen_elendra.txt @@ -4,7 +4,7 @@ Types:Plane Lorwyn T:Mode$ Phase | Phase$ EndCombat | ValidPlayer$ You | TriggerZones$ Command | OptionalDecider$ You | Execute$ TrigExchange | TriggerDescription$ At end of combat, you may exchange control of target creature you control that dealt combat damage to a player this combat and target creature that player controls. SVar:TrigExchange:DB$ Pump | ValidTgts$ Creature.YouCtrl+dealtCombatDamageThisCombat | TgtPrompt$ Select target creature you control that dealt combat damage to a player | SubAbility$ DBExchange SVar:DBExchange:DB$ ExchangeControl | Defined$ ParentTarget | ValidTgts$ Creature.ControlledBy Player.wasDealtCombatDamageThisCombatBy ParentTarget | TgtPrompt$ Select target creature that player controls. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, gain control of target creature you own. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, gain control of target creature you own. SVar:RolledChaos:DB$ GainControl | ValidTgts$ Creature.YouOwn | TgtPrompt$ Select target creature you own to gain control of AI:RemoveDeck:All -Oracle:At end of combat, you may exchange control of target creature you control that dealt combat damage to a player this combat and target creature that player controls.\nWhenever you roll {CHAOS}, gain control of target creature you own. +Oracle:At end of combat, you may exchange control of target creature you control that dealt combat damage to a player this combat and target creature that player controls.\nWhenever chaos ensues, gain control of target creature you own. diff --git a/forge-gui/res/cardsfolder/g/glimmervoid_basin.txt b/forge-gui/res/cardsfolder/g/glimmervoid_basin.txt index d500b16b03b..54163fcbb34 100644 --- a/forge-gui/res/cardsfolder/g/glimmervoid_basin.txt +++ b/forge-gui/res/cardsfolder/g/glimmervoid_basin.txt @@ -3,8 +3,8 @@ ManaCost:no cost Types:Plane Mirrodin T:Mode$ SpellCast | ValidSA$ Instant.singleTarget,Sorcery.singleTarget | Execute$ TrigCopy | TriggerZones$ Command | TriggerDescription$ Whenever a player casts an instant or sorcery spell with a single target, that player copies that spell for each other spell, permanent, card not on the battlefield, and/or player the spell could target. Each copy targets a different one of them. SVar:TrigCopy:DB$ CopySpellAbility | Defined$ TriggeredSpellAbility | Controller$ TriggeredActivator | CopyForEachCanTarget$ Spell,Permanent,Card,Player -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, choose target creature. Each player except that creature's controller creates a token that's a copy of that creature. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, choose target creature. Each player except that creature's controller creates a token that's a copy of that creature. SVar:RolledChaos:DB$ RepeatEach | RepeatPlayers$ NonTargetedController | RepeatSubAbility$ DBCopy | ValidTgts$ Creature | TgtPrompt$ Select target creature | ChangeZoneTable$ True SVar:DBCopy:DB$ CopyPermanent | Defined$ ParentTarget | Controller$ Remembered AI:RemoveDeck:All -Oracle:Whenever a player casts an instant or sorcery spell with a single target, that player copies that spell for each other spell, permanent, card not on the battlefield, and/or player the spell could target. Each copy targets a different one of them.\nWhenever you roll {CHAOS}, choose target creature. Each player except that creature's controller creates a token that's a copy of that creature. +Oracle:Whenever a player casts an instant or sorcery spell with a single target, that player copies that spell for each other spell, permanent, card not on the battlefield, and/or player the spell could target. Each copy targets a different one of them.\nWhenever chaos ensues, choose target creature. Each player except that creature's controller creates a token that's a copy of that creature. diff --git a/forge-gui/res/cardsfolder/g/goldmeadow.txt b/forge-gui/res/cardsfolder/g/goldmeadow.txt index ad1bfa832f9..b1dca3f9091 100644 --- a/forge-gui/res/cardsfolder/g/goldmeadow.txt +++ b/forge-gui/res/cardsfolder/g/goldmeadow.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Lorwyn T:Mode$ ChangesZone | ValidCard$ Land | Destination$ Battlefield | Execute$ TripleGoat | TriggerZones$ Command | TriggerDescription$ Whenever a land enters the battlefield, that land's controller creates three 0/1 white Goat creature tokens. SVar:TripleGoat:DB$ Token | TokenScript$ w_0_1_goat | TokenOwner$ TriggeredCardController | TokenAmount$ 3 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, create a 0/1 white Goat creature token. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, create a 0/1 white Goat creature token. SVar:RolledChaos:DB$ Token | TokenScript$ w_0_1_goat | TokenOwner$ You | TokenAmount$ 1 SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:Whenever a land enters the battlefield, that land's controller creates three 0/1 white Goat creature tokens.\nWhenever you roll {CHAOS}, create a 0/1 white Goat creature token. +Oracle:Whenever a land enters the battlefield, that land's controller creates three 0/1 white Goat creature tokens.\nWhenever chaos ensues, create a 0/1 white Goat creature token. diff --git a/forge-gui/res/cardsfolder/g/grand_ossuary.txt b/forge-gui/res/cardsfolder/g/grand_ossuary.txt index 9ea1d1844d8..28154d3bab0 100644 --- a/forge-gui/res/cardsfolder/g/grand_ossuary.txt +++ b/forge-gui/res/cardsfolder/g/grand_ossuary.txt @@ -5,7 +5,7 @@ T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ SVar:OssuaryCounters:DB$ PutCounter | ValidTgts$ Creature | TargetsWithDefinedController$ TriggeredCardController | TargetingPlayer$ TriggeredCardController | TgtPrompt$ Select target creature you control to distribute counters to | CounterType$ P1P1 | CounterNum$ OssuaryX | TargetMin$ 1 | TargetMax$ MaxTgts | DividedAsYouChoose$ OssuaryX SVar:OssuaryX:TriggeredCard$CardPower SVar:MaxTgts:TriggeredCardController$Valid Creature.YouCtrl -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, each player exiles all creatures they control and creates X 1/1 green Saproling creature tokens, where X is the total power of the creatures they exiled this way. Then planeswalk. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, each player exiles all creatures they control and creates X 1/1 green Saproling creature tokens, where X is the total power of the creatures they exiled this way. Then planeswalk. SVar:RolledChaos:DB$ ChangeZoneAll | ChangeType$ Creature | Imprint$ True | Origin$ Battlefield | Destination$ Exile | SubAbility$ OssuaryRepeat SVar:OssuaryRepeat:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ OssuaryTokens | SubAbility$ WalkAway | ChangeZoneTable$ True SVar:OssuaryTokens:DB$ Token | TokenAmount$ OsX | TokenScript$ g_1_1_saproling | TokenOwner$ Player.IsRemembered @@ -13,4 +13,4 @@ SVar:WalkAway:DB$ Planeswalk | SubAbility$ ClearImprinted SVar:ClearImprinted:DB$ Cleanup | ClearImprinted$ True SVar:OsX:ImprintedLKI$FilterControlledByRemembered_CardPower SVar:AIRollPlanarDieParams:Mode$ Random | MinTurn$ 5 -Oracle:Whenever a creature dies, its controller distributes a number of +1/+1 counters equal to its power among any number of target creatures they control.\nWhenever you roll {CHAOS}, each player exiles all creatures they control and creates X 1/1 green Saproling creature tokens, where X is the total power of the creatures they exiled this way. Then planeswalk. +Oracle:Whenever a creature dies, its controller distributes a number of +1/+1 counters equal to its power among any number of target creatures they control.\nWhenever chaos ensues, each player exiles all creatures they control and creates X 1/1 green Saproling creature tokens, where X is the total power of the creatures they exiled this way. Then planeswalk. diff --git a/forge-gui/res/cardsfolder/g/grixis.txt b/forge-gui/res/cardsfolder/g/grixis.txt index b41573bb3fa..8c213eafeb7 100644 --- a/forge-gui/res/cardsfolder/g/grixis.txt +++ b/forge-gui/res/cardsfolder/g/grixis.txt @@ -2,7 +2,7 @@ Name:Grixis ManaCost:no cost Types:Plane Alara S:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Graveyard | Affected$ Creature.YouOwn+Blue,Creature.YouOwn+Red,Creature.YouOwn+Black | AddKeyword$ Unearth:CardManaCost | Description$ Blue, black, and/or red creature cards in your graveyard have unearth. The unearth cost is equal to the card's mana cost. (Pay the card's mana cost: Return it to the battlefield. The creature gains haste. Exile it at the beginning of the next end step or if it would leave the battlefield. Unearth only as a sorcery.) -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, put target creature card from a graveyard onto the battlefield under your control. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, put target creature card from a graveyard onto the battlefield under your control. SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | GainControl$ True | TgtPrompt$ Choose target creature card in a graveyard | ValidTgts$ Creature SVar:AIRollPlanarDieParams:Mode$ Always | MinTurn$ 3 | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:Blue, black, and/or red creature cards in your graveyard have unearth. The unearth cost is equal to the card's mana cost. (Pay the card's mana cost: Return it to the battlefield. The creature gains haste. Exile it at the beginning of the next end step or if it would leave the battlefield. Unearth only as a sorcery.)\nWhenever you roll {CHAOS}, put target creature card from a graveyard onto the battlefield under your control. +Oracle:Blue, black, and/or red creature cards in your graveyard have unearth. The unearth cost is equal to the card's mana cost. (Pay the card's mana cost: Return it to the battlefield. The creature gains haste. Exile it at the beginning of the next end step or if it would leave the battlefield. Unearth only as a sorcery.)\nWhenever chaos ensues, put target creature card from a graveyard onto the battlefield under your control. diff --git a/forge-gui/res/cardsfolder/g/grove_of_the_dreampods.txt b/forge-gui/res/cardsfolder/g/grove_of_the_dreampods.txt index 2b194426e3c..987afd9de8c 100644 --- a/forge-gui/res/cardsfolder/g/grove_of_the_dreampods.txt +++ b/forge-gui/res/cardsfolder/g/grove_of_the_dreampods.txt @@ -4,7 +4,7 @@ Types:Plane Fabacin T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ DreampodsDig | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your upkeep, reveal cards from the top of your library until you reveal a creature card. Put that card onto the battlefield and the rest on the bottom of your library in a random order. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ DreampodsDig | TriggerZones$ Command | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your upkeep, reveal cards from the top of your library until you reveal a creature card. Put that card onto the battlefield and the rest on the bottom of your library in a random order. SVar:DreampodsDig:DB$ DigUntil | Valid$ Creature | ValidDescription$ creature | FoundDestination$ Battlefield | RevealedDestination$ Library | RevealedLibraryPosition$ -1 | RevealRandomOrder$ True -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, return target creature card from your graveyard to the battlefield. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return target creature card from your graveyard to the battlefield. SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | TgtPrompt$ Choose target creature card in your graveyard | ValidTgts$ Creature.YouCtrl SVar:AIRollPlanarDieParams:Mode$ Always | MinTurn$ 3 -Oracle:When you planeswalk to Grove of the Dreampods or at the beginning of your upkeep, reveal cards from the top of your library until you reveal a creature card. Put that card onto the battlefield and the rest on the bottom of your library in a random order.\nWhenever you roll {CHAOS}, return target creature card from your graveyard to the battlefield. +Oracle:When you planeswalk to Grove of the Dreampods or at the beginning of your upkeep, reveal cards from the top of your library until you reveal a creature card. Put that card onto the battlefield and the rest on the bottom of your library in a random order.\nWhenever chaos ensues, return target creature card from your graveyard to the battlefield. diff --git a/forge-gui/res/cardsfolder/g/guardian_of_faith.txt b/forge-gui/res/cardsfolder/g/guardian_of_faith.txt index 243dc3fa146..38fa19187c5 100644 --- a/forge-gui/res/cardsfolder/g/guardian_of_faith.txt +++ b/forge-gui/res/cardsfolder/g/guardian_of_faith.txt @@ -5,6 +5,6 @@ PT:3/2 K:Flash K:Vigilance T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPhaseOut | TriggerDescription$ When CARDNAME enters the battlefield, any number of other target creatures you control phase out. (Treat them and anything attached to them as though they don't exist until their controller's next turn.) -SVar:TrigPhaseOut:DB$ Phases | ValidTgts$ Creature.Other+YouCtrl | TgtPrompt$ Select other creature | TargetMin$ 0 | TargetMax$ MaxTgts | SelectPrompt$ Choose any number of creatures you control | Duration$ UntilHostLeavesPlay +SVar:TrigPhaseOut:DB$ Phases | ValidTgts$ Creature.Other+YouCtrl | TgtPrompt$ Select any number of other target creatures you control | TargetMin$ 0 | TargetMax$ MaxTgts SVar:MaxTgts:Count$Valid Creature.Other+YouCtrl Oracle:Flash\nVigilance\nWhen Guardian of Faith enters the battlefield, any number of other target creatures you control phase out. (Treat them and anything attached to them as though they don't exist until their controller's next turn.) diff --git a/forge-gui/res/cardsfolder/h/hedron_fields_of_agadeem.txt b/forge-gui/res/cardsfolder/h/hedron_fields_of_agadeem.txt index 581b7282b6c..30fd2e83ce7 100644 --- a/forge-gui/res/cardsfolder/h/hedron_fields_of_agadeem.txt +++ b/forge-gui/res/cardsfolder/h/hedron_fields_of_agadeem.txt @@ -2,7 +2,7 @@ Name:Hedron Fields of Agadeem ManaCost:no cost Types:Plane Zendikar S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.powerGE7 | AddHiddenKeyword$ CARDNAME can't attack or block. | Description$ Creatures with power 7 or greater can't attack or block. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, create a 7/7 colorless Eldrazi creature token with annihilator 1. (Whenever it attacks, defending player sacrifices a permanent.) -SVar:RolledChaos:DB$ Token | TokenAmount$ 1 | TokenScript$ c_7_7_eldrazi_annihilator | TokenOwner$ You +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, create a 7/7 colorless Eldrazi creature token with annihilator 1. (Whenever it attacks, defending player sacrifices a permanent.) +SVar:RolledChaos:DB$ Token | TokenScript$ c_7_7_eldrazi_annihilator SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:Creatures with power 7 or greater can't attack or block.\nWhenever you roll {CHAOS}, create a 7/7 colorless Eldrazi creature token with annihilator 1. (Whenever it attacks, defending player sacrifices a permanent.) +Oracle:Creatures with power 7 or greater can't attack or block.\nWhenever chaos ensues, create a 7/7 colorless Eldrazi creature token with annihilator 1. (Whenever it attacks, defending player sacrifices a permanent.) diff --git a/forge-gui/res/cardsfolder/h/horizon_boughs.txt b/forge-gui/res/cardsfolder/h/horizon_boughs.txt index cabe1ece4ff..06fad108964 100644 --- a/forge-gui/res/cardsfolder/h/horizon_boughs.txt +++ b/forge-gui/res/cardsfolder/h/horizon_boughs.txt @@ -2,7 +2,7 @@ Name:Horizon Boughs ManaCost:no cost Types:Plane Pyrulea S:Mode$ Continuous | EffectZone$ Command | Affected$ Permanent | AddHiddenKeyword$ CARDNAME untaps during each other player's untap step. | Description$ All permanents untap during each player's untap step. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ DBFetch | TriggerDescription$ Whenever you roll {CHAOS}, you may search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ DBFetch | TriggerDescription$ Whenever chaos ensues, you may search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle. SVar:DBFetch:DB$ ChangeZone | Origin$ Library | Destination$ Battlefield | Tapped$ True | ChangeType$ Land.Basic | ChangeNum$ 3 | ShuffleNonMandatory$ True SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:All permanents untap during each player's untap step.\nWhenever you roll {CHAOS}, you may search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle. +Oracle:All permanents untap during each player's untap step.\nWhenever chaos ensues, you may search your library for up to three basic land cards, put them onto the battlefield tapped, then shuffle. diff --git a/forge-gui/res/cardsfolder/i/immersturm.txt b/forge-gui/res/cardsfolder/i/immersturm.txt index ab5044d5467..52038fe830c 100644 --- a/forge-gui/res/cardsfolder/i/immersturm.txt +++ b/forge-gui/res/cardsfolder/i/immersturm.txt @@ -4,9 +4,9 @@ Types:Plane Valla T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature | TriggerZones$ Command | Execute$ TrigDamage | OptionalDecider$ TriggeredCardController | TriggerDescription$ Whenever a creature enters the battlefield, that creature's controller may have it deal damage equal to its power to any target of their choice. SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Any | NumDmg$ Y | DamageSource$ TriggeredCard | TargetingPlayer$ TriggeredCardController SVar:Y:TriggeredCard$CardPower -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, exile target creature, then return it to the battlefield under its owner's control. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, exile target creature, then return it to the battlefield under its owner's control. SVar:RolledChaos:DB$ ChangeZone | ValidTgts$ Creature | Origin$ Battlefield | Destination$ Exile | RememberTargets$ True | SubAbility$ RestorationReturn SVar:RestorationReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:AIRollPlanarDieParams:Mode$ Always | HasCreatureInPlay$ True -Oracle:Whenever a creature enters the battlefield, that creature's controller may have it deal damage equal to its power to any target of their choice.\nWhenever you roll {CHAOS}, exile target creature, then return it to the battlefield under its owner's control. +Oracle:Whenever a creature enters the battlefield, that creature's controller may have it deal damage equal to its power to any target of their choice.\nWhenever chaos ensues, exile target creature, then return it to the battlefield under its owner's control. diff --git a/forge-gui/res/cardsfolder/i/incremental_growth.txt b/forge-gui/res/cardsfolder/i/incremental_growth.txt index e9090bc7128..f6644860a8f 100644 --- a/forge-gui/res/cardsfolder/i/incremental_growth.txt +++ b/forge-gui/res/cardsfolder/i/incremental_growth.txt @@ -1,7 +1,7 @@ Name:Incremental Growth ManaCost:3 G G Types:Sorcery -A:SP$ PutCounter | Cost$ 3 G G | ValidTgts$ Creature | TgtPrompt$ Select target creature | TargetUnique$ True | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBPutTwo | SpellDescription$ Put a +1/+1 counter on target creature, two +1/+1 counters on another target creature, and three +1/+1 counters on a third target creature. +A:SP$ PutCounter | ValidTgts$ Creature | TargetUnique$ True | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBPutTwo | SpellDescription$ Put a +1/+1 counter on target creature, two +1/+1 counters on another target creature, and three +1/+1 counters on a third target creature. SVar:DBPutTwo:DB$ PutCounter | ValidTgts$ Creature | TgtPrompt$ Select another target creature | TargetUnique$ True | CounterType$ P1P1 | CounterNum$ 2 | SubAbility$ DBPutThree SVar:DBPutThree:DB$ PutCounter | ValidTgts$ Creature | TgtPrompt$ Select a third target creature | TargetUnique$ True | CounterType$ P1P1 | CounterNum$ 3 DeckHas:Ability$Counters diff --git a/forge-gui/res/cardsfolder/i/interplanar_tunnel.txt b/forge-gui/res/cardsfolder/i/interplanar_tunnel.txt index b51e88b5131..5bde7091ffc 100644 --- a/forge-gui/res/cardsfolder/i/interplanar_tunnel.txt +++ b/forge-gui/res/cardsfolder/i/interplanar_tunnel.txt @@ -2,6 +2,9 @@ Name:Interplanar Tunnel ManaCost:no cost Types:Phenomenon T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigDig | TriggerDescription$ When you encounter CARDNAME, reveal cards from the top of your planar deck until you reveal five plane cards. Put a plane card from among them on top of your planar deck, then put the rest of the revealed cards on the bottom in a random order. (Then planeswalk away from this phenomenon.) -SVar:TrigDig:DB$ Dig | DigNum$ 5 | ChangeNum$ 1 | SourceZone$ PlanarDeck | DestinationZone$ PlanarDeck | DestinationZone2$ PlanarDeck | LibraryPosition$ 0 | ChangeValid$ Plane | RestRandomOrder$ True | SubAbility$ Replaneswalk -SVar:Replaneswalk:DB$ Planeswalk | Cost$ 0 +SVar:TrigDig:DB$ DigUntil | Amount$ 5 | Valid$ Plane | DigZone$ PlanarDeck | ImprintFound$ True | RememberRevealed$ True | FoundDestination$ PlanarDeck | RevealedDestination$ PlanarDeck | SubAbility$ DBPutOnTop +SVar:PutOnTop:DB$ ChangeZone | ChangeType$ Card.IsImprinted | Origin$ PlanarDeck | Destination$ PlanarDeck | LibraryPosition$ 0 | ForgetChanged$ True | SubAbility$ DBRestOnBottom +SVar:RestOnBottom:DB$ ChangeZone | Defined$ Remembered | Origin$ PlanarDeck | Destination$ PlanarDeck | LibraryPosition$ -1 | RandomOrder$ True | SubAbility$ Replaneswalk +SVar:Replaneswalk:DB$ Planeswalk | Cost$ 0 | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True Oracle:When you encounter Interplanar Tunnel, reveal cards from the top of your planar deck until you reveal five plane cards. Put a plane card from among them on top of your planar deck, then put the rest of the revealed cards on the bottom in a random order. (Then planeswalk away from this phenomenon.) diff --git a/forge-gui/res/cardsfolder/i/isle_of_vesuva.txt b/forge-gui/res/cardsfolder/i/isle_of_vesuva.txt index 73343704809..2406a4040b3 100644 --- a/forge-gui/res/cardsfolder/i/isle_of_vesuva.txt +++ b/forge-gui/res/cardsfolder/i/isle_of_vesuva.txt @@ -3,8 +3,8 @@ ManaCost:no cost Types:Plane Dominaria T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.nonToken | TriggerZones$ Command | Execute$ TrigVesuvaCopy | TriggerDescription$ Whenever a nontoken creature enters the battlefield, its controller creates a token that's a copy of that creature. SVar:TrigVesuvaCopy:DB$ CopyPermanent | Defined$ TriggeredCardLKICopy | Controller$ TriggeredCardController -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, destroy target creature and all other creatures with the same name as that creature. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, destroy target creature and all other creatures with the same name as that creature. SVar:RolledChaos:DB$ Destroy | ValidTgts$ Creature | SubAbility$ DestroyOtherAll SVar:DestroyOtherAll:DB$ DestroyAll | ValidCards$ Targeted.sameName+Other SVar:AIRollPlanarDieParams:Mode$ Always | OppHasCreatureInPlay$ True -Oracle:Whenever a nontoken creature enters the battlefield, its controller creates a token that's a copy of that creature.\nWhenever you roll {CHAOS}, destroy target creature and all other creatures with the same name as that creature. +Oracle:Whenever a nontoken creature enters the battlefield, its controller creates a token that's a copy of that creature.\nWhenever chaos ensues, destroy target creature and all other creatures with the same name as that creature. diff --git a/forge-gui/res/cardsfolder/i/izzet_steam_maze.txt b/forge-gui/res/cardsfolder/i/izzet_steam_maze.txt index 85e00e4bbef..fb5553eca90 100644 --- a/forge-gui/res/cardsfolder/i/izzet_steam_maze.txt +++ b/forge-gui/res/cardsfolder/i/izzet_steam_maze.txt @@ -3,8 +3,8 @@ ManaCost:no cost Types:Plane Ravnica T:Mode$ SpellCast | ValidCard$ Instant,Sorcery | ValidActivatingPlayer$ Player | Execute$ TrigCopy | TriggerZones$ Command | TriggerDescription$ Whenever a player casts an instant or sorcery spell, that player copies it. The player may choose new targets for the copy. SVar:TrigCopy:DB$ CopySpellAbility | Defined$ TriggeredSpellAbility | Controller$ TriggeredActivator | MayChooseTarget$ True -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, instant and sorcery spells you cast this turn cost {3} less to cast. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, instant and sorcery spells you cast this turn cost {3} less to cast. SVar:RolledChaos:DB$ Effect | StaticAbilities$ ReduceSPcost SVar:ReduceSPcost:Mode$ ReduceCost | EffectZone$ Command | ValidCard$ Instant,Sorcery | Type$ Spell | Activator$ You | Amount$ 3 | Description$ Instant and sorcery spells you cast this turn cost 3 less to cast. SVar:AIRollPlanarDieParams:Mode$ Always | RollInMain1$ True -Oracle:Whenever a player casts an instant or sorcery spell, that player copies it. The player may choose new targets for the copy.\nWhenever you roll {CHAOS}, instant and sorcery spells you cast this turn cost {3} less to cast. +Oracle:Whenever a player casts an instant or sorcery spell, that player copies it. The player may choose new targets for the copy.\nWhenever chaos ensues, instant and sorcery spells you cast this turn cost {3} less to cast. diff --git a/forge-gui/res/cardsfolder/j/jund.txt b/forge-gui/res/cardsfolder/j/jund.txt index b7f201d24a8..cf49426e987 100644 --- a/forge-gui/res/cardsfolder/j/jund.txt +++ b/forge-gui/res/cardsfolder/j/jund.txt @@ -3,6 +3,6 @@ ManaCost:no cost Types:Plane Alara T:Mode$ SpellCast | ValidCard$ Creature.Black,Creature.Red,Creature.Green | ValidActivatingPlayer$ Player | TriggerZones$ Command | Execute$ DevourPump | TriggerDescription$ Whenever a player casts a black, red, or green creature spell, it gains devour 5. (As the creature enters the battlefield, its controller may sacrifice any number of creatures. The creature enters the battlefield with five times that many +1/+1 counters on it.) SVar:DevourPump:DB$ Animate | Defined$ TriggeredCard | Keywords$ Devour:5 | Duration$ Permanent -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, create two 1/1 red Goblin creature tokens. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, create two 1/1 red Goblin creature tokens. SVar:RolledChaos:DB$ Token | TokenAmount$ 2 | TokenScript$ r_1_1_goblin | TokenOwner$ You -Oracle:Whenever a player casts a black, red, or green creature spell, it gains devour 5. (As the creature enters the battlefield, its controller may sacrifice any number of creatures. The creature enters the battlefield with five times that many +1/+1 counters on it.)\nWhenever you roll {CHAOS}, create two 1/1 red Goblin creature tokens. +Oracle:Whenever a player casts a black, red, or green creature spell, it gains devour 5. (As the creature enters the battlefield, its controller may sacrifice any number of creatures. The creature enters the battlefield with five times that many +1/+1 counters on it.)\nWhenever chaos ensues, create two 1/1 red Goblin creature tokens. diff --git a/forge-gui/res/cardsfolder/k/kessig.txt b/forge-gui/res/cardsfolder/k/kessig.txt index 84df9c6738a..e25bc15a0d7 100644 --- a/forge-gui/res/cardsfolder/k/kessig.txt +++ b/forge-gui/res/cardsfolder/k/kessig.txt @@ -2,8 +2,8 @@ Name:Kessig ManaCost:no cost Types:Plane Innistrad R:Event$ DamageDone | Prevent$ True | IsCombat$ True | ValidSource$ Creature.nonWerewolf | Description$ Prevent all combat damage that would be dealt by non-Werewolf creatures. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, each creature you control gets +2/+2, gains trample, and becomes a Werewolf in addition to its other types until end of turn. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, each creature you control gets +2/+2, gains trample, and becomes a Werewolf in addition to its other types until end of turn. SVar:RolledChaos:DB$ AnimateAll | ValidCards$ Creature.YouCtrl | Types$ Werewolf | SubAbility$ DBPump SVar:DBPump:DB$ PumpAll | ValidCards$ Creature.YouCtrl | KW$ Trample | NumAtt$ 2 | NumDef$ 2 SVar:AIRollPlanarDieParams:Mode$ Always | RollInMain1$ True | HasCreatureInPlay$ True -Oracle:Prevent all combat damage that would be dealt by non-Werewolf creatures.\nWhenever you roll {CHAOS}, each creature you control gets +2/+2, gains trample, and becomes a Werewolf in addition to its other types until end of turn. +Oracle:Prevent all combat damage that would be dealt by non-Werewolf creatures.\nWhenever chaos ensues, each creature you control gets +2/+2, gains trample, and becomes a Werewolf in addition to its other types until end of turn. diff --git a/forge-gui/res/cardsfolder/k/kharasha_foothills.txt b/forge-gui/res/cardsfolder/k/kharasha_foothills.txt index 7e0d3d1f088..a33d458eb97 100644 --- a/forge-gui/res/cardsfolder/k/kharasha_foothills.txt +++ b/forge-gui/res/cardsfolder/k/kharasha_foothills.txt @@ -7,10 +7,10 @@ SVar:DBCopy:DB$ CopyPermanent | Defined$ TriggeredAttacker | NumCopies$ 1 | Toke # The DelayedTrigger is for all player, not just for each attacking, so can't use AtEOT there SVar:DelTrig:DB$ DelayedTrigger | Mode$ Phase | Phase$ End Of Turn | Execute$ TrigExile | RememberObjects$ ImprintedLKI | TriggerDescription$ At the beginning of the next end step, exile those tokens. | SubAbility$ DBCleanup SVar:TrigExile:DB$ ChangeZone | Defined$ DelayTriggerRememberedLKI | Origin$ Battlefield | Destination$ Exile -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, you may sacrifice any number of creatures. If you do, CARDNAME deals that much damage to target creature. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you may sacrifice any number of creatures. If you do, CARDNAME deals that much damage to target creature. SVar:RolledChaos:DB$ Sacrifice | Defined$ You | Amount$ SacX | SacValid$ Creature | RememberSacrificed$ True | Optional$ True | SubAbility$ DBDmg SVar:SacX:Count$Valid Creature.YouCtrl SVar:DBDmg:DB$ DealDamage | ValidTgts$ Creature | NumDmg$ DmgX | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True SVar:DmgX:Remembered$Amount -Oracle:Whenever a creature you control attacks a player, for each other opponent, you may create a token that's a copy of that creature, tapped and attacking that opponent. Exile those tokens at the beginning of the next end step.\nWhenever you roll {CHAOS}, you may sacrifice any number of creatures. If you do, Kharasha Foothills deals that much damage to target creature. +Oracle:Whenever a creature you control attacks a player, for each other opponent, you may create a token that's a copy of that creature, tapped and attacking that opponent. Exile those tokens at the beginning of the next end step.\nWhenever chaos ensues, you may sacrifice any number of creatures. If you do, Kharasha Foothills deals that much damage to target creature. diff --git a/forge-gui/res/cardsfolder/k/kilnspire_district.txt b/forge-gui/res/cardsfolder/k/kilnspire_district.txt index c7fdbd02d14..5064f909446 100644 --- a/forge-gui/res/cardsfolder/k/kilnspire_district.txt +++ b/forge-gui/res/cardsfolder/k/kilnspire_district.txt @@ -5,9 +5,9 @@ T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ PutCounter | TriggerDes T:Mode$ Phase | PreCombatMain$ True | ValidPlayer$ You | TriggerZones$ Command | Execute$ PutCounter | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your precombat main phase, put a charge counter on CARDNAME, then add {R} for each charge counter on it. SVar:PutCounter:DB$ PutCounter | Defined$ Self | CounterType$ CHARGE | CounterNum$ 1 | SubAbility$ DBMana SVar:DBMana:DB$ Mana | Produced$ R | Amount$ Y -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, you may pay {X}. If you do, CARDNAME deals X damage to any target. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you may pay {X}. If you do, CARDNAME deals X damage to any target. SVar:RolledChaos:AB$ DealDamage | Cost$ X | ValidTgts$ Any | NumDmg$ X SVar:X:Count$xPaid SVar:Y:Count$CardCounters.CHARGE SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:When you planeswalk to Kilnspire District or at the beginning of your precombat main phase, put a charge counter on Kilnspire District, then add {R} for each charge counter on it.\nWhenever you roll {CHAOS}, you may pay {X}. If you do, Kilnspire District deals X damage to any target. +Oracle:When you planeswalk to Kilnspire District or at the beginning of your precombat main phase, put a charge counter on Kilnspire District, then add {R} for each charge counter on it.\nWhenever chaos ensues, you may pay {X}. If you do, Kilnspire District deals X damage to any target. diff --git a/forge-gui/res/cardsfolder/k/krosa.txt b/forge-gui/res/cardsfolder/k/krosa.txt index 4db4f3f0550..dc8909f0c61 100644 --- a/forge-gui/res/cardsfolder/k/krosa.txt +++ b/forge-gui/res/cardsfolder/k/krosa.txt @@ -2,7 +2,7 @@ Name:Krosa ManaCost:no cost Types:Plane Dominaria S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature | AddPower$ 2 | AddToughness$ 2 | Description$ All creatures get +2/+2. -T:Mode$ PlanarDice | Result$ Chaos | OptionalDecider$ You | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, you may add {W}{U}{B}{R}{G}. +T:Mode$ ChaosEnsues | TriggerZones$ Command | OptionalDecider$ You | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you may add {W}{U}{B}{R}{G}. SVar:RolledChaos:DB$ Mana | Produced$ W U B R G SVar:AIRollPlanarDieParams:Mode$ Always | RollInMain1$ True -Oracle:All creatures get +2/+2.\nWhenever you roll {CHAOS}, you may add {W}{U}{B}{R}{G}. +Oracle:All creatures get +2/+2.\nWhenever chaos ensues, you may add {W}{U}{B}{R}{G}. diff --git a/forge-gui/res/cardsfolder/l/lair_of_the_ashen_idol.txt b/forge-gui/res/cardsfolder/l/lair_of_the_ashen_idol.txt index ca9dfeded64..0f58bfad40e 100644 --- a/forge-gui/res/cardsfolder/l/lair_of_the_ashen_idol.txt +++ b/forge-gui/res/cardsfolder/l/lair_of_the_ashen_idol.txt @@ -6,7 +6,7 @@ SVar:SacToIdol:DB$ Sacrifice | Defined$ You | SacValid$ Creature | SubAbility$ I SVar:IdolWalk:DB$ Planeswalk | ConditionCheckSVar$ IdolX | ConditionSVarCompare$ EQ0 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:IdolX:Remembered$Amount -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, any number of target players each create a 2/2 black Zombie creature token. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, any number of target players each create a 2/2 black Zombie creature token. SVar:RolledChaos:DB$ Token | ValidTgts$ Player | TgtPrompt$ Select target player to receive zombie token | TargetMin$ 0 | TargetMax$ MaxTgt | TokenScript$ b_2_2_zombie | TokenOwner$ Targeted | TokenAmount$ 1 SVar:MaxTgt:PlayerCountPlayers$Amount -Oracle:At the beginning of your upkeep, sacrifice a creature. If you can't, planeswalk.\nWhenever you roll {CHAOS}, any number of target players each create a 2/2 black Zombie creature token. +Oracle:At the beginning of your upkeep, sacrifice a creature. If you can't, planeswalk.\nWhenever chaos ensues, any number of target players each create a 2/2 black Zombie creature token. diff --git a/forge-gui/res/cardsfolder/l/lethe_lake.txt b/forge-gui/res/cardsfolder/l/lethe_lake.txt index 8534c58b2ca..f25edc23efc 100644 --- a/forge-gui/res/cardsfolder/l/lethe_lake.txt +++ b/forge-gui/res/cardsfolder/l/lethe_lake.txt @@ -2,8 +2,8 @@ Name:Lethe Lake ManaCost:no cost Types:Plane Arkhos T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Command | Execute$ LetheMill | TriggerDescription$ At the beginning of your upkeep, mill ten cards. -SVar:LetheMill:DB$ Mill | Defined$ You | NumCards$ 10 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, target player puts the top 10 cards of their library into their graveyard. -SVar:RolledChaos:DB$ Mill | ValidTgts$ Player | TgtPrompt$ Choose target player to mill. | NumCards$ 10 +SVar:LetheMill:DB$ Mill | NumCards$ 10 +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, target player mills ten cards. +SVar:RolledChaos:DB$ Mill | ValidTgts$ Player | NumCards$ 10 SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:At the beginning of your upkeep, mill ten cards.\nWhenever you roll {CHAOS}, target player mills ten cards. +Oracle:At the beginning of your upkeep, mill ten cards.\nWhenever chaos ensues, target player mills ten cards. diff --git a/forge-gui/res/cardsfolder/l/lightning_dart.txt b/forge-gui/res/cardsfolder/l/lightning_dart.txt index 23d2665979a..fa9fa4c22b9 100644 --- a/forge-gui/res/cardsfolder/l/lightning_dart.txt +++ b/forge-gui/res/cardsfolder/l/lightning_dart.txt @@ -1,11 +1,9 @@ Name:Lightning Dart ManaCost:1 R Types:Instant -A:SP$ Pump | Cost$ 1 R | ValidTgts$ Creature | IsCurse$ True | RememberObjects$ Targeted | SubAbility$ DBDmg | StackDescription$ SpellDescription | SpellDescription$ CARDNAME deals 1 damage to target creature. If that creature is white or blue, CARDNAME deals 4 damage to it instead. -SVar:DBDmg:DB$ DealDamage | Defined$ Remembered | NumDmg$ 1 | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ0 | SubAbility$ DBDmgWU | StackDescription$ None -SVar:DBDmgWU:DB$ DealDamage | Defined$ Remembered | NumDmg$ 4 | ConditionCheckSVar$ X | ConditionSVarCompare$ GE1 | StackDescription$ None | SubAbility$ DBCleanup -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -SVar:X:Count$Valid Creature.IsRemembered+White,Creature.IsRemembered+Blue +A:SP$ DealDamage | ValidTgts$ Creature | IsCurse$ True | AITgts$ Creature.White,Creature.Blue | NumDmg$ X | StackDescription$ REP target creature_{c:Targeted} | SpellDescription$ CARDNAME deals 1 damage to target creature. If that creature is white or blue, CARDNAME deals 4 damage to it instead. +SVar:Y:Targeted$Valid Creature.White,Creature.Blue +SVar:X:Count$Compare Y GE1.4.1 AI:RemoveDeck:All AI:RemoveDeck:Random Oracle:Lightning Dart deals 1 damage to target creature. If that creature is white or blue, Lightning Dart deals 4 damage to it instead. diff --git a/forge-gui/res/cardsfolder/l/llanowar.txt b/forge-gui/res/cardsfolder/l/llanowar.txt index efa854740ca..ff01ae39099 100644 --- a/forge-gui/res/cardsfolder/l/llanowar.txt +++ b/forge-gui/res/cardsfolder/l/llanowar.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Dominaria S:Mode$ Continuous | Affected$ Creature | EffectZone$ Command | AddAbility$ LlanowarAb | Description$ All creatures have "{T}: Add {G}{G}.". SVar:LlanowarAb:AB$ Mana | Cost$ T | Amount$ 2 | Produced$ G | SpellDescription$ Add {G}{G}. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, untap all creatures you control. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, untap all creatures you control. SVar:RolledChaos:DB$ UntapAll | ValidCards$ Creature.YouCtrl SVar:AIRollPlanarDieParams:Mode$ Always | HasCreatureInPlay$ True -Oracle:All creatures have "{T}: Add {G}{G}."\nWhenever you roll {CHAOS}, untap all creatures you control. +Oracle:All creatures have "{T}: Add {G}{G}."\nWhenever chaos ensues, untap all creatures you control. diff --git a/forge-gui/res/cardsfolder/m/minamo.txt b/forge-gui/res/cardsfolder/m/minamo.txt index 31d2340a08c..db4af559772 100644 --- a/forge-gui/res/cardsfolder/m/minamo.txt +++ b/forge-gui/res/cardsfolder/m/minamo.txt @@ -3,10 +3,10 @@ ManaCost:no cost Types:Plane Kamigawa T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ Player | TriggerZones$ Command | Execute$ TrigDraw | TriggerDescription$ Whenever a player casts a spell, that player may draw a card. SVar:TrigDraw:DB$ Draw | Defined$ TriggeredActivator | OptionalDecider$ True -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, each player may return a blue card from their graveyard to their hand. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, each player may return a blue card from their graveyard to their hand. SVar:RolledChaos:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBChoose | SubAbility$ DBChangeZoneAll SVar:DBChoose:DB$ ChooseCard | Choices$ Card.RememberedPlayerCtrl+Blue | ChoiceZone$ Graveyard | Defined$ Player.IsRemembered | Amount$ 1 | RememberChosen$ True SVar:DBChangeZoneAll:DB$ ChangeZoneAll | ChangeType$ Card.IsRemembered | Origin$ Graveyard | Destination$ Hand | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:AIRollPlanarDieParams:Mode$ Always | HasColorInGraveyard$ U -Oracle:Whenever a player casts a spell, that player may draw a card.\nWhenever you roll {CHAOS}, each player may return a blue card from their graveyard to their hand. +Oracle:Whenever a player casts a spell, that player may draw a card.\nWhenever chaos ensues, each player may return a blue card from their graveyard to their hand. diff --git a/forge-gui/res/cardsfolder/m/mirrored_depths.txt b/forge-gui/res/cardsfolder/m/mirrored_depths.txt index 0f57e8fd101..7869b0c9a67 100644 --- a/forge-gui/res/cardsfolder/m/mirrored_depths.txt +++ b/forge-gui/res/cardsfolder/m/mirrored_depths.txt @@ -4,9 +4,9 @@ Types:Plane Karsus T:Mode$ SpellCast | ValidCard$ Card | ValidActivatingPlayer$ Player | TriggerZones$ Command | Execute$ TrigFlip | TriggerDescription$ Whenever a player casts a spell, that player flips a coin. If the player loses the flip, counter that spell. SVar:TrigFlip:DB$ FlipACoin | Caller$ TriggeredActivator | LoseSubAbility$ DBCounter SVar:DBCounter:DB$ Counter | Defined$ TriggeredSpellAbility -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, target player reveals the top card of their library. If it's a nonland card, you may cast it without paying its mana cost. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, target player reveals the top card of their library. If it's a nonland card, you may cast it without paying its mana cost. SVar:RolledChaos:DB$ PeekAndReveal | ValidTgts$ Player | NoPeek$ True | RememberRevealed$ True | SubAbility$ DBPlay SVar:DBPlay:DB$ Play | Defined$ Remembered | WithoutManaCost$ True | Optional$ True | ConditionDefined$ Remembered | ConditionPresent$ Card.nonLand | ConditionCompare$ EQ1 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:Whenever a player casts a spell, that player flips a coin. If the player loses the flip, counter that spell.\nWhenever you roll {CHAOS}, target player reveals the top card of their library. If it's a nonland card, you may cast it without paying its mana cost. +Oracle:Whenever a player casts a spell, that player flips a coin. If the player loses the flip, counter that spell.\nWhenever chaos ensues, target player reveals the top card of their library. If it's a nonland card, you may cast it without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/m/mount_keralia.txt b/forge-gui/res/cardsfolder/m/mount_keralia.txt index 063c3d31244..2a53f50c562 100644 --- a/forge-gui/res/cardsfolder/m/mount_keralia.txt +++ b/forge-gui/res/cardsfolder/m/mount_keralia.txt @@ -5,9 +5,9 @@ T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Command | SVar:BuildPressure:DB$ PutCounter | Defined$ Self | CounterType$ PRESSURE | CounterNum$ 1 T:Mode$ PlaneswalkedFrom | ValidCard$ Plane.Self | Execute$ Eruption | TriggerDescription$ When you planeswalk away from CARDNAME, it deals damage equal to the number of pressure counters on it to each creature and each planeswalker. SVar:Eruption:DB$ DamageAll | ValidCards$ Creature,Planeswalker | ValidDescription$ each creature and each planeswalker. | NumDmg$ KeraliaX -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, prevent all damage that planes named CARDNAME would deal this game to permanents you control. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, prevent all damage that planes named CARDNAME would deal this game to permanents you control. SVar:RolledChaos:DB$ Effect | Name$ Mount Keralia Effect | ReplacementEffects$ RPrevent | EffectOwner$ You | Duration$ Permanent | SpellDescription$ Prevent all damage that planes named CARDNAME would deal this game to permanents you control. SVar:RPrevent:Event$ DamageDone | Prevent$ True | ActiveZones$ Command | ValidTarget$ Permanent.YouCtrl | ValidSource$ Plane.namedMount Keralia | Description$ Prevent all damage that planes named Mount Keralia would deal this game to permanents you control. SVar:KeraliaX:TriggeredCard$CardCounters.PRESSURE SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True -Oracle:At the beginning of your end step, put a pressure counter on Mount Keralia.\nWhen you planeswalk away from Mount Keralia, it deals damage equal to the number of pressure counters on it to each creature and each planeswalker.\nWhenever you roll {CHAOS}, prevent all damage that planes named Mount Keralia would deal this game to permanents you control. +Oracle:At the beginning of your end step, put a pressure counter on Mount Keralia.\nWhen you planeswalk away from Mount Keralia, it deals damage equal to the number of pressure counters on it to each creature and each planeswalker.\nWhenever chaos ensues, prevent all damage that planes named Mount Keralia would deal this game to permanents you control. diff --git a/forge-gui/res/cardsfolder/m/murasa.txt b/forge-gui/res/cardsfolder/m/murasa.txt index 61ba3b28145..a3d80a86cf5 100644 --- a/forge-gui/res/cardsfolder/m/murasa.txt +++ b/forge-gui/res/cardsfolder/m/murasa.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Zendikar T:Mode$ ChangesZone | ValidCard$ Creature.nonToken | Origin$ Any | Destination$ Battlefield | TriggerZones$ Command | Execute$ TrigRamp | OptionalDecider$ TriggeredCardController | TriggerDescription$ Whenever a nontoken creature enters the battlefield, its controller may search their library for a basic land card, put it onto the battlefield tapped, then shuffle. SVar:TrigRamp:DB$ ChangeZone | Origin$ Library | Destination$ Battlefield | Tapped$ True | ChangeType$ Land.Basic | ChangeNum$ 1 | DefinedPlayer$ TriggeredCardController | ShuffleNonMandatory$ True -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, target land becomes a 4/4 creature that's still a land. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, target land becomes a 4/4 creature that's still a land. SVar:RolledChaos:DB$ Animate | ValidTgts$ Land | Power$ 4 | Toughness$ 4 | Types$ Creature | Duration$ Permanent SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:Whenever a nontoken creature enters the battlefield, its controller may search their library for a basic land card, put it onto the battlefield tapped, then shuffle.\nWhenever you roll {CHAOS}, target land becomes a 4/4 creature that's still a land. +Oracle:Whenever a nontoken creature enters the battlefield, its controller may search their library for a basic land card, put it onto the battlefield tapped, then shuffle.\nWhenever chaos ensues, target land becomes a 4/4 creature that's still a land. diff --git a/forge-gui/res/cardsfolder/n/naar_isle.txt b/forge-gui/res/cardsfolder/n/naar_isle.txt index 2313f683e53..2d599c28770 100644 --- a/forge-gui/res/cardsfolder/n/naar_isle.txt +++ b/forge-gui/res/cardsfolder/n/naar_isle.txt @@ -5,7 +5,7 @@ T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Command | Execu SVar:TrigPutCounter:DB$ PutCounter | CounterType$ FLAME | CounterNum$ 1 | SubAbility$ DBDmg SVar:DBDmg:DB$ DealDamage | Defined$ You | NumDmg$ Y SVar:Y:Count$CardCounters.FLAME -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, CARDNAME deals 3 damage to target player or planeswalker. -SVar:RolledChaos:DB$ DealDamage | ValidTgts$ Player,Planeswalker | NumDmg$ 3 +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, CARDNAME deals 3 damage to target player or planeswalker. +SVar:RolledChaos:DB$ DealDamage | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 3 SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:At the beginning of your upkeep, put a flame counter on Naar Isle, then Naar Isle deals damage to you equal to the number of flame counters on it.\nWhenever you roll {CHAOS}, Naar Isle deals 3 damage to target player or planeswalker. +Oracle:At the beginning of your upkeep, put a flame counter on Naar Isle, then Naar Isle deals damage to you equal to the number of flame counters on it.\nWhenever chaos ensues, Naar Isle deals 3 damage to target player or planeswalker. diff --git a/forge-gui/res/cardsfolder/n/naya.txt b/forge-gui/res/cardsfolder/n/naya.txt index 293dda39a18..c70183c4b96 100644 --- a/forge-gui/res/cardsfolder/n/naya.txt +++ b/forge-gui/res/cardsfolder/n/naya.txt @@ -2,8 +2,8 @@ Name:Naya ManaCost:no cost Types:Plane Alara S:Mode$ Continuous | Affected$ You | EffectZone$ Command | AdjustLandPlays$ Unlimited | Description$ You may play any number of lands on each of your turns. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, target red, green, or white creature you control gets +1/+1 until end of turn for each land you control. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, target red, green, or white creature you control gets +1/+1 until end of turn for each land you control. SVar:RolledChaos:DB$ Pump | ValidTgts$ Creature.Red+YouCtrl,Creature.Green+YouCtrl,Creature.White+YouCtrl | TgtPrompt$ Select target red, green, or white creature you control | NumAtt$ Y | NumDef$ Y SVar:Y:Count$Valid Land.YouCtrl SVar:AIRollPlanarDieParams:Mode$ Always | HasColorCreatureInPlay$ RGW -Oracle:You may play any number of lands on each of your turns.\nWhenever you roll {CHAOS}, target red, green, or white creature you control gets +1/+1 until end of turn for each land you control. +Oracle:You may play any number of lands on each of your turns.\nWhenever chaos ensues, target red, green, or white creature you control gets +1/+1 until end of turn for each land you control. diff --git a/forge-gui/res/cardsfolder/n/nephalia.txt b/forge-gui/res/cardsfolder/n/nephalia.txt index aa3e3afd3f9..43652d4d40c 100644 --- a/forge-gui/res/cardsfolder/n/nephalia.txt +++ b/forge-gui/res/cardsfolder/n/nephalia.txt @@ -5,7 +5,7 @@ T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Command | SVar:TrigMill:DB$ Mill | NumCards$ 7 | SubAbility$ DBRandom SVar:DBRandom:DB$ ChooseCard | Choices$ Card.YouOwn | ChoiceZone$ Graveyard | AtRandom$ True | Amount$ 1 | SubAbility$ DBReturn SVar:DBReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | Defined$ ChosenCard -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, return target card from your graveyard to your hand. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return target card from your graveyard to your hand. SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | TgtPrompt$ Select target card in your graveyard | ValidTgts$ Card.YouOwn SVar:AIRollPlanarDieParams:Mode$ Always | CardsInGraveyardGE$ 1 -Oracle:At the beginning of your end step, mill seven cards. Then return a card at random from your graveyard to your hand.\nWhenever you roll {CHAOS}, return target card from your graveyard to your hand. +Oracle:At the beginning of your end step, mill seven cards. Then return a card at random from your graveyard to your hand.\nWhenever chaos ensues, return target card from your graveyard to your hand. diff --git a/forge-gui/res/cardsfolder/n/norns_dominion.txt b/forge-gui/res/cardsfolder/n/norns_dominion.txt index 1406178483d..67b519b2ed9 100644 --- a/forge-gui/res/cardsfolder/n/norns_dominion.txt +++ b/forge-gui/res/cardsfolder/n/norns_dominion.txt @@ -4,7 +4,7 @@ Types:Plane New Phyrexia T:Mode$ PlaneswalkedFrom | ValidCard$ Plane.Self | Execute$ TrigDestroy | TriggerDescription$ When you planeswalk away from CARDNAME, destroy each nonland permanent without a fate counter on it, then remove all fate counters from all permanents. SVar:TrigDestroy:DB$ DestroyAll | ValidCards$ Permanent.nonLand+counters_LT1_FATE | SubAbility$ DBRemove SVar:DBRemove:DB$ RemoveCounterAll | ValidCards$ Permanent | CounterType$ FATE | AllCounters$ True -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | OptionalDecider$ You | TriggerDescription$ Whenever you roll {CHAOS}, you may put a fate counter on target permanent. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | OptionalDecider$ You | TriggerDescription$ Whenever chaos ensues, you may put a fate counter on target permanent. SVar:RolledChaos:DB$ PutCounter | ValidTgts$ Permanent | CounterType$ FATE | CounterNum$ 1 SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:When you planeswalk away from Norn's Dominion, destroy each nonland permanent without a fate counter on it, then remove all fate counters from all permanents.\nWhenever you roll {CHAOS}, you may put a fate counter on target permanent. +Oracle:When you planeswalk away from Norn's Dominion, destroy each nonland permanent without a fate counter on it, then remove all fate counters from all permanents.\nWhenever chaos ensues, you may put a fate counter on target permanent. diff --git a/forge-gui/res/cardsfolder/o/onakke_catacomb.txt b/forge-gui/res/cardsfolder/o/onakke_catacomb.txt index 802980f65c7..17c3220f26a 100644 --- a/forge-gui/res/cardsfolder/o/onakke_catacomb.txt +++ b/forge-gui/res/cardsfolder/o/onakke_catacomb.txt @@ -2,7 +2,7 @@ Name:Onakke Catacomb ManaCost:no cost Types:Plane Shandalar S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature | SetColor$ Black | AddKeyword$ Deathtouch | Description$ All creatures are black and have deathtouch. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, creatures you control get +1/+0 and gain first strike until end of turn. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, creatures you control get +1/+0 and gain first strike until end of turn. SVar:RolledChaos:DB$ PumpAll | ValidCards$ Creature.YouCtrl | NumAtt$ +1 | KW$ First Strike SVar:AIRollPlanarDieParams:Mode$ Always | HasCreatureInPlay$ True | RollInMain1$ True -Oracle:All creatures are black and have deathtouch.\nWhenever you roll {CHAOS}, creatures you control get +1/+0 and gain first strike until end of turn. +Oracle:All creatures are black and have deathtouch.\nWhenever chaos ensues, creatures you control get +1/+0 and gain first strike until end of turn. diff --git a/forge-gui/res/cardsfolder/o/orochi_colony.txt b/forge-gui/res/cardsfolder/o/orochi_colony.txt index 522d4c3cf28..65da5a78198 100644 --- a/forge-gui/res/cardsfolder/o/orochi_colony.txt +++ b/forge-gui/res/cardsfolder/o/orochi_colony.txt @@ -3,8 +3,8 @@ ManaCost:no cost Types:Plane Kamigawa T:Mode$ DamageDone | ValidSource$ Creature.YouCtrl | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigRamp | TriggerZones$ Command | TriggerDescription$ Whenever a creature you control deals combat damage to a player, you may search your library for a basic land card, put it onto the battlefield tapped, then shuffle. SVar:TrigRamp:DB$ ChangeZone | Origin$ Library | Destination$ Battlefield | Tapped$ True | ChangeType$ Land.Basic | ChangeNum$ 1 | ShuffleNonMandatory$ True -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, target creature can't be blocked this turn. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, target creature can't be blocked this turn. SVar:RolledChaos:DB$ Effect | ValidTgts$ Creature | RememberObjects$ Targeted | ExileOnMoved$ Battlefield | StaticAbilities$ Unblockable | AILogic$ Pump SVar:Unblockable:Mode$ CantBlockBy | ValidAttacker$ Card.IsRemembered | Description$ This creature can't be blocked this turn. SVar:AIRollPlanarDieParams:Mode$ Always | HasCreatureInPlay$ True | RollInMain1$ True -Oracle:Whenever a creature you control deals combat damage to a player, you may search your library for a basic land card, put it onto the battlefield tapped, then shuffle.\nWhenever you roll {CHAOS}, target creature can't be blocked this turn. +Oracle:Whenever a creature you control deals combat damage to a player, you may search your library for a basic land card, put it onto the battlefield tapped, then shuffle.\nWhenever chaos ensues, target creature can't be blocked this turn. diff --git a/forge-gui/res/cardsfolder/o/orzhova.txt b/forge-gui/res/cardsfolder/o/orzhova.txt index e7e9747bf32..f81475cc2b3 100644 --- a/forge-gui/res/cardsfolder/o/orzhova.txt +++ b/forge-gui/res/cardsfolder/o/orzhova.txt @@ -3,8 +3,8 @@ ManaCost:no cost Types:Plane Ravnica T:Mode$ PlaneswalkedFrom | ValidCard$ Plane.Self | Execute$ OrzhovaDeal | TriggerDescription$ When you planeswalk away from CARDNAME, each player returns all creature cards from their graveyard to the battlefield. SVar:OrzhovaDeal:DB$ ChangeZoneAll | Origin$ Graveyard | Destination$ Battlefield | ChangeType$ Creature -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, for each opponent, exile up to one target creature card from that player's graveyard. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, for each opponent, exile up to one target creature card from that player's graveyard. SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | Destination$ Exile | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Select target creature each opponent controls. | TargetMin$ 0 | TargetMax$ OneEach | TargetsWithDifferentControllers$ True SVar:OneEach:PlayerCountOpponents$Amount SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:When you planeswalk away from Orzhova, each player returns all creature cards from their graveyard to the battlefield.\nWhenever you roll {CHAOS}, for each opponent, exile up to one target creature card from that player's graveyard. +Oracle:When you planeswalk away from Orzhova, each player returns all creature cards from their graveyard to the battlefield.\nWhenever chaos ensues, for each opponent, exile up to one target creature card from that player's graveyard. diff --git a/forge-gui/res/cardsfolder/o/otaria.txt b/forge-gui/res/cardsfolder/o/otaria.txt index 01d4c4e14e3..2c4a0228ef7 100644 --- a/forge-gui/res/cardsfolder/o/otaria.txt +++ b/forge-gui/res/cardsfolder/o/otaria.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Dominaria S:Mode$ Continuous | Affected$ Instant,Sorcery | EffectZone$ Command | AffectedZone$ Graveyard | AddKeyword$ Flashback | Description$ Instant and sorcery cards in graveyards have flashback. The flashback cost is equal to the card's mana cost. (Its owner may cast the card from their graveyard for its mana cost. Then they exile it.) S:Mode$ Continuous | Affected$ Instant.wasCastFromGraveyard,Sorcery.wasCastFromGraveyard | EffectZone$ Command | AffectedZone$ Stack | AddKeyword$ Flashback | Secondary$ True -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, take an extra turn after this one. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, take an extra turn after this one. SVar:RolledChaos:DB$ AddTurn | NumTurns$ 1 SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:Instant and sorcery cards in graveyards have flashback. The flashback cost is equal to the card's mana cost. (Its owner may cast the card from their graveyard for its mana cost. Then they exile it.)\nWhenever you roll {CHAOS}, take an extra turn after this one. +Oracle:Instant and sorcery cards in graveyards have flashback. The flashback cost is equal to the card's mana cost. (Its owner may cast the card from their graveyard for its mana cost. Then they exile it.)\nWhenever chaos ensues, take an extra turn after this one. diff --git a/forge-gui/res/cardsfolder/p/panopticon.txt b/forge-gui/res/cardsfolder/p/panopticon.txt index 48e309abf59..b4806384752 100644 --- a/forge-gui/res/cardsfolder/p/panopticon.txt +++ b/forge-gui/res/cardsfolder/p/panopticon.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Mirrodin T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ PanopticonDraw | TriggerDescription$ When you planeswalk to CARDNAME, draw a card. T:Mode$ Phase | Phase$ Draw | ValidPlayer$ You | Execute$ PanopticonDraw | TriggerZones$ Command | TriggerDescription$ At the beginning of your draw step, draw an additional card. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ PanopticonDraw | TriggerDescription$ Whenever you roll {CHAOS}, draw a card. -SVar:PanopticonDraw:DB$ Draw | Defined$ You | NumCards$ 1 +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ PanopticonDraw | TriggerDescription$ Whenever chaos ensues, draw a card. +SVar:PanopticonDraw:DB$ Draw SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:When you planeswalk to Panopticon, draw a card.\nAt the beginning of your draw step, draw an additional card.\nWhenever you roll {CHAOS}, draw a card. +Oracle:When you planeswalk to Panopticon, draw a card.\nAt the beginning of your draw step, draw an additional card.\nWhenever chaos ensues, draw a card. diff --git a/forge-gui/res/cardsfolder/p/pools_of_becoming.txt b/forge-gui/res/cardsfolder/p/pools_of_becoming.txt index a0beff6259b..37c36b075b7 100644 --- a/forge-gui/res/cardsfolder/p/pools_of_becoming.txt +++ b/forge-gui/res/cardsfolder/p/pools_of_becoming.txt @@ -6,9 +6,9 @@ SVar:TrigChangeZone:DB$ ChangeZoneAll | ChangeType$ Card.YouOwn | Origin$ Hand | SVar:DBDraw:DB$ Draw | NumCards$ Y | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:Y:Remembered$Amount -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, reveal the top three cards of your planar deck. Each of the revealed cards' {CHAOS} abilities triggers. Then put the revealed cards on the bottom of your planar deck in any order. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, reveal the top three cards of your planar deck. Each of the revealed cards' {CHAOS} abilities triggers. Then put the revealed cards on the bottom of your planar deck in any order. SVar:RolledChaos:DB$ PeekAndReveal | PeekAmount$ 3 | NoPeek$ True | SourceZone$ PlanarDeck | RememberRevealed$ True | SubAbility$ DBRunChaos SVar:DBRunChaos:DB$ RunChaos | Defined$ Remembered | SubAbility$ DBChangeZone -SVar:DBChangeZone:DB$ ChangeZoneAll | ChangeType$ Card.IsRemembered | Origin$ PlanarDeck | Destination$ PlanarDeck | LibraryPosition$ -1 | SubAbility$ DBCleanup +SVar:DBChangeZone:DB$ ChangeZone | Defined$ Remembered | Origin$ PlanarDeck | Destination$ PlanarDeck | LibraryPosition$ -1 | SubAbility$ DBCleanup SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:At the beginning of your end step, put the cards in your hand on the bottom of your library in any order, then draw that many cards.\nWhenever you roll {CHAOS}, reveal the top three cards of your planar deck. Each of the revealed cards' {CHAOS} abilities triggers. Then put the revealed cards on the bottom of your planar deck in any order. +Oracle:At the beginning of your end step, put the cards in your hand on the bottom of your library in any order, then draw that many cards.\nWhenever chaos ensues, reveal the top three cards of your planar deck. Each of the revealed cards' {CHAOS} abilities triggers. Then put the revealed cards on the bottom of your planar deck in any order. diff --git a/forge-gui/res/cardsfolder/p/prahv.txt b/forge-gui/res/cardsfolder/p/prahv.txt index 91c184cc6a1..15eccb3e179 100644 --- a/forge-gui/res/cardsfolder/p/prahv.txt +++ b/forge-gui/res/cardsfolder/p/prahv.txt @@ -3,8 +3,8 @@ ManaCost:no cost Types:Plane Ravnica S:Mode$ CantAttack | EffectZone$ Command | ValidCard$ Creature.ControlledBy You.castSpellThisTurn | Description$ If you cast a spell this turn, you can't attack with creatures. S:Mode$ CantBeCast | EffectZone$ Command | ValidCard$ Card | Caster$ You.attackedWithCreaturesThisTurn | Description$ If you attacked with creatures this turn, you can't cast spells. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, you gain life equal to the number of cards in your hand. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you gain life equal to the number of cards in your hand. SVar:RolledChaos:DB$ GainLife | LifeAmount$ PrahvX | Defined$ You SVar:PrahvX:Count$InYourHand SVar:AIRollPlanarDieParams:Mode$ Always | CardsInHandGE$ 2 -Oracle:If you cast a spell this turn, you can't attack with creatures.\nIf you attacked with creatures this turn, you can't cast spells.\nWhenever you roll {CHAOS}, you gain life equal to the number of cards in your hand. +Oracle:If you cast a spell this turn, you can't attack with creatures.\nIf you attacked with creatures this turn, you can't cast spells.\nWhenever chaos ensues, you gain life equal to the number of cards in your hand. diff --git a/forge-gui/res/cardsfolder/q/quicksilver_sea.txt b/forge-gui/res/cardsfolder/q/quicksilver_sea.txt index 1280af31b79..80d7b86c734 100644 --- a/forge-gui/res/cardsfolder/q/quicksilver_sea.txt +++ b/forge-gui/res/cardsfolder/q/quicksilver_sea.txt @@ -4,9 +4,9 @@ Types:Plane Mirrodin T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ QuicksilverScry | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your upkeep, scry 4. (Look at the top four cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ QuicksilverScry | TriggerZones$ Command | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your upkeep, scry 4. (Look at the top four cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.) SVar:QuicksilverScry:DB$ Scry | ScryNum$ 4 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, reveal the top card of your library. You may play it without paying its mana cost. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, reveal the top card of your library. You may play it without paying its mana cost. SVar:RolledChaos:DB$ PeekAndReveal | RememberRevealed$ True | SubAbility$ DBPlay SVar:DBPlay:DB$ Play | Defined$ Remembered | Controller$ You | WithoutManaCost$ True | Optional$ True | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:When you planeswalk to Quicksilver Sea or at the beginning of your upkeep, scry 4. (Look at the top four cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.)\nWhenever you roll {CHAOS}, reveal the top card of your library. You may play it without paying its mana cost. +Oracle:When you planeswalk to Quicksilver Sea or at the beginning of your upkeep, scry 4. (Look at the top four cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.)\nWhenever chaos ensues, reveal the top card of your library. You may play it without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/r/ravens_run.txt b/forge-gui/res/cardsfolder/r/ravens_run.txt index 2ca1031aa9e..1d1b83ed5c0 100644 --- a/forge-gui/res/cardsfolder/r/ravens_run.txt +++ b/forge-gui/res/cardsfolder/r/ravens_run.txt @@ -2,10 +2,9 @@ Name:Raven's Run ManaCost:no cost Types:Plane Shadowmoor S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature | AddKeyword$ Wither | Description$ All Creatures have Wither (They deal damage to creatures in the form of -1/-1 counters.) -T:Mode$ PlanarDice | Result$ Chaos | OptionalDecider$ You | TriggerZones$ Command | Execute$ RolledChaos1 | TriggerDescription$ Whenever you roll {CHAOS}, put a -1/-1 counter on target creature, two -1/-1 counters on another target creature, and three -1/-1 counters on a third target creature. -SVar:RolledChaos1:DB$ PutCounter | ValidTgts$ Creature | CounterType$ M1M1 | CounterNum$ 1 | RememberTargets$ True | SubAbility$ RolledChaos2 -SVar:RolledChaos2:DB$ PutCounter | ValidTgts$ Creature.IsNotRemembered | CounterType$ M1M1 | CounterNum$ 2 | RememberTargets$ True | SubAbility$ RolledChaos3 -SVar:RolledChaos3:DB$ PutCounter | ValidTgts$ Creature.IsNotRemembered | CounterType$ M1M1 | CounterNum$ 3 | SubAbility$ RolledChaosCleanup -SVar:RolledChaosCleanup:DB$ Cleanup | ClearRemembered$ True +T:Mode$ ChaosEnsues | OptionalDecider$ You | TriggerZones$ Command | Execute$ TrigPutCounter | TriggerDescription$ Whenever chaos ensues, put a -1/-1 counter on target creature, two -1/-1 counters on another target creature, and three -1/-1 counters on a third target creature. +SVar:TrigPutCounter:DB$ PutCounter | ValidTgts$ Creature | TargetUnique$ True | CounterType$ M1M1 | SubAbility$ DBPutTwo +SVar:DBPutTwo:DB$ PutCounter | ValidTgts$ Creature | TgtPrompt$ Select another target creature | TargetUnique$ True | CounterType$ M1M1 | CounterNum$ 2 | SubAbility$ DBPutThree +SVar:DBPutThree:DB$ PutCounter | ValidTgts$ Creature | TgtPrompt$ Select a third target creature | TargetUnique$ True | CounterType$ M1M1 | CounterNum$ 3 SVar:AIRollPlanarDieParams:Mode$ Always | OppHasCreatureInPlay$ True -Oracle:All creatures have wither. (They deal damage to creatures in the form of -1/-1 counters.)\nWhenever you roll {CHAOS}, put a -1/-1 counter on target creature, two -1/-1 counters on another target creature, and three -1/-1 counters on a third target creature. +Oracle:All creatures have wither. (They deal damage to creatures in the form of -1/-1 counters.)\nWhenever chaos ensues, put a -1/-1 counter on target creature, two -1/-1 counters on another target creature, and three -1/-1 counters on a third target creature. diff --git a/forge-gui/res/cardsfolder/s/sanctum_of_serra.txt b/forge-gui/res/cardsfolder/s/sanctum_of_serra.txt index 249478cd395..30069aa0287 100644 --- a/forge-gui/res/cardsfolder/s/sanctum_of_serra.txt +++ b/forge-gui/res/cardsfolder/s/sanctum_of_serra.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Serra's Realm T:Mode$ PlaneswalkedFrom | ValidCard$ Plane.Self | Execute$ TrigDestroy | TriggerDescription$ When you planeswalk away from CARDNAME, destroy all nonland permanents. SVar:TrigDestroy:DB$ DestroyAll | ValidCards$ Permanent.nonLand | ValidDesc$ all nonland permanents -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | OptionalDecider$ You | TriggerDescription$ Whenever you roll {CHAOS}, you may have your life total become 20. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | OptionalDecider$ You | TriggerDescription$ Whenever chaos ensues, you may have your life total become 20. SVar:RolledChaos:DB$ SetLife | Defined$ You | LifeAmount$ 20 SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:When you planeswalk away from Sanctum of Serra, destroy all nonland permanents.\nWhenever you roll {CHAOS}, you may have your life total become 20. +Oracle:When you planeswalk away from Sanctum of Serra, destroy all nonland permanents.\nWhenever chaos ensues, you may have your life total become 20. diff --git a/forge-gui/res/cardsfolder/s/sea_of_sand.txt b/forge-gui/res/cardsfolder/s/sea_of_sand.txt index d7c51e148c5..c23e91a82f5 100644 --- a/forge-gui/res/cardsfolder/s/sea_of_sand.txt +++ b/forge-gui/res/cardsfolder/s/sea_of_sand.txt @@ -9,7 +9,7 @@ T:Mode$ Drawn | ValidCard$ Card.Land | TriggerZones$ Command | Execute$ TrigGain SVar:TrigGain:DB$ GainLife | Defined$ TriggeredCardController | LifeAmount$ 3 T:Mode$ Drawn | ValidCard$ Card.nonLand | TriggerZones$ Command | Execute$ TrigLose | TriggerDescription$ Whenever a player draws a nonland card, that player loses 3 life. SVar:TrigLose:DB$ LoseLife | Defined$ TriggeredCardController | LifeAmount$ 3 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, put target permanent on top of its owner's library. -SVar:RolledChaos:DB$ ChangeZone | ValidTgts$ Permanent | TgtPrompt$ Select target permanent | Origin$ Battlefield | Destination$ Library | LibraryPosition$ 0 +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, put target permanent on top of its owner's library. +SVar:RolledChaos:DB$ ChangeZone | ValidTgts$ Permanent | Origin$ Battlefield | Destination$ Library | LibraryPosition$ 0 SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:Players reveal each card they draw.\nWhenever a player draws a land card, that player gains 3 life.\nWhenever a player draws a nonland card, that player loses 3 life.\nWhenever you roll {CHAOS}, put target permanent on top of its owner's library. +Oracle:Players reveal each card they draw.\nWhenever a player draws a land card, that player gains 3 life.\nWhenever a player draws a nonland card, that player loses 3 life.\nWhenever chaos ensues, put target permanent on top of its owner's library. diff --git a/forge-gui/res/cardsfolder/s/selesnya_loft_gardens.txt b/forge-gui/res/cardsfolder/s/selesnya_loft_gardens.txt index f6e03eaf53b..6556b62c590 100644 --- a/forge-gui/res/cardsfolder/s/selesnya_loft_gardens.txt +++ b/forge-gui/res/cardsfolder/s/selesnya_loft_gardens.txt @@ -6,9 +6,9 @@ SVar:DoubleToken:DB$ ReplaceToken | Type$ Amount R:Event$ AddCounter | ActiveZones$ Command | ValidCard$ Permanent.inZoneBattlefield | EffectOnly$ True | ReplaceWith$ DoubleCounters | Description$ If an effect would put one or more counters on a permanent, it puts twice that many of those counters on that permanent instead. SVar:DoubleCounters:DB$ ReplaceCounter | Amount$ Z SVar:Z:ReplaceCount$CounterNum/Twice -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, until end of turn, whenever you tap a land for mana, add one mana of any type that land produced. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, until end of turn, whenever you tap a land for mana, add one mana of any type that land produced. SVar:RolledChaos:DB$ Effect | AILogic$ Always | Triggers$ TrigTapForMana SVar:TrigTapForMana:Mode$ TapsForMana | TriggerZones$ Command | ValidCard$ Land | Activator$ You | Execute$ TrigMana | Static$ True | TriggerDescription$ Whenever you tap a land for mana, add one mana of any type that land produced. SVar:TrigMana:DB$ ManaReflected | ColorOrType$ Type | ReflectProperty$ Produced | Defined$ You SVar:AIRollPlanarDieParams:Mode$ Always | MinTurn$ 1 | RollInMain1$ True -Oracle:If an effect would create one or more tokens, it creates twice that many of those tokens instead.\nIf an effect would put one or more counters on a permanent, it puts twice that many of those counters on that permanent instead.\nWhenever you roll {CHAOS}, until end of turn, whenever you tap a land for mana, add one mana of any type that land produced. +Oracle:If an effect would create one or more tokens, it creates twice that many of those tokens instead.\nIf an effect would put one or more counters on a permanent, it puts twice that many of those counters on that permanent instead.\nWhenever chaos ensues, until end of turn, whenever you tap a land for mana, add one mana of any type that land produced. diff --git a/forge-gui/res/cardsfolder/s/shiv.txt b/forge-gui/res/cardsfolder/s/shiv.txt index 139dfe0b408..639bb4d8ded 100644 --- a/forge-gui/res/cardsfolder/s/shiv.txt +++ b/forge-gui/res/cardsfolder/s/shiv.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Dominaria S:Mode$ Continuous | Affected$ Creature | EffectZone$ Command | AddAbility$ Pump | Description$ All creatures have "{R}: This creature gets +1/+0 until end of turn." SVar:Pump:AB$ Pump | Cost$ R | NumAtt$ +1 | SpellDescription$ CARDNAME gets +1/+0 until end of turn. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, create a 5/5 red Dragon creature token with flying. -SVar:RolledChaos:DB$ Token | TokenOwner$ You | TokenAmount$ 1 | TokenScript$ r_5_5_dragon_flying +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, create a 5/5 red Dragon creature token with flying. +SVar:RolledChaos:DB$ Token | TokenScript$ r_5_5_dragon_flying SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:All creatures have "{R}: This creature gets +1/+0 until end of turn."\nWhenever you roll {CHAOS}, create a 5/5 red Dragon creature token with flying. +Oracle:All creatures have "{R}: This creature gets +1/+0 until end of turn."\nWhenever chaos ensues, create a 5/5 red Dragon creature token with flying. diff --git a/forge-gui/res/cardsfolder/s/skybreen.txt b/forge-gui/res/cardsfolder/s/skybreen.txt index c1c754d8363..5e003b6053d 100644 --- a/forge-gui/res/cardsfolder/s/skybreen.txt +++ b/forge-gui/res/cardsfolder/s/skybreen.txt @@ -3,8 +3,8 @@ ManaCost:no cost Types:Plane Kaldheim S:Mode$ Continuous | EffectZone$ Command | Affected$ Card.TopLibrary | AffectedZone$ Library | MayLookAt$ Player | Description$ Players play with the top card of their libraries revealed. S:Mode$ CantBeCast | EffectZone$ Command | ValidCard$ Card.sharesCardTypeWith EachTopLibrary | Description$ Spells that share a card type with the top card of a library can't be cast. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, target player loses life equal to the number of cards in their hand. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, target player loses life equal to the number of cards in their hand. SVar:RolledChaos:DB$ LoseLife | ValidTgts$ Player | LifeAmount$ Y SVar:Y:TargetedPlayer$CardsInHand SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:Players play with the top card of their libraries revealed.\nSpells that share a card type with the top card of a library can't be cast.\nWhenever you roll {CHAOS}, target player loses life equal to the number of cards in their hand. +Oracle:Players play with the top card of their libraries revealed.\nSpells that share a card type with the top card of a library can't be cast.\nWhenever chaos ensues, target player loses life equal to the number of cards in their hand. diff --git a/forge-gui/res/cardsfolder/s/sokenzan.txt b/forge-gui/res/cardsfolder/s/sokenzan.txt index dbb77825cd1..4645a6e1e33 100644 --- a/forge-gui/res/cardsfolder/s/sokenzan.txt +++ b/forge-gui/res/cardsfolder/s/sokenzan.txt @@ -2,8 +2,8 @@ Name:Sokenzan ManaCost:no cost Types:Plane Kamigawa S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature | AddPower$ 1 | AddToughness$ 1 | AddKeyword$ Haste | Description$ All creatures get +1/+1 and have haste. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, untap all creatures that attacked this turn. After this main phase, there is an additional combat phase followed by an additional main phase. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, untap all creatures that attacked this turn. After this main phase, there is an additional combat phase followed by an additional main phase. SVar:RolledChaos:DB$ UntapAll | ValidCards$ Creature.attackedThisTurn | SubAbility$ DBAddCombat SVar:DBAddCombat:DB$ AddPhase | ExtraPhase$ Combat | FollowedBy$ Main2 | ConditionPhases$ Main1,Main2 SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:All creatures get +1/+1 and have haste.\nWhenever you roll {CHAOS}, untap all creatures that attacked this turn. After this main phase, there is an additional combat phase followed by an additional main phase. +Oracle:All creatures get +1/+1 and have haste.\nWhenever chaos ensues, untap all creatures that attacked this turn. After this main phase, there is an additional combat phase followed by an additional main phase. diff --git a/forge-gui/res/cardsfolder/s/soul_of_windgrace.txt b/forge-gui/res/cardsfolder/s/soul_of_windgrace.txt index 6070fd82c4b..797d684e68d 100644 --- a/forge-gui/res/cardsfolder/s/soul_of_windgrace.txt +++ b/forge-gui/res/cardsfolder/s/soul_of_windgrace.txt @@ -4,11 +4,11 @@ Types:Legendary Creature Cat Avatar PT:5/4 T:Mode$ ChangesZone | Origin$ Any | OptionalDecider$ You | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChangeZone | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, you may put a land card from a graveyard onto the battlefield tapped under your control. T:Mode$ Attacks | ValidCard$ Card.Self | OptionalDecider$ You | Execute$ TrigChangeZone | Secondary$ True | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, you may put a land card from a graveyard onto the battlefield tapped under your control. -SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | GainControl$ True | Tapped$ True | TgtPrompt$ Select target land card in a graveyard | ValidTgts$ Land -A:AB$ GainLife | Cost$ G Discard<1/Land> | LifeAmount$ 3 | SpellDescription$ You gain 3 Life +SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | GainControl$ True | Tapped$ True | Hidden$ True | ChangeType$ Land +A:AB$ GainLife | Cost$ G Discard<1/Land> | LifeAmount$ 3 | SpellDescription$ You gain 3 life. A:AB$ Draw | Cost$ 1 R Discard<1/Land> | SpellDescription$ Draw a card. -A:AB$ Pump | Cost$ 2 B Discard<1/Land> | KW$ Indestructible | SubAbility$ DBTap | SpellDescription$ CARDNAME gains indestructible until end of turn. Tap it. -SVar:DBTap:DB$ Tap | Defined$ Self +A:AB$ Pump | Cost$ 2 B Discard<1/Land> | KW$ Indestructible | SubAbility$ DBTap | StackDescription$ SpellDescription | SpellDescription$ CARDNAME gains indestructible until end of turn. +SVar:DBTap:DB$ Tap | Defined$ Self | StackDescription$ SpellDescription | SpellDescription$ Tap it. DeckHas:Ability$LifeGain|Discard & Keyword$Indestructible SVar:HasAttackEffect:TRUE Oracle:Whenever Soul of Windgrace enters the battlefield or attacks, you may put a land card from a graveyard onto the battlefield tapped under your control.\n{G}, Discard a land card: You gain 3 life.\n{1}{R}, Discard a land card: Draw a card.\n{2}{B}, Discard a land card: Soul of Windgrace gains indestructible until end of turn. Tap it. diff --git a/forge-gui/res/cardsfolder/s/stairs_to_infinity.txt b/forge-gui/res/cardsfolder/s/stairs_to_infinity.txt index bf5aa5aa460..c234324faa8 100644 --- a/forge-gui/res/cardsfolder/s/stairs_to_infinity.txt +++ b/forge-gui/res/cardsfolder/s/stairs_to_infinity.txt @@ -4,7 +4,7 @@ Types:Plane Xerex S:Mode$ Continuous | EffectZone$ Command | Affected$ Player | SetMaxHandSize$ Unlimited | Description$ Players have no maximum hand size. T:Mode$ PlanarDice | TriggerZones$ Command | Execute$ RolledDie | TriggerDescription$ Whenever you roll the planar die, draw a card. SVar:RolledDie:DB$ Draw | NumCards$ 1 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, reveal the top card of your planar deck. You may put it on the bottom of your planar deck. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, reveal the top card of your planar deck. You may put it on the bottom of your planar deck. SVar:RolledChaos:DB$ Dig | DigNum$ 1 | ChangeNum$ 1 | Reveal$ True | SourceZone$ PlanarDeck | DestinationZone$ PlanarDeck | DestinationZone2$ PlanarDeck | LibraryPosition$ -1 | LibraryPosition2$ 0 | ChangeValid$ Plane | Optional$ True SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:Players have no maximum hand size.\nWhenever you roll the planar die, draw a card.\nWhenever you roll {CHAOS}, reveal the top card of your planar deck. You may put it on the bottom of your planar deck. +Oracle:Players have no maximum hand size.\nWhenever you roll the planar die, draw a card.\nWhenever chaos ensues, reveal the top card of your planar deck. You may put it on the bottom of your planar deck. diff --git a/forge-gui/res/cardsfolder/s/stensia.txt b/forge-gui/res/cardsfolder/s/stensia.txt index 3c0774abf0e..8c14034cb20 100644 --- a/forge-gui/res/cardsfolder/s/stensia.txt +++ b/forge-gui/res/cardsfolder/s/stensia.txt @@ -5,7 +5,7 @@ T:Mode$ DamageDone | ValidSource$ Creature.IsNotRemembered | ValidTarget$ Player SVar:TrigPutCounter:DB$ PutCounter | Defined$ TriggeredSourceLKICopy | CounterType$ P1P1 | CounterNum$ 1 | RememberCards$ True T:Mode$ Phase | Phase$ End of Turn | Execute$ DBCleanup | TriggerZones$ Command | Static$ True SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, each creature you control gains "{T}: This creature deals 1 damage to target player or planeswalker" until end of turn. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, each creature you control gains "{T}: This creature deals 1 damage to target player or planeswalker" until end of turn. SVar:RolledChaos:DB$ AnimateAll | ValidCards$ Creature.YouCtrl | Abilities$ LVAbs | SpellDescription$ Until end of turn, creatures you control gain "{T}: This creature deals 1 damage to target player or planeswalker." -SVar:LVAbs:AB$ DealDamage | Cost$ T | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 | SpellDescription$ CARDNAME deals 1 damage to target player or planeswalker. -Oracle:Whenever a creature deals damage to one or more players for the first time each turn, put a +1/+1 counter on it.\nWhenever you roll {CHAOS}, each creature you control gains "{T}: This creature deals 1 damage to target player or planeswalker" until end of turn. +SVar:LVAbs:AB$ DealDamage | Cost$ T | ValidTgts$ Player,Planeswalker | TgtPrompt$ Select target player or planeswalker | NumDmg$ 1 | SpellDescription$ This creature deals 1 damage to target player or planeswalker. +Oracle:Whenever a creature deals damage to one or more players for the first time each turn, put a +1/+1 counter on it.\nWhenever chaos ensues, each creature you control gains "{T}: This creature deals 1 damage to target player or planeswalker" until end of turn. diff --git a/forge-gui/res/cardsfolder/s/stronghold_furnace.txt b/forge-gui/res/cardsfolder/s/stronghold_furnace.txt index 220fa5cdc1f..9c13db02ee3 100644 --- a/forge-gui/res/cardsfolder/s/stronghold_furnace.txt +++ b/forge-gui/res/cardsfolder/s/stronghold_furnace.txt @@ -4,7 +4,7 @@ Types:Plane Rath R:Event$ DamageDone | ActiveZones$ Command | ValidSource$ Card,Emblem | ValidTarget$ Permanent,Player | ReplaceWith$ DmgTwice | Description$ If a source would deal damage to a permanent or player, it deals double that damage to that permanent or player instead. SVar:DmgTwice:DB$ ReplaceEffect | VarName$ DamageAmount | VarValue$ Y SVar:Y:ReplaceCount$DamageAmount/Twice -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, CARDNAME deals 1 damage to any target. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, CARDNAME deals 1 damage to any target. SVar:RolledChaos:DB$ DealDamage | ValidTgts$ Any | NumDmg$ 1 SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:If a source would deal damage to a permanent or player, it deals double that damage to that permanent or player instead.\nWhenever you roll {CHAOS}, Stronghold Furnace deals 1 damage to any target. +Oracle:If a source would deal damage to a permanent or player, it deals double that damage to that permanent or player instead.\nWhenever chaos ensues, Stronghold Furnace deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/t/takenuma.txt b/forge-gui/res/cardsfolder/t/takenuma.txt index 86517289095..3cd6e733a50 100644 --- a/forge-gui/res/cardsfolder/t/takenuma.txt +++ b/forge-gui/res/cardsfolder/t/takenuma.txt @@ -3,6 +3,6 @@ ManaCost:no cost Types:Plane Kamigawa T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Creature | Execute$ TakenumaDraw | TriggerZones$ Command | TriggerDescription$ Whenever a creature leaves the battlefield, its controller draws a card. SVar:TakenumaDraw:DB$ Draw | Defined$ TriggeredCardController | NumCards$ 1 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, return target creature you control to its owner's hand. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return target creature you control to its owner's hand. SVar:RolledChaos:DB$ ChangeZone | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature to return to your hand | Origin$ Battlefield | Destination$ Hand -Oracle:Whenever a creature leaves the battlefield, its controller draws a card.\nWhenever you roll {CHAOS}, return target creature you control to its owner's hand. +Oracle:Whenever a creature leaves the battlefield, its controller draws a card.\nWhenever chaos ensues, return target creature you control to its owner's hand. diff --git a/forge-gui/res/cardsfolder/t/talon_gates.txt b/forge-gui/res/cardsfolder/t/talon_gates.txt index bac81a60258..b3bae55d382 100644 --- a/forge-gui/res/cardsfolder/t/talon_gates.txt +++ b/forge-gui/res/cardsfolder/t/talon_gates.txt @@ -7,7 +7,7 @@ SVar:TimeInGates:DB$ PutCounter | Defined$ Remembered | CounterType$ TIME | Coun SVar:GiveSuspend:DB$ PumpAll | ValidCards$ Card.IsRemembered+withoutSuspend | KW$ Suspend | PumpZone$ Exile | Duration$ Permanent | SubAbility$ DBCleanup | StackDescription$ If it doesn't have suspend, it gains suspend. SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:GateX:Remembered$CardManaCost -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, remove two time counters from each suspended card you own. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, remove two time counters from each suspended card you own. SVar:RolledChaos:DB$ RemoveCounterAll | ValidCards$ Card.suspended+YouOwn | CounterType$ TIME | CounterNum$ 2 | ValidZone$ Exile SVar:AIRollPlanarDieParams:Mode$ Always | RollInMain1$ True | MaxRollsPerTurn$ 9 -Oracle:Any time you could cast a sorcery, you may exile a nonland card from your hand with X time counters on it, where X is its mana value. If the exiled card doesn't have suspend, it gains suspend. (At the beginning of its owner's upkeep, they remove a time counter. When the last is removed, the player casts it without paying its mana cost. If it's a creature, it has haste.)\nWhenever you roll {CHAOS}, remove two time counters from each suspended card you own. +Oracle:Any time you could cast a sorcery, you may exile a nonland card from your hand with X time counters on it, where X is its mana value. If the exiled card doesn't have suspend, it gains suspend. (At the beginning of its owner's upkeep, they remove a time counter. When the last is removed, the player casts it without paying its mana cost. If it's a creature, it has haste.)\nWhenever chaos ensues, remove two time counters from each suspended card you own. diff --git a/forge-gui/res/cardsfolder/t/tazeem.txt b/forge-gui/res/cardsfolder/t/tazeem.txt index 0d6a2301ebb..2dea5e91ae6 100644 --- a/forge-gui/res/cardsfolder/t/tazeem.txt +++ b/forge-gui/res/cardsfolder/t/tazeem.txt @@ -2,8 +2,8 @@ Name:Tazeem ManaCost:no cost Types:Plane Zendikar S:Mode$ Continuous | Affected$ Creature | EffectZone$ Command | AddHiddenKeyword$ CARDNAME can't block. | Description$ Creatures can't block. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, draw a card for each land you control. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, draw a card for each land you control. SVar:RolledChaos:DB$ Draw | NumCards$ Y | Defined$ You SVar:Y:Count$Valid Land.YouCtrl SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:Creatures can't block.\nWhenever you roll {CHAOS}, draw a card for each land you control. +Oracle:Creatures can't block.\nWhenever chaos ensues, draw a card for each land you control. diff --git a/forge-gui/res/cardsfolder/t/tember_city.txt b/forge-gui/res/cardsfolder/t/tember_city.txt index 9e426cd5994..5de37dcd8a0 100644 --- a/forge-gui/res/cardsfolder/t/tember_city.txt +++ b/forge-gui/res/cardsfolder/t/tember_city.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Kinshala T:Mode$ TapsForMana | ValidCard$ Land | Execute$ TrigDmg | TriggerZones$ Command | TriggerDescription$ Whenever a player taps a land for mana, CARDNAME deals 1 damage to that player. SVar:TrigDmg:DB$ DealDamage | Defined$ TriggeredCardController | NumDmg$ 1 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, each other player sacrifices a nonland permanent. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, each other player sacrifices a nonland permanent. SVar:RolledChaos:DB$ Sacrifice | Defined$ Player.Other | SacValid$ Permanent.nonLand SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:Whenever a player taps a land for mana, Tember City deals 1 damage to that player.\nWhenever you roll {CHAOS}, each other player sacrifices a nonland permanent. +Oracle:Whenever a player taps a land for mana, Tember City deals 1 damage to that player.\nWhenever chaos ensues, each other player sacrifices a nonland permanent. diff --git a/forge-gui/res/cardsfolder/t/the_aether_flues.txt b/forge-gui/res/cardsfolder/t/the_aether_flues.txt index 780e44f762d..a2068b0cd54 100644 --- a/forge-gui/res/cardsfolder/t/the_aether_flues.txt +++ b/forge-gui/res/cardsfolder/t/the_aether_flues.txt @@ -6,7 +6,7 @@ T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ FluesSacrifice | Tri SVar:FluesSacrifice:DB$ Sacrifice | Optional$ True | SacValid$ Creature | Amount$ 1 | RememberSacrificed$ True | SubAbility$ FluesDig SVar:FluesDig:DB$ DigUntil | Valid$ Creature | ValidDescription$ creature | FoundDestination$ Battlefield | RevealedDestination$ Library | Shuffle$ True | ConditionDefined$ Remembered | ConditionPresent$ Creature | ConditionCompare$ EQ1 | SubAbility$ DBCleanup SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, you may put a creature card from your hand onto the battlefield. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you may put a creature card from your hand onto the battlefield. SVar:RolledChaos:DB$ ChangeZone | ChangeType$ Creature | ChangeNum$ 1 | Origin$ Hand | Destination$ Battlefield SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:When you planeswalk to The Aether Flues or at the beginning of your upkeep, you may sacrifice a creature. If you do, reveal cards from the top of your library until you reveal a creature card, put that card onto the battlefield, then shuffle all other cards revealed this way into your library.\nWhenever you roll {CHAOS}, you may put a creature card from your hand onto the battlefield. +Oracle:When you planeswalk to The Aether Flues or at the beginning of your upkeep, you may sacrifice a creature. If you do, reveal cards from the top of your library until you reveal a creature card, put that card onto the battlefield, then shuffle all other cards revealed this way into your library.\nWhenever chaos ensues, you may put a creature card from your hand onto the battlefield. diff --git a/forge-gui/res/cardsfolder/t/the_dark_barony.txt b/forge-gui/res/cardsfolder/t/the_dark_barony.txt index b0ba0c73e7c..ccda8048462 100644 --- a/forge-gui/res/cardsfolder/t/the_dark_barony.txt +++ b/forge-gui/res/cardsfolder/t/the_dark_barony.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Ulgrotha T:Mode$ ChangesZone | Origin$ Any | Destination$ Graveyard | ValidCard$ Card.nonToken+nonBlack | TriggerZones$ Command | Execute$ TrigLoseLife | TriggerDescription$ Whenever a nonblack card is put into a player's graveyard from anywhere, that player loses 1 life. SVar:TrigLoseLife:DB$ LoseLife | Defined$ TriggeredCardOwner | LifeAmount$ 1 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, each opponent discards a card. -SVar:RolledChaos:DB$ Discard | Mode$ TgtChoose | Defined$ Player.Opponent | NumCards$ 1 +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, each opponent discards a card. +SVar:RolledChaos:DB$ Discard | Mode$ TgtChoose | Defined$ Opponent SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:Whenever a nonblack card is put into a player's graveyard from anywhere, that player loses 1 life.\nWhenever you roll {CHAOS}, each opponent discards a card. +Oracle:Whenever a nonblack card is put into a player's graveyard from anywhere, that player loses 1 life.\nWhenever chaos ensues, each opponent discards a card. diff --git a/forge-gui/res/cardsfolder/t/the_eon_fog.txt b/forge-gui/res/cardsfolder/t/the_eon_fog.txt index 19937db26d5..99321af1928 100644 --- a/forge-gui/res/cardsfolder/t/the_eon_fog.txt +++ b/forge-gui/res/cardsfolder/t/the_eon_fog.txt @@ -2,7 +2,7 @@ Name:The Eon Fog ManaCost:no cost Types:Plane Equilor R:Event$ BeginPhase | ActiveZones$ Command | Phase$ Untap | Skip$ True | Description$ Players skip their untap steps. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, untap all permanents you control. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, untap all permanents you control. SVar:RolledChaos:DB$ UntapAll | ValidCards$ Permanent.YouCtrl SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:Players skip their untap steps.\nWhenever you roll {CHAOS}, untap all permanents you control. +Oracle:Players skip their untap steps.\nWhenever chaos ensues, untap all permanents you control. diff --git a/forge-gui/res/cardsfolder/t/the_fourth_sphere.txt b/forge-gui/res/cardsfolder/t/the_fourth_sphere.txt index 58da2d2aa1b..00027653958 100644 --- a/forge-gui/res/cardsfolder/t/the_fourth_sphere.txt +++ b/forge-gui/res/cardsfolder/t/the_fourth_sphere.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Phyrexia T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Command | Execute$ FourthSac | TriggerDescription$ At the beginning of your upkeep, sacrifice a nonblack creature. SVar:FourthSac:DB$ Sacrifice | Defined$ You | SacValid$ Creature.nonBlack -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, put a 2/2 black zombie token onto the battlefield. -SVar:RolledChaos:DB$ Token | TokenScript$ b_2_2_zombie | TokenOwner$ You | TokenAmount$ 1 +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, put a 2/2 black zombie token onto the battlefield. +SVar:RolledChaos:DB$ Token | TokenScript$ b_2_2_zombie SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:At the beginning of your upkeep, sacrifice a nonblack creature.\nWhenever you roll {CHAOS}, create a 2/2 black Zombie creature token. +Oracle:At the beginning of your upkeep, sacrifice a nonblack creature.\nWhenever chaos ensues, create a 2/2 black Zombie creature token. diff --git a/forge-gui/res/cardsfolder/t/the_great_forest.txt b/forge-gui/res/cardsfolder/t/the_great_forest.txt index d0c0e26cfb4..9c523fe03a9 100644 --- a/forge-gui/res/cardsfolder/t/the_great_forest.txt +++ b/forge-gui/res/cardsfolder/t/the_great_forest.txt @@ -2,7 +2,7 @@ Name:The Great Forest ManaCost:no cost Types:Plane Lorwyn S:Mode$ CombatDamageToughness | ValidCard$ Creature | Description$ Each creature assigns combat damage equal to its toughness rather than its power. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, creatures you control get +0/+2 and gain trample until end of turn. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, creatures you control get +0/+2 and gain trample until end of turn. SVar:RolledChaos:DB$ PumpAll | ValidCards$ Creature.ActivePlayerCtrl | NumDef$ 2 | KW$ Trample SVar:AIRollPlanarDieParams:Mode$ Always | MinTurn$ 3 | RollInMain1$ True -Oracle:Each creature assigns combat damage equal to its toughness rather than its power.\nWhenever you roll {CHAOS}, creatures you control get +0/+2 and gain trample until end of turn. +Oracle:Each creature assigns combat damage equal to its toughness rather than its power.\nWhenever chaos ensues, creatures you control get +0/+2 and gain trample until end of turn. diff --git a/forge-gui/res/cardsfolder/t/the_hippodrome.txt b/forge-gui/res/cardsfolder/t/the_hippodrome.txt index 0170900bf88..aaa8a231726 100644 --- a/forge-gui/res/cardsfolder/t/the_hippodrome.txt +++ b/forge-gui/res/cardsfolder/t/the_hippodrome.txt @@ -2,8 +2,8 @@ Name:The Hippodrome ManaCost:no cost Types:Plane Segovia S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature | AddPower$ -5 | Description$ All Creatures get -5/-0. -T:Mode$ PlanarDice | Result$ Chaos | OptionalDecider$ You | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, you may destroy target creature if it's power is 0 or less. +T:Mode$ ChaosEnsues | OptionalDecider$ You | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you may destroy target creature if it's power is 0 or less. SVar:RolledChaos:DB$ Destroy | ValidTgts$ Creature | ConditionCheckSVar$ TgtPow | ConditionSVarCompare$ EQ1 | AITgts$ Creature.OppCtrl+powerLE0 SVar:TgtPow:Targeted$Valid Creature.powerLE0 SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:All creatures get -5/-0.\nWhenever you roll {CHAOS}, you may destroy target creature if its power is 0 or less. +Oracle:All creatures get -5/-0.\nWhenever chaos ensues, you may destroy target creature if its power is 0 or less. diff --git a/forge-gui/res/cardsfolder/t/the_maelstrom.txt b/forge-gui/res/cardsfolder/t/the_maelstrom.txt index f66a9a57fcb..dbdff8d28fb 100644 --- a/forge-gui/res/cardsfolder/t/the_maelstrom.txt +++ b/forge-gui/res/cardsfolder/t/the_maelstrom.txt @@ -4,7 +4,7 @@ Types:Plane Alara T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigDig | OptionalDecider$ You | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your upkeep, you may reveal the top card of your library. If it's a permanent card, you may put it onto the battlefield. If you revealed a card but didn't put it onto the battlefield, put it on the bottom of your library. T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigDig | TriggerZones$ Command | Secondary$ True | OptionalDecider$ You | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your upkeep, you may reveal the top card of your library. If it's a permanent card, you may put it onto the battlefield. If you revealed a card but didn't put it onto the battlefield, put it on the bottom of your library. SVar:TrigDig:DB$ Dig | DigNum$ 1 | Reveal$ True | Optional$ True | ChangeNum$ 1 | ChangeValid$ Permanent | DestinationZone$ Battlefield | DestinationZone2$ Library | LibraryPosition2$ -1 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, return target permanent card from your graveyard to the battlefield. -SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | TgtPrompt$ Choose target permanent card in your graveyard | ValidTgts$ Permanent.YouCtrl +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return target permanent card from your graveyard to the battlefield. +SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | TgtPrompt$ Choose target permanent card in your graveyard | ValidTgts$ Permanent.YouOwn SVar:AIRollPlanarDieParams:Mode$ Always | CardsInGraveyardGE$ 1 -Oracle:When you planeswalk to The Maelstrom or at the beginning of your upkeep, you may reveal the top card of your library. If it's a permanent card, you may put it onto the battlefield. If you revealed a card but didn't put it onto the battlefield, put it on the bottom of your library.\nWhenever you roll {CHAOS}, return target permanent card from your graveyard to the battlefield. +Oracle:When you planeswalk to The Maelstrom or at the beginning of your upkeep, you may reveal the top card of your library. If it's a permanent card, you may put it onto the battlefield. If you revealed a card but didn't put it onto the battlefield, put it on the bottom of your library.\nWhenever chaos ensues, return target permanent card from your graveyard to the battlefield. diff --git a/forge-gui/res/cardsfolder/t/the_zephyr_maze.txt b/forge-gui/res/cardsfolder/t/the_zephyr_maze.txt index 5b9da69d664..a085fd5c480 100644 --- a/forge-gui/res/cardsfolder/t/the_zephyr_maze.txt +++ b/forge-gui/res/cardsfolder/t/the_zephyr_maze.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Kyneth S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.withFlying | AddPower$ 2 | Description$ Creatures with flying get +2/+0. S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.withoutFlying | AddPower$ -2 | Description$ Creatures without flying get -2/-0. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, target creature gains flying until end of turn. -SVar:RolledChaos:DB$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ Flying +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, target creature gains flying until end of turn. +SVar:RolledChaos:DB$ Pump | ValidTgts$ Creature | KW$ Flying SVar:AIRollPlanarDieParams:Mode$ Always | HasCreatureInPlay$ True -Oracle:Creatures with flying get +2/+0.\nCreatures without flying get -2/-0.\nWhenever you roll {CHAOS}, target creature gains flying until end of turn. +Oracle:Creatures with flying get +2/+0.\nCreatures without flying get -2/-0.\nWhenever chaos ensues, target creature gains flying until end of turn. diff --git a/forge-gui/res/cardsfolder/t/trail_of_the_mage_rings.txt b/forge-gui/res/cardsfolder/t/trail_of_the_mage_rings.txt index a1b9f01b541..a7706c648ef 100644 --- a/forge-gui/res/cardsfolder/t/trail_of_the_mage_rings.txt +++ b/forge-gui/res/cardsfolder/t/trail_of_the_mage_rings.txt @@ -2,7 +2,7 @@ Name:Trail of the Mage-Rings ManaCost:no cost Types:Plane Vryn S:Mode$ Continuous | AddKeyword$ Rebound | Affected$ Instant,Sorcery | AffectedZone$ Stack | EffectZone$ Command | Description$ Instant and sorcery spells have rebound. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, you may search your library for an instant or sorcery card, reveal it, put it into your hand, then shuffle. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you may search your library for an instant or sorcery card, reveal it, put it into your hand, then shuffle. SVar:RolledChaos:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Instant,Sorcery | ChangeNum$ 1 | ShuffleNonMandatory$ True SVar:AIRollPlanarDieParams:Mode$ Always -Oracle:Instant and sorcery spells have rebound. (The spell's controller exiles the spell as it resolves if they cast it from their hand. At the beginning of that player's next upkeep, they may cast that card from exile without paying its mana cost.)\nWhenever you roll {CHAOS}, you may search your library for an instant or sorcery card, reveal it, put it into your hand, then shuffle. +Oracle:Instant and sorcery spells have rebound. (The spell's controller exiles the spell as it resolves if they cast it from their hand. At the beginning of that player's next upkeep, they may cast that card from exile without paying its mana cost.)\nWhenever chaos ensues, you may search your library for an instant or sorcery card, reveal it, put it into your hand, then shuffle. diff --git a/forge-gui/res/cardsfolder/t/truga_jungle.txt b/forge-gui/res/cardsfolder/t/truga_jungle.txt index 9d05151baa5..98f262c8da0 100644 --- a/forge-gui/res/cardsfolder/t/truga_jungle.txt +++ b/forge-gui/res/cardsfolder/t/truga_jungle.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Ergamon S:Mode$ Continuous | EffectZone$ Command | AffectedZone$ Battlefield | Affected$ Land | AddAbility$ AnyMana | Description$ All lands have "{T}: Add one mana of any color." SVar:AnyMana:AB$ Mana | Cost$ T | Produced$ Any | Amount$ 1 | SpellDescription$ Add one mana of any color. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, reveal the top three cards of your library. Put all land cards revealed this way into your hand and the rest on the bottom of your library in any order. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, reveal the top three cards of your library. Put all land cards revealed this way into your hand and the rest on the bottom of your library in any order. SVar:RolledChaos:DB$ Dig | DigNum$ 3 | Reveal$ True | ChangeNum$ All | ChangeValid$ Land SVar:AIRollPlanarDieParams:Mode$ Random | Chance$ 20 -Oracle:All lands have "{T}: Add one mana of any color."\nWhenever you roll {CHAOS}, reveal the top three cards of your library. Put all land cards revealed this way into your hand and the rest on the bottom of your library in any order. +Oracle:All lands have "{T}: Add one mana of any color."\nWhenever chaos ensues, reveal the top three cards of your library. Put all land cards revealed this way into your hand and the rest on the bottom of your library in any order. diff --git a/forge-gui/res/cardsfolder/t/turri_island.txt b/forge-gui/res/cardsfolder/t/turri_island.txt index d658a1504b5..90a72ef0b87 100644 --- a/forge-gui/res/cardsfolder/t/turri_island.txt +++ b/forge-gui/res/cardsfolder/t/turri_island.txt @@ -2,7 +2,7 @@ Name:Turri Island ManaCost:no cost Types:Plane Ir S:Mode$ ReduceCost | EffectZone$ Command | ValidCard$ Creature | Type$ Spell | Amount$ 2 | Description$ Creature spells cost {2} less to cast. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, reveal the top three cards of your library. Put all creature cards revealed this way into your hand and the rest into your graveyard. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, reveal the top three cards of your library. Put all creature cards revealed this way into your hand and the rest into your graveyard. SVar:RolledChaos:DB$ Dig | DigNum$ 3 | Reveal$ True | ChangeNum$ All | ChangeValid$ Creature | DestinationZone2$ Graveyard SVar:AIRollPlanarDieParams:Mode$ Random -Oracle:Creature spells cost {2} less to cast.\nWhenever you roll {CHAOS}, reveal the top three cards of your library. Put all creature cards revealed this way into your hand and the rest into your graveyard. +Oracle:Creature spells cost {2} less to cast.\nWhenever chaos ensues, reveal the top three cards of your library. Put all creature cards revealed this way into your hand and the rest into your graveyard. diff --git a/forge-gui/res/cardsfolder/u/undercity_reaches.txt b/forge-gui/res/cardsfolder/u/undercity_reaches.txt index 3a113cc53e6..7e6619fb45e 100644 --- a/forge-gui/res/cardsfolder/u/undercity_reaches.txt +++ b/forge-gui/res/cardsfolder/u/undercity_reaches.txt @@ -3,8 +3,8 @@ ManaCost:no cost Types:Plane Ravnica T:Mode$ DamageDone | ValidSource$ Creature | ValidTarget$ Player | OptionalDecider$ TriggeredSourceController | CombatDamage$ True | TriggerZones$ Command | Execute$ TrigDraw | TriggerDescription$ Whenever a creature deals combat damage to a player, its controller may draw a card. SVar:TrigDraw:DB$ Draw | Defined$ TriggeredSourceController | NumCards$ 1 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, you have no maximum hand size for the rest of the game. -SVar:RolledChaos:DB$ Effect | Name$ Undercity Reaches Effect | StaticAbilities$ STHandSize | Duration$ Permanent +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you have no maximum hand size for the rest of the game. +SVar:RolledChaos:DB$ Effect | StaticAbilities$ STHandSize | Duration$ Permanent SVar:STHandSize:Mode$ Continuous | EffectZone$ Command | Affected$ You | SetMaxHandSize$ Unlimited | Description$ You have no maximum hand size. SVar:AIRollPlanarDieParams:Mode$ Always | LowPriority$ True | MaxRollsPerTurn$ 9 -Oracle:Whenever a creature deals combat damage to a player, its controller may draw a card.\nWhenever you roll {CHAOS}, you have no maximum hand size for the rest of the game. +Oracle:Whenever a creature deals combat damage to a player, its controller may draw a card.\nWhenever chaos ensues, you have no maximum hand size for the rest of the game. diff --git a/forge-gui/res/cardsfolder/upcoming/aetherblade_agent_gitaxian_minsdstinger.txt b/forge-gui/res/cardsfolder/upcoming/aetherblade_agent_gitaxian_minsdstinger.txt index 84f5adc521d..3425d06605d 100644 --- a/forge-gui/res/cardsfolder/upcoming/aetherblade_agent_gitaxian_minsdstinger.txt +++ b/forge-gui/res/cardsfolder/upcoming/aetherblade_agent_gitaxian_minsdstinger.txt @@ -2,10 +2,11 @@ Name:Aetherblade Agent ManaCost:1 B Types:Creature Human Rogue PT:1/1 +K:Deathtouch A:AB$ SetState | Cost$ 4 UP | Mode$ Transform | SorcerySpeed$ True | SpellDescription$ Transform CARDNAME. Activate only as a sorcery. ({U/P} can be paid with either {U} or 2 life.) AlternateMode:DoubleFaced DeckHints:Color$Blue -Oracle:{4}{U/P}: Transform Aetherblade Agent. Activate only as a sorcery. ({U/P} can be paid with either {U} or 2 life.) +Oracle:Deathtouch\n{4}{U/P}: Transform Aetherblade Agent. Activate only as a sorcery. ({U/P} can be paid with either {U} or 2 life.) ALTERNATE diff --git a/forge-gui/res/cardsfolder/upcoming/begin_the_invasion.txt b/forge-gui/res/cardsfolder/upcoming/begin_the_invasion.txt new file mode 100644 index 00000000000..4307ab24a0c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/begin_the_invasion.txt @@ -0,0 +1,8 @@ +Name:Begin the Invasion +ManaCost:X W U B R G +Types:Sorcery +A:SP$ ChangeZone | Origin$ Library | DifferentNames$ True | ChangeTypeDesc$ battle cards with different names | Destination$ Battlefield | ChangeType$ Card.Battle | ChangeNum$ X | SpellDescription$ Search your library for up to X battle cards with different names, put them onto the battlefield, then shuffle. +SVar:X:Count$xPaid +DeckNeeds:Type$Battle +AI:RemoveDeck:Random +Oracle:Search your library for up to X battle cards with different names, put them onto the battlefield, then shuffle. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/calix_guided_by_fate.txt b/forge-gui/res/cardsfolder/upcoming/calix_guided_by_fate.txt new file mode 100644 index 00000000000..c2f91bb20c1 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/calix_guided_by_fate.txt @@ -0,0 +1,11 @@ +Name:Calix, Guided By Fate +ManaCost:1 G W +Types:Legendary Enchantment Creature Human Druid +PT:2/2 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self,Enchantment.YouCtrl+Other | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Constellation — Whenever CARDNAME or another enchantment enters the battlefield under your control, put a +1/+1 counter on target creature. +SVar:TrigPutCounter:DB$ PutCounter | ValidTgts$ Creature | CounterType$ P1P1 | CounterNum$ 1 +T:Mode$ DamageDone | ValidSource$ Card.Self,Creature.enchanted+YouCtrl | OptionalDecider$ You | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigToken | ResolvedLimit$ 1 | TriggerDescription$ Whenever NICKNAME or an enchanted creature you control deals combat damage to a player, you may create a token that's a copy of a nonlegendary enchantment you control. Do this only once each turn. +SVar:TrigToken:DB$ CopyPermanent | Choices$ Enchantment.nonLegendary+YouCtrl | NumCopies$ 1 | ChoiceTitle$ Choose a nonlegendary enchantment you control +DeckHas:Ability$Token +DeckNeeds:Type$Enchantment +Oracle:Constellation — Whenever Calix, Guided by Fate or another enchantment enters the battlefield under your control, put a +1/+1 counter on target creature.\nWhenever Calix or an enchanted creature you control deals combat damage to a player, you may create a token that's a copy of a nonlegendary enchantment you control. Do this only once each turn. diff --git a/forge-gui/res/cardsfolder/upcoming/campus_renovation.txt b/forge-gui/res/cardsfolder/upcoming/campus_renovation.txt new file mode 100644 index 00000000000..dfc0d68e37e --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/campus_renovation.txt @@ -0,0 +1,11 @@ +Name:Campus Renovation +ManaCost:3 R W +Types:Sorcery +A:SP$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Card.Artifact+YouOwn,Card.Enchantment+YouOwn | TgtPrompt$ Select up to one target artifact or enchantment card in your graveyard | TargetMin$ 0 | TargetMax$ 1 | SubAbility$ ExileTwo | SpellDescription$ Return up to one target artifact or enchantment card from your graveyard to the battlefield. +SVar:ExileTwo:DB$ Dig | Defined$ You | DigNum$ 2 | ChangeNum$ All | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBEffect | SpellDescription$ Exile the top two cards of your library. Until the end of your next turn, you may play those cards. +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$ Until the end of your next turn, you may play the exiled cards. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +DeckHints:Type$Artifact|Enchantment +DeckHas:Ability$Graveyard +Oracle:Return up to one target artifact or enchantment card from your graveyard to the battlefield. Exile the top two cards of your library. Until the end of your next turn, you may play those cards. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/cosmic_rebirth.txt b/forge-gui/res/cardsfolder/upcoming/cosmic_rebirth.txt new file mode 100644 index 00000000000..42d9bef69f8 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/cosmic_rebirth.txt @@ -0,0 +1,9 @@ +Name:Cosmic Rebirth +ManaCost:1 G W +Types:Instant +A:SP$ ChangeZone | Optional$ True | ValidTgts$ Permanent.YouOwn | TgtPrompt$ Select target permanent card in your graveyard | Origin$ Graveyard | Destination$ Battlefield | RememberChanged$ True | ConditionDefined$ Targeted | ConditionPresent$ Card.cmcLE3 | SubAbility$ DBChangeZone | SpellDescription$ Choose target permanent card in your graveyard. If it has mana value 3 or less, you may put it onto the battlefield. If you don't put it onto the battlefield, put it into your hand. +SVar:DBChangeZone:DB$ ChangeZone | Defined$ Targeted | Origin$ Graveyard | Destination$ Hand | ConditionDefined$ Remembered | ConditionPresent$ Card | ConditionCompare$ EQ0 | SubAbility$ DBGainLife +SVar:DBGainLife:DB$ GainLife | LifeAmount$ 3 | SubAbility$ DBCleanup | SpellDescription$ You gain 3 life. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +DeckHas:Ability$LifeGain|Graveyard +Oracle:Choose target permanent card in your graveyard. If it has mana value 3 or less, you may put it onto the battlefield. If you don't put it onto the battlefield, put it into your hand.\nYou gain 3 life. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/dance_with_calamity.txt b/forge-gui/res/cardsfolder/upcoming/dance_with_calamity.txt new file mode 100644 index 00000000000..42b5582b20a --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/dance_with_calamity.txt @@ -0,0 +1,12 @@ +Name:Dance with Calamity +ManaCost:7 R +Types:Sorcery +A:SP$ Shuffle | SubAbility$ DBChoose | StackDescription$ {p:You} shuffles their library, | SpellDescription$ Shuffle your library. As many times as you choose, you may exile the top card of your library. If the total mana value of the cards exiled this way is 13 or less, you may cast any number of spells from among those cards without paying their mana costs. +SVar:DBChoose:DB$ GenericChoice | Choices$ DBRepeat,Play | Defined$ You +SVar:DBRepeat:DB$ Repeat | RepeatSubAbility$ DBDig | RepeatOptional$ True | SubAbility$ Play | SpellDescription$ As many times as you choose, you may exile the top card of your library +SVar:DBDig:DB$ Dig | DigNum$ 1 | Reveal$ True | ChangeNum$ All | ChangeValid$ Card | DestinationZone$ Exile | RememberChanged$ True +SVar:Play:DB$ Play | Defined$ Remembered | Amount$ All | WithoutManaCost$ True | Optional$ True | ConditionCheckSVar$ X | ConditionSVarCompare$ LE13 | SubAbility$ DBCleanup | SpellDescription$ If the total mana value of the cards exiled this way is 13 or less, you may cast any number of spells from among those cards without paying their mana costs. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:Remembered$SumCMC +AI:RemoveDeck:Random +Oracle:Shuffle your library. As many times as you choose, you may exile the top card of your library. If the total mana value of the cards exiled this way is 13 or less, you may cast any number of spells from among those cards without paying their mana costs. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/danitha_new_benalias_light.txt b/forge-gui/res/cardsfolder/upcoming/danitha_new_benalias_light.txt new file mode 100644 index 00000000000..b87db46eb66 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/danitha_new_benalias_light.txt @@ -0,0 +1,11 @@ +Name:Danitha, New Benalia's Light +ManaCost:1 G W +Types:Legendary Creature Human Knight +PT:2/3 +K:Vigilance +K:Trample +K:Lifelink +S:Mode$ Continuous | Affected$ Aura.YouOwn,Equipment.YouOwn | Condition$ PlayerTurn | MayPlay$ True | MayPlayLimit$ 1 | EffectZone$ Battlefield | AffectedZone$ Graveyard | Description$ Once during each of your turns, you may cast an Aura or Equipment spell from your graveyard. +DeckHints:Type$Aura|Equipment +DeckHas:Ability$Graveyard|LifeGain +Oracle:Vigilance, trample, lifelink\nOnce during each of your turns, you may cast an Aura or Equipment spell from your graveyard. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/djeru_and_hazoret.txt b/forge-gui/res/cardsfolder/upcoming/djeru_and_hazoret.txt new file mode 100644 index 00000000000..1f51828e02c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/djeru_and_hazoret.txt @@ -0,0 +1,15 @@ +Name:Djeru and Hazoret +ManaCost:2 R R W +Types:Legendary Creature Human God +PT:5/4 +S:Mode$ Continuous | Affected$ Card.Self | AddKeyword$ Vigilance & Haste | CheckSVar$ X | SVarCompare$ LE1 | Description$ As long as you have one or fewer cards in hand, CARDNAME has vigilance and haste. +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigDig | TriggerDescription$ Whenever CARDNAME attacks, look at the top six cards of your library. You may exile a legendary creature card from among them. Put the rest on the bottom of your library in a random order. Until end of turn, you may cast the exiled card without paying its mana cost. +SVar:TrigDig:DB$ Dig | DigNum$ 6 | ChangeNum$ 1 | Optional$ True | ChangeValid$ Creature.Legendary | DestinationZone$ Exile | DestinationZone2$ Library | LibraryPosition$ -1 | RestRandomOrder$ True | RememberChanged$ True | SubAbility$ DBEffect +SVar:DBEffect:DB$ Effect | StaticAbilities$ MayPlay | RememberObjects$ Remembered | ForgetOnMoved$ Exile | SubAbility$ DBCleanup +SVar:MayPlay:Mode$ Continuous | MayPlay$ True | MayPlayWithoutManaCost$ True | EffectZone$ Command | Affected$ Card.IsRemembered+nonLand | AffectedZone$ Exile | Description$ Until end of turn, you may cast this card without paying its mana cost. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:Count$InYourHand +SVar:PlayMain1:TRUE +SVar:HasAttackEffect:TRUE +DeckNeeds:Type$Legendary +Oracle:As long as you have one or fewer cards in hand, Dieru and Hazoret has vigilance and haste.\nWhenever Djeru and Hazoret attacks, look at the top six cards of your library. You may exile a legendary creature card from among them. Put the rest on the bottom of your library in a random order. Until end of turn, you may cast the exiled card without paying its mana cost. diff --git a/forge-gui/res/cardsfolder/upcoming/elspeths_talent.txt b/forge-gui/res/cardsfolder/upcoming/elspeths_talent.txt new file mode 100644 index 00000000000..9254a70e84d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/elspeths_talent.txt @@ -0,0 +1,12 @@ +Name:Elspeth's Talent +ManaCost:2 W W +Types:Enchantment Aura +K:Enchant planeswalker +A:SP$ Attach | AILogic$ Pump | ValidTgts$ Planeswalker +S:Mode$ Continuous | Affected$ Planeswalker.EnchantedBy | AddAbility$ ElspethPlus | Description$ Enchanted planeswalker has "[+1]: Create three 1/1 white Soldier creature tokens." +SVar:ElspethPlus:AB$ Token | Cost$ AddCounter<1/LOYALTY> | TokenAmount$ 3 | TokenScript$ w_1_1_soldier | TokenOwner$ You | Planeswalker$ True | SpellDescription$ Create three 1/1 white Soldier creature tokens. +T:Mode$ AbilityCast | ValidCard$ Planeswalker.EnchantedBy+inRealZoneBattlefield | ValidSA$ Activated.Loyalty | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPumpAll | TriggerDescription$ Whenever you activate a loyalty ability of enchanted planeswalker, creatures you control get +2/+2 and gain vigilance until end of turn. +SVar:TrigPumpAll:DB$ PumpAll | ValidCards$ Creature.YouCtrl | NumAtt$ +2 | NumDef$ +2 | KW$ Vigilance +SVar:BuffedBy:Creature +DeckNeeds:Type$Planeswalker +Oracle:Enchant planeswalker\nEnchanted planeswalker has "[+1]: Create three 1/1 white Soldier creature tokens."\nWhenever you activate a loyalty ability of enchanted planeswalker, creatures you control get +2/+2 and gain vigilance until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/enigma_ridges.txt b/forge-gui/res/cardsfolder/upcoming/enigma_ridges.txt new file mode 100644 index 00000000000..af3971aa3dd --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/enigma_ridges.txt @@ -0,0 +1,13 @@ +Name:Enigma Ridges +ManaCost:no cost +Types:Plane Echoir +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigRepeatEach | TriggerDescription$ When you planeswalk to CARDNAME, each player who controls fewer lands than the player who controls the most lands searches their library for a number of basic land cards less than or equal to the difference, reveals them, puts them into their hand, then shuffles. +SVar:TrigRepeatEach:DB$ RepeatEach | RepeatPlayers$ Player | RepeatSubAbility$ DBChangeZone +SVar:DBChangeZone:DB$ ChangeZone | ConditionCheckSVar$ X | ConditionSVarCompare$ LTY | DefinedPlayer$ Remembered | Chooser$ Remembered | ChangeType$ Land.Basic | ChangeNum$ Z | Origin$ Library | Destination$ Hand +SVar:X:Count$Valid Land.RememberedPlayerCtrl +SVar:Y:PlayerCountPlayers$HighestValid Land.YouCtrl +SVar:Z:SVar$Y/Minus.X +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, draw a card, then you may put a land card from your hand onto the battlefield. +SVar:RolledChaos:DB$ Draw | Defined$ You | NumCards$ 1 | SubAbility$ DBChangeZoneBis +SVar:DBChangeZoneBis:DB$ ChangeZone | Origin$ Hand | Destination$ Battlefield | Optional$ You | ChangeType$ Land | ChangeNum$ 1 +Oracle:When you planeswalk to Enigma Ridges, each player who controls fewer lands than the player who controls the most lands searches their library for a number of basic land cards less than or equal to the difference, reveals them, puts them into their hand, then shuffles.\nWhenever chaos ensues, draw a card, then you may put a land card from your hand onto the battlefield. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/esper.txt b/forge-gui/res/cardsfolder/upcoming/esper.txt index 67e70691b47..f330c3eb04f 100644 --- a/forge-gui/res/cardsfolder/upcoming/esper.txt +++ b/forge-gui/res/cardsfolder/upcoming/esper.txt @@ -2,8 +2,8 @@ Name:Esper ManaCost:no cost Types:Plane Alara S:Mode$ ReduceCost | EffectZone$ Command | ValidCard$ Artifact | Type$ Spell | Amount$ 1 | Description$ Artifact spells cost {1} less to cast. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, creatures you control that are white, blue, and/or black become artifacts in addition to other types until end of turn. Then each artifact creature you control gains vigilance, menace, and lifelink until end of turn. -SVar:RolledChaos:DB$ AnimateAll | Cost$ 2 G | ValidCards$ Creature.YouCtrl+Black,Creature.YouCtrl+Blue,Creature.YouCtrl+White | Types$ Artifact | SubAbility$ DBPumpAll +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, creatures you control that are white, blue, and/or black become artifacts in addition to other types until end of turn. Then each artifact creature you control gains vigilance, menace, and lifelink until end of turn. +SVar:RolledChaos:DB$ AnimateAll | ValidCards$ Creature.YouCtrl+Black,Creature.YouCtrl+Blue,Creature.YouCtrl+White | Types$ Artifact | SubAbility$ DBPumpAll SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Creature.Artifact+YouCtrl | KW$ Vigilance & Menace & Lifelink DeckHas:Ability$LifeGain DeckHints:Type$Artifact diff --git a/forge-gui/res/cardsfolder/upcoming/firemane_commando.txt b/forge-gui/res/cardsfolder/upcoming/firemane_commando.txt new file mode 100644 index 00000000000..7776b65f240 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/firemane_commando.txt @@ -0,0 +1,11 @@ +Name:Firemane Commando +ManaCost:3 W +Types:Creature Angel Soldier +PT:4/3 +K:Flying +T:Mode$ AttackersDeclared | Execute$ TrigDraw | IsPresent$ Creature.attacking+YouCtrl | PresentCompare$ GE2 | NoResolvingCheck$ True | TriggerZones$ Battlefield | AttackingPlayer$ You | TriggerDescription$ Whenever you attack with two or more creatures, draw a card. +SVar:TrigDraw:DB$ Draw +T:Mode$ AttackersDeclared | Execute$ TrigTheyDraw | IsPresent$ Creature.attacking | PresentCompare$ GE2 | NoResolvingCheck$ True | TriggerZones$ Battlefield | AttackingPlayer$ Player.Other | TriggerDescription$ Whenever another player attacks with two or more creatures, they draw a card if none of those creatures attacked you. +SVar:TrigTheyDraw:DB$ Draw | Defined$ TriggeredAttackingPlayer | ConditionPresent$ Creature.attackingYou | ConditionCompare$ EQ0 +SVar:PlayMain1:TRUE +Oracle:Flying\nWhenever you attack with two or more creatures, draw a card.\nWhenever another player attacks with two or more creatures, they draw a card if none of those creatures attacked you. diff --git a/forge-gui/res/cardsfolder/upcoming/ghirapur.txt b/forge-gui/res/cardsfolder/upcoming/ghirapur.txt new file mode 100644 index 00000000000..098aefa91d6 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/ghirapur.txt @@ -0,0 +1,10 @@ +Name:Ghirapur +ManaCost:no cost +Types:Plane Kaladesh +T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | TriggerZones$ Command | Execute$ TrigAnimateAll | TriggerDescription$ At the beginning of combat on your turn, until end of turn, each noncreature, non-Vehicle artifact you control becomes a 5/3 Vehicle in addition to its other types and gains trample, haste, and crew 2. +SVar:TrigAnimateAll:DB$ AnimateAll | ValidCards$ Artifact.nonCreature+YouCtrl+nonVehicle | Power$ 5 | Toughness$ 3 | Types$ Vehicle | Keywords$ Crew:2 & Trample & Haste +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return target noncreature artifact card from your graveyard to your hand. +SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Artifact.nonCreature+YouCtrl | TgtPrompt$ Select target noncreature artifact spell from your graveyard +DeckHas:Ability$Graveyard +DeckHints:Type$Artifact +Oracle:At the beginning of combat on your turn, until end of turn, each noncreature, non-Vehicle artifact you control becomes a 5/3 Vehicle in addition to its other types and gains trample, haste, and crew 2.\nWhenever chaos ensues, return target noncreature artifact card from your graveyard to your hand. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/gold_forged_thopteryx.txt b/forge-gui/res/cardsfolder/upcoming/gold_forged_thopteryx.txt new file mode 100644 index 00000000000..51833b58952 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/gold_forged_thopteryx.txt @@ -0,0 +1,10 @@ +Name:Gold-Forged Thopteryx +ManaCost:W U +Types:Artifact Creature Dinosaur Thopter +PT:1/3 +K:Flying +K:Lifelink +S:Mode$ Continuous | Affected$ Permanent.YouCtrl+Legendary | AddKeyword$ Ward:2 | Description$ Each legendary permanent you control has ward {2}. +DeckHas:Ability$LifeGain +DeckHints:Type$Legendary +Oracle:Flying, lifelink\nEach legendary permanent you control has ward {2}. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/harnessed_snubhorn.txt b/forge-gui/res/cardsfolder/upcoming/harnessed_snubhorn.txt new file mode 100644 index 00000000000..72c601a6758 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/harnessed_snubhorn.txt @@ -0,0 +1,10 @@ +Name:Harnessed Snubhorn +ManaCost:3 W +Types:Creature Dinosaur +PT:2/5 +K:Vigilance +T:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player | Execute$ TrigReturn | CombatDamage$ True | TriggerDescription$ Whenever CARDNAME deals combat damage to a player, return target artifact or enchantment card from your graveyard to the battlefield. +SVar:TrigReturn:DB$ ChangeZone | ValidTgts$ Artifact.YouOwn,Enchantment.YouOwn | TgtPrompt$ Select target artifact or enchantment card from your graveyard | Origin$ Graveyard | Destination$ Battlefield +DeckHas:Ability$Graveyard +DeckHints:Type$Artifact|Enchantment +Oracle:Whenever Harnessed Snubhorn deals combat damage to a player, return target artifact or enchantment card from your graveyard to the battlefield. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_azgol_ashen_reaper.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_azgol_ashen_reaper.txt new file mode 100644 index 00000000000..7a7d5c8fda3 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_azgol_ashen_reaper.txt @@ -0,0 +1,23 @@ +Name:Invasion of Azgol +ManaCost:B R +Types:Battle Siege +Defense:4 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigSacrifice | TriggerDescription$ When CARDNAME enters the battlefield, target player sacrifices a creature or planeswalker and loses 1 life. +SVar:TrigSacrifice:DB$ Sacrifice | ValidTgts$ Player | SacValid$ Creature,Planeswalker | SacMessage$ Creature or Planeswalker | SubAbility$ DBLoseLife +SVar:DBLoseLife:DB$ LoseLife | Defined$ TargetedPlayer | LifeAmount$ 1 +AlternateMode:DoubleFaced +DeckHas:Ability$Sacrifice|Counters +Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Azgol enters the battlefield, target player sacrifices a creature or planeswalker and loses 1 life. + +ALTERNATE + +Name:Ashen Reaper +ManaCost:no cost +Colors:black,red +Types:Creature Zombie Elemental +PT:2/1 +K:Menace +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 if a permanent was put into a graveyard from the battlefield this turn. +SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 | ConditionCheckSVar$ Morbid | ConditionSVarCompare$ GE1 +SVar:Morbid:Count$ThisTurnEntered_Graveyard_from_Battlefield_Permanent +Oracle:Menace\nAt the beginning of your end step, put a +1/+1 counter on Ashen Reaper if a permanent was put into a graveyard from the battlefield this turn. diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_belenon_belenon_war_anthem.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_belenon_belenon_war_anthem.txt new file mode 100644 index 00000000000..bd4e442a572 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_belenon_belenon_war_anthem.txt @@ -0,0 +1,18 @@ +Name:Invasion of Belenon +ManaCost:2 W +Types:Battle Siege +Defense:5 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, create a 2/2 white and blue Knight creature token with vigilance. +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ wu_2_2_knight_vigilance +DeckHas:Ability$Token|Discard & Type$Knight & Color$Blue +AlternateMode:DoubleFaced +Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Belenon enters the battlefield, create a 2/2 white and blue Knight creature token with vigilance. + +ALTERNATE + +Name:Belenon War Anthem +ManaCost:no cost +Colors:white +Types:Enchantment +S:Mode$ Continuous | Affected$ Creature.YouCtrl | AddPower$ 1 | AddToughness$ 1 | Description$ Creatures you control get +1/+1. +Oracle:Creatures you control get +1/+1. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_eldraine_prickle_faeries.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_eldraine_prickle_faeries.txt new file mode 100644 index 00000000000..e46418407f9 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_eldraine_prickle_faeries.txt @@ -0,0 +1,23 @@ +Name:Invasion of Eldraine +ManaCost:3 B +Types:Battle Siege +Defense:4 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDiscard | TriggerDescription$ When CARDNAME enters the battlefield, target opponent discards two cards. +SVar:TrigDiscard:DB$ Discard | ValidTgts$ Opponent | NumCards$ 2 | Mode$ TgtChoose +DeckHas:Ability$Discard +DeckHints:Ability$Discard +AlternateMode:DoubleFaced +Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Eldraine enters the battlefield, target opponent discards two cards. + +ALTERNATE + +Name:Prickle Faeries +ManaCost:no cost +Colors:black +Types:Creature Faerie +PT:2/2 +K:Flying +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Opponent | CheckSVar$ TrigCount | SVarCompare$ LE2 | TriggerZones$ Battlefield | Execute$ TrigDmg | TriggerDescription$ At the beginning of each opponent's upkeep, if that player has two or fewer cards in hand, CARDNAME deals 2 damage to them. +SVar:TrigDmg:DB$ DealDamage | NumDmg$ 2 | Defined$ TriggeredPlayer +SVar:TrigCount:Count$ValidHand Card.ActivePlayerCtrl +Oracle:Flying\nAt the beginning of each opponent's upkeep, if that player has two or fewer cards in hand, Prickle Faeries deals 2 damage to them. diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_ergamon_truga_cliffcharger.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_ergamon_truga_cliffcharger.txt new file mode 100644 index 00000000000..794f6c22cf5 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_ergamon_truga_cliffcharger.txt @@ -0,0 +1,23 @@ +Name:Invasion of Ergamon +ManaCost:R G +Types:Battle Siege +Defense:5 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigTreasure | TriggerDescription$ When CARDNAME enters the battlefield, create a Treasure token. Then you may discard a card. If you do, draw a card. +SVar:TrigTreasure:DB$ Token | TokenAmount$ 1 | TokenScript$ c_a_treasure_sac | TokenOwner$ You | SubAbility$ DBLoot +SVar:DBLoot:DB$ Draw | UnlessCost$ Discard<1/Card> | UnlessSwitched$ True | UnlessPayer$ You +DeckHas:Ability$Discard|Token & Type$Treasure +DeckHints:Type$Battle +AlternateMode:DoubleFaced +Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Ergamon enters the battlefield, create a Treasure token. Then you may discard a card. If you do, draw a card. + +ALTERNATE + +Name:Truga Cliffcharger +ManaCost:no cost +Colors:red,green +Types:Creature Rhino +PT:3/4 +K:Trample +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChangeZone | TriggerDescription$ When CARDNAME enters the battlefield, you may discard a card. If you do, search your library for a land or battle card, reveal it, put it into your hand, then shuffle. +SVar:TrigChangeZone:AB$ ChangeZone | Cost$ Discard<1/Card> | Origin$ Library | Destination$ Hand | ChangeType$ Land,Battle | ChangeNum$ 1 +Oracle:Trample\nWhen Truga Cliffcharger enters the battlefield, you may discard a card. If you do, search your library for a land or battle card, reveal it, put it into your hand, then shuffle. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_gobakhan_lightshield_array.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_gobakhan_lightshield_array.txt new file mode 100644 index 00000000000..c43611ba3b2 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_gobakhan_lightshield_array.txt @@ -0,0 +1,26 @@ +Name:Invasion of Gobakhan +ManaCost:1 W +Types:Battle Siege +Defense:3 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigLook | TriggerDescription$ When CARDNAME enters the battlefield, look at target opponent's hand. You may exile a nonland card from it. For as long as that card remains exiled, its owner may play it. A spell cast this way costs {2} more to cast. +SVar:TrigLook:DB$ RevealHand | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | Look$ True | RememberRevealed$ True | SubAbility$ DBChooseCard +SVar:DBChooseCard:DB$ ChooseCard | ChoiceZone$ Hand | Choices$ Card.nonLand+IsRemembered | ChoiceTitle$ You may exile a nonland card from it | MinAmount$ 0 | Amount$ 1 | SubAbility$ DBChangeZone +SVar:DBChangeZone:DB$ ChangeZone | Defined$ ChosenCard | Origin$ Hand | Destination$ Exile | Imprint$ True | SubAbility$ DBEffect +SVar:DBEffect:DB$ Effect | Duration$ Permanent | StaticAbilities$ MayPlay,CostsMore | RememberObjects$ Imprinted | ForgetOnMoved$ Exile | SubAbility$ DBCleanup +SVar:MayPlay:Mode$ Continuous | Affected$ Card.IsRemembered | AffectedZone$ Exile | MayPlay$ True | MayPlayPlayer$ CardOwner +SVar:CostsMore:Mode$ RaiseCost | ValidCard$ Card.IsRemembered | AffectedZone$ Exile | Type$ Spell | Amount$ 2 +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearChosenCard$ True | ClearImprinted$ True +AlternateMode:DoubleFaced +DeckHas:Ability$Counters|Sacrifice +Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Gobakhan enters the battlefield, look at target opponent's hand. You may exile a nonland card from it. For as long as that card remains exiled, its owner may play it. A spell cast this way costs {2} more to cast. + +ALTERNATE + +Name:Lightshield Array +ManaCost:no cost +Colors:white +Types:Enchantment +A:AB$ PumpAll | Cost$ Sac<1/CARDNAME> | ValidCards$ Creature.YouCtrl | KW$ Indestructible & Hexproof | SpellDescription$ Creatures you control gain hexproof and indestructible until end of 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 each creature that attacked this turn. +SVar:TrigPutCounter:DB$ PutCounterAll | ValidCards$ Creature.attackedThisTurn | CounterType$ P1P1 | CounterNum$ 1 +Oracle:At the beginning of your end step, put a +1/+1 counter on each creature that attacked this turn.\nSacrifice Lightshield Array: Creatures you control gain hexproof and indestructible until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_ikoria_zilortha_apex_of_ikoria.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_ikoria_zilortha_apex_of_ikoria.txt new file mode 100644 index 00000000000..6ba4215041d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_ikoria_zilortha_apex_of_ikoria.txt @@ -0,0 +1,20 @@ +Name:Invasion of Ikoria +ManaCost:X G G +Types:Battle Siege +Defense:6 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigSearch | TriggerDescription$ When CARDNAME enters the battlefield, search your library and/or graveyard for a non-Human creature card with mana value X or less and put it onto the battlefield. If you search your library this way, shuffle. +SVar:TrigSearch:DB$ ChangeZone | ChangeType$ Creature.YouCtrl+nonHuman+cmcLEX | Hidden$ True | Origin$ Library | OriginAlternative$ Graveyard | AlternativeMessage$ Would you like to search your library with this ability? If you do, your library will be shuffled. | Destination$ Battlefield | ShuffleNonMandatory$ True +SVar:X:Count$xPaid +AlternateMode:DoubleFaced +Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Ikoria enters the battlefield, search your library and/or graveyard for a non-Human creature card with mana value X or less and put it onto the battlefield. If you search your library this way, shuffle. + +ALTERNATE + +Name:Zilortha, Apex of Ikoria +ManaCost:no cost +Colors:green +Types:Legendary Creature Dinosaur +PT:8/8 +K:Reach +S:Mode$ AssignCombatDamageAsUnblocked | ValidCard$ Creature.YouCtrl+nonHuman | Optional$ True | Description$ For each non-Human creature you control, you may have that creature assign its combat damage as though it weren't blocked. +Oracle:Reach\nFor each non-Human creature you control, you may have that creature assign its combat damage as though it weren't blocked. diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_kaladesh_aetherwing_golden_scale_flagship.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_kaladesh_aetherwing_golden_scale_flagship.txt new file mode 100644 index 00000000000..cfaac44d14e --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_kaladesh_aetherwing_golden_scale_flagship.txt @@ -0,0 +1,23 @@ +Name:Invasion of Kaladesh +ManaCost:U R +Types:Battle Siege +Defense:4 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, create a 1/1 colorless Thopter artifact creature token with flying. +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenOwner$ You | TokenScript$ c_1_1_a_thopter_flying +DeckHas:Ability$Token & Type$Thopter +DeckHints:Type$Artifact +AlternateMode:DoubleFaced +Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Kaladesh enters the battlefield, create a 1/1 colorless Thopter artifact creature token with flying. + +ALTERNATE + +Name:Aetherwing, Golden-Scale Flagship +ManaCost:no cost +Colors:blue,red +Types:Legendary Artifact Vehicle +PT:*/4 +K:Flying +K:Crew:1 +S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ X | Description$ CARDNAME's power is equal to the number of artifacts you control. +SVar:X:Count$Valid Artifact.YouCtrl +Oracle:Flying\nAetherwing, Golden-Scale Flagship's power is equal to the number of artifacts you control.\nCrew 1 (Tap any number of creatures you control with total power 1 or more: This Vehicle becomes an artifact creature until end of turn.) diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_muraganda_primordial_plasm.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_muraganda_primordial_plasm.txt new file mode 100644 index 00000000000..51f5c2521d2 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_muraganda_primordial_plasm.txt @@ -0,0 +1,22 @@ +Name:Invasion of Muraganda +ManaCost:4 G +Types:Battle Siege +Defense:6 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigCounter | TriggerDescription$ When CARDNAME enters the battlefield, put a +1/+1 counter on target creature you control. Then that creature fights up to one target creature you don't control. +SVar:TrigCounter:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Choose target creature you control | CounterType$ P1P1 | CounterNum$ 1 | AILogic$ Fight | SubAbility$ DBFight +SVar:DBFight:DB$ Fight | Defined$ ParentTarget | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Creature.YouDontCtrl | AILogic$ Always | TgtPrompt$ Choose up to one target creature you don't control +DeckHas:Ability$Counters +AlternateMode:DoubleFaced +Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Muraganda enters the battlefield, put a +1/+1 counter on target creature you control. Then that creature fights up to one target creature you don't control. + +ALTERNATE + +Name:Primordial Plasm +ManaCost:no cost +Colors:green +Types:Creature Ooze +PT:4/4 +T:Mode$ Phase | Phase$ BeginCombat | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigPump | TriggerDescription$ At the beginning of combat on your turn, another target creature gets +2/+2 and loses all abilities until end of turn. +SVar:TrigPump:DB$ Pump | ValidTgts$ Creature.Other | TgtPrompt$ Select another target creature | NumAtt$ 2 | NumDef$ 2 | SubAbility$ DBAnimate +SVar:DBAnimate:DB$ Animate | Defined$ Targeted | RemoveAllAbilities$ True +Oracle:At the beginning of combat on your turn, another target creature gets +2/+2 and loses all abilities until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_ravnica_guildpact_paragon.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_ravnica_guildpact_paragon.txt new file mode 100644 index 00000000000..92aaf6e509d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_ravnica_guildpact_paragon.txt @@ -0,0 +1,18 @@ +Name:Invasion of Ravnica +ManaCost:5 +Types:Battle Siege +Defense:4 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$ When CARDNAME enters the battlefield, exile target nonland permanent an opponent controls that isn't exactly two colors. +SVar:TrigExile:DB$ ChangeZone | ValidTgts$ Permanent.nonLand+OppCtrl+!numColorsEQ2 | TgtPrompt$ Select target nonland, permanent an opponent controls that isn't exactly two colors.. | Origin$ Battlefield | Destination$ Exile +AlternateMode:DoubleFaced +Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Ravnica enters the battlefield, exile target nonland permanent an opponent controls that isn't exactly two colors. + +ALTERNATE + +Name:Guildpact Paragon +ManaCost:no cost +Types:Artifact Creature Construct +PT:5/5 +T:Mode$ SpellCast | ValidCard$ Card.numColorsEQ2 | ValidActivatingPlayer$ You | Execute$ TrigDig | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast a spell that's exactly two colors, look at the top six cards of your library. You may reveal a card that's exactly two colors from among them and put it into your hand. Put the rest on the bottom of your library in a random order. +SVar:TrigDig:DB$ Dig | DigNum$ 6 | ChangeNum$ 1 | ChangeValid$ Card.numColorsEQ2 | Optional$ True | DestinationZone$ Hand | RestRandomOrder$ True +Oracle:Whenever you cast a spell that's exactly two colors, look at the top six cards of your library. You may reveal a card that's exactly two colors from among them and put it into your hand. Put the rest on the bottom of your library in a random order. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_shandalar_leyline_surge.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_shandalar_leyline_surge.txt new file mode 100644 index 00000000000..81917e07fad --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_shandalar_leyline_surge.txt @@ -0,0 +1,19 @@ +Name:Invasion of Shandalar +ManaCost:3 G G +Types:Battle Siege +Defense:4 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigReturn | TriggerDescription$ When CARDNAME enters the battlefield, return up to three target permanent cards from your graveyard to your hand. +SVar:TrigReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | TargetMin$ 0 | TargetMax$ 3 | TgtPrompt$ Choose up to three target permanent cards in your graveyard | ValidTgts$ Permanent.YouOwn +DeckHas:Ability$Graveyard +AlternateMode:DoubleFaced +Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Shandalar enters the battlefield, return up to three target permanent cards from your graveyard to your hand. + +ALTERNATE + +Name:Leyline Surge +ManaCost:no cost +Colors:green +Types:Enchantment +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigChangeZone | TriggerDescription$ At the beginning of your upkeep, you may put a permanent card from your hand onto the battlefield. +SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Hand | Destination$ Battlefield | ChangeType$ Permanent.YouOwn +Oracle:At the beginning of your upkeep, you may put a permanent card from your hand onto the battlefield. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt new file mode 100644 index 00000000000..a26d964ba99 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_tarkir_defiant_thundermaw.txt @@ -0,0 +1,26 @@ +Name:Invasion of Tarkir +ManaCost:1 R +Types:Battle Siege +Defense:5 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigReveal | TriggerDescription$ When CARDNAME enters the battlefield, reveal any number of Dragon cards from your hand. When you do, CARDNAME deals X plus 2 damage to any other target, where X is the number of cards revealed this way. (X can be 0.) +SVar:TrigReveal:DB$ Reveal | RevealValid$ Card.Dragon+YouOwn | AnyNumber$ True | RememberRevealed$ True | SubAbility$ DBImmediateTrig +SVar:DBImmediateTrig:DB$ ImmediateTrigger | Execute$ TrigDamageBis | RememberObjects$ Remembered | SubAbility$ DBCleanup | TriggerDescription$ When you do, CARDNAME deals X plus 2 damage to any other target, where X is the number of cards revealed this way. (X can be 0.) +SVar:TrigDamageBis:DB$ DealDamage | ValidTgts$ Creature.Other,Player,Planeswalker.Other,Battle.Other | TgtPrompt$ Select any other target | NumDmg$ X +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:TriggerRemembered$Amount/Plus.2 +DeckHints:Type$Dragon +AlternateMode:DoubleFaced +Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Tarkir enters the battlefield, reveal any number of Dragon cards from your hand. When you do, Invasion of Tarkir deals X plus 2 damage to any other target, where X is the number of cards revealed this way. (X can be 0.) + +ALTERNATE + +Name:Defiant Thundermaw +ManaCost:no cost +Colors:red +Types:Creature Dragon +PT:4/4 +K:Trample +K:Flying +T:Mode$ Attacks | ValidCard$ Dragon.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever a Dragon you control attacks, it deals 2 damage to any target. +SVar:TrigDamage:DB$ DealDamage | ValidTgts$ Any | NumDmg$ 2 +Oracle:Flying, trample\nWhenever a Dragon you control attacks, it deals 2 damage to any target. diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_theros_ephara_ever_sheltering.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_theros_ephara_ever_sheltering.txt new file mode 100644 index 00000000000..8c2130f707d --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_theros_ephara_ever_sheltering.txt @@ -0,0 +1,22 @@ +Name:Invasion of Theros +ManaCost:2 W +Types:Battle Siege +Defense:4 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigSearch | TriggerDescription$ When CARDNAME enters the battlefield, search your library for an Aura, God, or Demigod card, reveal it, put it into your hand, then shuffle. +SVar:TrigSearch:DB$ ChangeZone | Origin$ Library | Destination$ Hand | ChangeType$ Aura,Demigod,God | ChangeNum$ 1 | Shuffle$ True +DeckHints:Type$God|Demigod|Aura|Enchantment +DeckHas:Ability$LifeGain +AlternateMode:DoubleFaced +Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Theros enters the battlefield, search your library for an Aura, God, or Demigod card, reveal it, put it into your hand, then shuffle. + +ALTERNATE + +Name:Ephara, Ever-Sheltering +ManaCost:no cost +Colors:white,blue +Types:Legendary Enchantment Creature God +PT:4/4 +S:Mode$ Continuous | Affected$ Card.Self | AddKeyword$ Lifelink & Indestructible | IsPresent$ Enchantment.Other+YouCtrl | PresentCompare$ GE3 | Description$ CARDNAME has lifelink and indestructible as long as you control at least three other enchantments. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Enchantment.Other+YouCtrl | Execute$ TrigDraw | TriggerDescription$ Whenever another enchantment enters the battlefield under your control, draw a card. +SVar:TrigDraw:DB$ Draw | Defined$ You | NumCards$ 1 +Oracle:Ephara, Ever-Sheltering has lifelink and indestructible as long as you control at least three other enchantments.\nWhenever another enchantment enters the battlefield under your control, draw a card. diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_tolvada_the_broken_sky.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_tolvada_the_broken_sky.txt new file mode 100644 index 00000000000..a90ee9caec1 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_tolvada_the_broken_sky.txt @@ -0,0 +1,21 @@ +Name:Invasion of Tolvada +ManaCost:3 W B +Types:Battle Siege +Defense:5 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigChangeZone | TriggerDescription$ When CARDNAME enters the battlefield, return target nonbattle permanent card from your graveyard to the battlefield. +SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Permanent.nonBattle+YouCtrl | TgtPrompt$ Select target nonbattle permanent card in your graveyard +AlternateMode:DoubleFaced +DeckHas:Ability$Graveyard|Token & Type$Spirit +DeckHints:Ability$Graveyard|Mill|Tokens|LifeGain +Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Tolvada enters the battlefield, return target nonbattle permanent card from your graveyard to the battlefield + +ALTERNATE + +Name:The Broken Sky +ManaCost:no cost +Colors:white,black +Types:Enchantment +S:Mode$ Continuous | Affected$ Creature.token+YouCtrl | AddPower$ 1 | AddKeyword$ Lifelink | Description$ Creature tokens you control get +1/+0 and have lifelink. +T:Mode$ Phase | Phase$ End of Turn | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigToken | TriggerDescription$ At the beginning of your end step, create a 1/1 white and black Spirit creature token with flying. +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenOwner$ You | TokenScript$ wb_1_1_spirit_flying +Oracle:Creature tokens you control get +1/+0 and have lifelink.\nAt the beginning of your end step, create a 1/1 white and black Spirit creature token with flying. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_ulgrotha_grandmother_ravi_sengir.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_ulgrotha_grandmother_ravi_sengir.txt new file mode 100644 index 00000000000..499d2f11dd4 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_ulgrotha_grandmother_ravi_sengir.txt @@ -0,0 +1,23 @@ +Name:Invasion of Ulgrotha +ManaCost:4 B +Types:Battle Siege +Defense:5 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDrain | TriggerDescription$ When CARDNAME enters the battlefield, it deals 3 damage to any other target and you gain 3 life. +SVar:TrigDrain:DB$ DealDamage | ValidTgts$ Creature.Other,Player,Planeswalker.Other,Battle.Other | TgtPrompt$ Select any other target | NumDmg$ 3 | SubAbility$ DBGainLife +SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 3 +DeckHas:Ability$Counters|LifeGain +AlternateMode:DoubleFaced +Oracle:When Invasion of Ulgrotha enters the battlefield, it deals 3 damage to any other target and you gain 3 life. + +ALTERNATE + +Name:Grandmother Ravi Sengir +ManaCost:no cost +Colors:black +Types:Legendary Creature Human Wizard +PT:3/3 +K:Flying +T:Mode$ ChangesZone | Origin$ Battlefield | ValidCard$ Creature.OppCtrl | Destination$ Graveyard | TriggerZones$ Battlefield | Execute$ DeathGift | TriggerDescription$ Whenever a creature an opponent controls dies, put a +1/+1 counter on CARDNAME and you gain 1 life. +SVar:DeathGift:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 | SubAbility$ DBGainLifeBis +SVar:DBGainLifeBis:DB$ GainLife | Defined$ You | LifeAmount$ 1 +Oracle:Flying\nWhenever a creature an opponent controls dies, put a +1/+1 counter on Grandmother Ravi Sengir and you gain 1 life. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/invasion_of_xerex_vertex_paladin.txt b/forge-gui/res/cardsfolder/upcoming/invasion_of_xerex_vertex_paladin.txt new file mode 100644 index 00000000000..b7af3a1ee38 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/invasion_of_xerex_vertex_paladin.txt @@ -0,0 +1,20 @@ +Name:Invasion of Xerex +ManaCost:2 W U +Types:Battle Siege +Defense:4 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigReturn | TriggerDescription$ When CARDNAME enters the battlefield, return up to one target creature to its owner's hand. +SVar:TrigReturn:DB$ ChangeZone | ValidTgts$ Creature | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Select up to one target creature | Origin$ Battlefield | Destination$ Hand +AlternateMode:DoubleFaced +Oracle:(As a Siege enters, choose an opponent to protect it. You and others can attack it. When it's defeated, exile it, then cast it transformed.)\nWhen Invasion of Xerex enters the battlefield, return up to one target creature to its owner's hand. + +ALTERNATE + +Name:Vertex Paladin +ManaCost:no cost +Colors:white,blue +Types:Creature Angel Knight +PT:*/* +S:Mode$ Continuous | EffectZone$ All | CharacteristicDefining$ True | SetPower$ X | SetToughness$ X | Description$ CARDNAME's power and toughness are each equal to the number of creatures you control. +SVar:X:Count$Valid Creature.YouCtrl +K:Flying +Oracle:Flying\nVertex Paladin's power and toughness are each equal to the number of creatures you control. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/inys_haen.txt b/forge-gui/res/cardsfolder/upcoming/inys_haen.txt new file mode 100644 index 00000000000..a07e067daf9 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/inys_haen.txt @@ -0,0 +1,12 @@ +Name:Inys Haen +ManaCost:no cost +Types:Plane Cridhe +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigMill | TriggerZones$ Command | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, mill three cards. +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigMill | TriggerZones$ Command | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, mill three cards. +SVar:TrigMill:DB$ Mill | NumCards$ 3 | Defined$ You +T:Mode$ PlaneswalkedFrom | ValidCard$ Plane.Self | Execute$ TrigChangeZoneAll | TriggerDescription$ When you planeswalk away from CARDNAME, each player returns all land cards from their graveyard to the battlefield tapped +SVar:TrigChangeZoneAll:DB$ ChangeZoneAll | Tapped$ True | Origin$ Graveyard | Destination$ Battlefield | ChangeType$ Land +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return target nonland card from your graveyard to your hand. +SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Card.nonLand+YouCtrl | TgtPrompt$ Select target nonland card in your graveyard +DeckHas:Ability$Graveyard|Mill +Oracle:When you planeswalk to Ins Haen and at the beginning of your upkeep, mill three cards.\nWhen you planeswalk away from Ins Haen, each player returns all land cards from their graveyard to the battlefield tapped\nWhenever chaos ensues, return target nonland card from your graveyard to your hand. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/ketria.txt b/forge-gui/res/cardsfolder/upcoming/ketria.txt new file mode 100644 index 00000000000..ad2f68ac4ca --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/ketria.txt @@ -0,0 +1,12 @@ +Name:Ketria +ManaCost:no cost +Types:Plane Ikoria +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigCounter | TriggerZones$ Command | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, put your choice of vigilance, menace, or trample counter on target creature you control. +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigCounter | TriggerZones$ Command | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, put your choice of vigilance, menace, or trample counter on target creature you control. +SVar:TrigCounter:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | CounterType$ Vigilance,Menace,Trample | CounterNum$ 1 | CounterTypePerDefined$ True +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, exile cards from the top of your library until you exile a nonland permanent card. Put that card onto the battlefield or into your hand. +SVar:RolledChaos:DB$ DigUntil | ValidPlayer$ You | Valid$ Permanent.nonLand | ValidDescription$ nonland permanent | FoundDestination$ Exile | RevealedDestination$ Exile | RememberFound$ True | SubAbility$ DBChoose +SVar:DBChoose:DB$ ChangeZone | Defined$ Remembered | DestinationAlternative$ Hand | Origin$ Exile | Destination$ Battlefield | SubAbility$ DBCleanup | AlternativeDestinationMessage$ Would you like to put the card onto battlefield (and not into your hand)? | +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +DeckHas:Ability$Counters +Oracle:When you planeswalk to Ketria and at the beginning of your upkeep, put your choice of vigilance, menace, or trample counter on target creature you control.\nWhenever chaos ensues, exile cards from the top of your library until you exile a nonland permanent card. Put that card onto the battlefield or into your hand. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/kiora_sovereign_of_the_deep.txt b/forge-gui/res/cardsfolder/upcoming/kiora_sovereign_of_the_deep.txt new file mode 100644 index 00000000000..32933be7daf --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/kiora_sovereign_of_the_deep.txt @@ -0,0 +1,14 @@ +Name:Kiora, Sovereign of the Deep +ManaCost:3 G U +Types:Legendary Creature Merfolk Noble +PT:4/5 +K:Vigilance +K:Ward:3 +T:Mode$ SpellCast | ValidCard$ Card.Kraken+wasCastFromYourHandByYou,Card.Leviathan+wasCastFromYourHandByYou,Card.Octopus+wasCastFromYourHandByYou,Card.Serpent+wasCastFromYourHandByYou | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDig | TriggerDescription$ Whenever you cast a Kraken, Leviathan, Octopus, or Serpent spell from your hand, look at the top X cards of your library, where X is that spell's mana value. You may cast a spell with mana value less than X from among them without paying its mana cost. Put the rest on the bottom of your library in a random order. +SVar:TrigDig:DB$ PeekAndReveal | Defined$ You | PeekAmount$ X | NoReveal$ True | RememberPeeked$ True | SubAbility$ DBPlay +SVar:DBPlay:DB$ Play | ValidZone$ Library | Valid$ Card.IsRemembered | ValidSA$ Spell.cmcLTX | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ 1 | ForgetPlayed$ True | SubAbility$ DBRestRandomOrder +SVar:DBRestRandomOrder:DB$ ChangeZoneAll | ChangeType$ Card.IsRemembered | Origin$ Library | Destination$ Library | LibraryPosition$ -1 | RandomOrder$ True | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:TriggeredCard$CardManaCost +DeckNeeds:Type$Kraken|Leviathan|Octopus|Serpent +Oracle:Vigilance, ward {3}\nWhenever you cast a Kraken, Leviathan, Octopus, or Serpent spell from your hand, look at the top X cards of your library, where X is that spell's mana value. You may cast a spell with mana value less than X from among them without paying its mana cost. Put the rest on the bottom of your library in a random order. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/kor_halberd.txt b/forge-gui/res/cardsfolder/upcoming/kor_halberd.txt new file mode 100644 index 00000000000..b51848083e6 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/kor_halberd.txt @@ -0,0 +1,6 @@ +Name:Kor Halberd +ManaCost:W +Types:Artifact Equipment +S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 1 | AddToughness$ 1 | AddKeyword$ Vigilance | Description$ Equipped creature gets +1/+1 and has vigilance. +K:Equip:1 +Oracle:Equipped creature gets +1/+1 and has vigilance.\nEquip {1} ({1}: Attach to target creature you control. Equip only as a sorcery.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/kroxa_and_kunoros.txt b/forge-gui/res/cardsfolder/upcoming/kroxa_and_kunoros.txt new file mode 100644 index 00000000000..440cf4b9bf2 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/kroxa_and_kunoros.txt @@ -0,0 +1,19 @@ +Name:Kroxa and Kunoros +ManaCost:3 R W B +Types:Legendary Creature Elder Giant Dog +PT:6/6 +K:Vigilance +K:Menace +K:Lifelink +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigImmediateTrig | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, you may exile five cards from your graveyard. When you do, return target creature card from your graveyard to the battlefield. +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigImmediateTrig | Secondary$ True | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, you may exile five cards from your graveyard. When you do, return target creature card from your graveyard to the battlefield. +SVar:TrigImmediateTrig:AB$ ImmediateTrigger | Cost$ ExileFromGrave<5/Card> | Execute$ TrigReturn | SpellDescription$ When you do, return target creature card from your graveyard to the battlefield. +SVar:TrigReturn:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ValidTgts$ Creature.YouOwn | TgtPrompt$ Select target creature to return from your graveyard +DeckHas:Ability$Graveyard +DeckHints:Ability$Discard +SVar:NeedsToPlayVar:Z EQ6 +SVar:X:Count$InYourYard/LimitMax.6 +SVar:Y:Count$TypeInYourYard.Creature/LimitMax.1 +SVar:Z:SVar$X/Times.Y +DeckHas:Ability$Graveyard|LifeGain +Oracle:Vigilance, menace, lifelink\nWhenever Kroxa and Kunoros enters the battlefield or attacks, you may exile five cards from your graveyard. When you do, return target creature card from your graveyard to the battlefield. diff --git a/forge-gui/res/cardsfolder/upcoming/lilianas_talent.txt b/forge-gui/res/cardsfolder/upcoming/lilianas_talent.txt new file mode 100644 index 00000000000..dd9d58aa9ae --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/lilianas_talent.txt @@ -0,0 +1,11 @@ +Name:Liliana's Talent +ManaCost:B B +Types:Enchantment Aura +K:Enchant planeswalker +A:SP$ Attach | AILogic$ Pump | ValidTgts$ Planeswalker +S:Mode$ Continuous | Affected$ Planeswalker.EnchantedBy | AddAbility$ LilianaUlt | Description$ Enchanted planeswalker has "[-8]: Put all creature cards from all graveyards onto the battlefield under your control." +SVar:LilianaUlt:AB$ ChangeZoneAll | Cost$ SubCounter<8/LOYALTY> | Planeswalker$ True | ChangeType$ Creature | Origin$ Graveyard | Destination$ Battlefield | GainControl$ True | SpellDescription$ Put all creature cards in all graveyards onto the battlefield under your control. +T:Mode$ DamageDone | ValidSource$ Creature.inZoneBattlefield | ValidTarget$ Planeswalker.EnchantedBy | Execute$ TrigDestroy | TriggerZones$ Battlefield | TriggerDescription$ Whenever a creature deals damage to enchanted planeswalker, destroy that creature. +SVar:TrigDestroy:DB$ Destroy | Defined$ TriggeredSourceLKICopy +DeckNeeds:Type$Planeswalker +Oracle:Enchant planeswalker\nEnchanted planeswalker has "[-8]: Put all creature cards from all graveyards onto the battlefield under your control."\nWhenever a creature deals damage to enchanted planeswalker, destroy that creature. diff --git a/forge-gui/res/cardsfolder/upcoming/lithomantic_barrage.txt b/forge-gui/res/cardsfolder/upcoming/lithomantic_barrage.txt new file mode 100644 index 00000000000..2ebf405e8d0 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/lithomantic_barrage.txt @@ -0,0 +1,10 @@ +Name:Lithomantic Barrage +ManaCost:R +Types:Sorcery +K:This spell can't be countered. +A:SP$ DealDamage | NumDmg$ X | ValidTgts$ Creature,Planeswalker | TgtPrompt$ Select target creature or planeswalker | StackDescription$ REP target creature or planeswalker_{c:Targeted} | IsCurse$ True | AITgts$ Creature.White,Creature.Blue,Planeswalker.White,Planeswalker.Blue | SpellDescription$ CARDNAME deals 1 damage to target creature or planeswalker. It deals 5 damage instead if that target is white and/or blue. +SVar:Y:Targeted$Valid Creature.White,Creature.Blue,Planeswalker.White,Planeswalker.Blue +SVar:X:Count$Compare Y GE1.5.1 +AI:RemoveDeck:All +AI:RemoveDeck:Random +Oracle:This spell can't be countered.\nLithomantic Barrage deals 1 damage to target creature or planeswalker. It deals 5 damage instead if that target is white and/or blue. diff --git a/forge-gui/res/cardsfolder/upcoming/littjara.txt b/forge-gui/res/cardsfolder/upcoming/littjara.txt new file mode 100644 index 00000000000..a7aab107708 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/littjara.txt @@ -0,0 +1,11 @@ +Name:Littjara +ManaCost:no cost +Types:Plane Kaldheim +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigToken | TriggerZones$ Command | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, create a 2/2 blue Shapeshifter creature token with changeling. (It is every creature type.) +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigToken | TriggerZones$ Command | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, create a 2/2 blue Shapeshifter creature token with changeling. (It is every creature type.) +SVar:TrigToken:DB$ Token | TokenScript$ u_2_2_shapeshifter_changeling | TokenOwner$ You +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, choose a creature type. Put a +1/+1 counter on each creature you control of that type. +SVar:RolledChaos:DB$ ChooseType | Defined$ You | Type$ Creature | SubAbility$ DBPutCounterAll | AILogic$ MostProminentComputerControls +SVar:DBPutCounterAll:DB$ PutCounterAll | ValidCards$ Creature.ChosenType+YouCtrl | CounterType$ P1P1 | CounterNum$ 1 +DeckHas:Ability$Token|Counters & Type$Shapeshifter +Oracle:When you planeswalk to Littjara and at the beginning of your upkeep, create a 2/2 blue Shapeshifter creature token with changeling. (It is every creature type.)\nWhenever chaos ensues, choose a creature type. Put a +1/+1 counter on each creature you control of that type. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/marshal_of_zhalfir.txt b/forge-gui/res/cardsfolder/upcoming/marshal_of_zhalfir.txt new file mode 100644 index 00000000000..513a7661e81 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/marshal_of_zhalfir.txt @@ -0,0 +1,9 @@ +Name:Marshal of Zhalfir +ManaCost:W U +Types:Creature Human Knight +PT:2/2 +S:Mode$ Continuous | Affected$ Creature.Knight+Other+YouCtrl | AddPower$ 1 | AddToughness$ 1 | Description$ Other Knights you control get +1/+1. +A:AB$ Tap | Cost$ W U T | ValidTgts$ Creature.Other | TgtPrompt$ Select another target creature | SpellDescription$ Tap another target creature. +SVar:PlayMain1:TRUE +DeckHints:Type$Knight +Oracle:Other Knights you control get +1/+1.\n{W}{U}, {T}: Tap another target creature. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/megaflora_jungle.txt b/forge-gui/res/cardsfolder/upcoming/megaflora_jungle.txt new file mode 100644 index 00000000000..d6c554e719a --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/megaflora_jungle.txt @@ -0,0 +1,8 @@ +Name:Megaflora Jungle +ManaCost:no cost +Types:Plane Gargantikar +S:Mode$ Continuous | Affected$ Creature.cmcLE2 | AddPower$ 2 | AddToughness$ 2 | EffectZone$ Command | Description$ Each creature with mana value 2 or less gets +2/+2. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, create a 1/1 green Insect creature token with flying named Butterfly. +SVar:RolledChaos:DB$ Token | TokenAmount$ 1 | TokenScript$ butterfly | TokenOwner$ You +DeckHas:Ability$Token & Type$Butterfly +Oracle:Each creature with mana value 2 or less gets +2/+2.\nWhenever chaos ensues, create a 1/1 green Insect creature token with flying named Butterfly. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/mirran_banesplitter.txt b/forge-gui/res/cardsfolder/upcoming/mirran_banesplitter.txt new file mode 100644 index 00000000000..6edbc148917 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/mirran_banesplitter.txt @@ -0,0 +1,9 @@ +Name:Mirran Banesplitter +ManaCost:R +Types:Artifact Equipment +K:Flash +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigAttach | TriggerDescription$ When CARDNAME enters the battlefield, attach it to target creature you control. +SVar:TrigAttach:DB$ Attach | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control +S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddPower$ 2 | Description$ Equipped creature gets +2/+0. +K:Equip:3 +Oracle:Flash\nWhen Mirran Banesplitter enters the battlefield, attach it to target creature you control.\nEquipped creature gets +2/+0.\nEquip {3} ({3}: Attach to target creature you control. Equip only as a sorcery.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/naktamun.txt b/forge-gui/res/cardsfolder/upcoming/naktamun.txt new file mode 100644 index 00000000000..1379ce0e303 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/naktamun.txt @@ -0,0 +1,8 @@ +Name:Naktamun +ManaCost:no cost +Types:Plane Amonkhet +S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.YouCtrl | AffectedZone$ Graveyard | AddKeyword$ Embalm:CardManaCost | Description$ Each creature card in your graveyard has embalm. Its embalm cost is equal to its mana cost. (Exile a creature card from your graveyard and pay its embalm cost: Create a token that's a copy of it, except it's a white Zombie in addition to its other types with no mana cost. Embalm only as a sorcery.) +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you may discard a card. If you do, draw a card. +SVar:RolledChaos:AB$ Draw | Cost$ Discard<1/Card> +DeckHas:Ability$Graveyard|Token|Discard & Type$Zombie +Oracle:Each creature card in your graveyard has embalm. Its embalm cost is equal to its mana cost. (Exile a creature card from your graveyard and pay its embalm cost: Create a token that's a copy of it, except it's a white Zombie in addition to its other types with no mana cost. Embalm only as a sorcery.)\nWhenever chaos ensues, you may discard a card. If you do, draw a card. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/narset_enlightened_exile.txt b/forge-gui/res/cardsfolder/upcoming/narset_enlightened_exile.txt new file mode 100644 index 00000000000..bf16eeea6d9 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/narset_enlightened_exile.txt @@ -0,0 +1,16 @@ +Name:Narset, Enlightened Exile +ManaCost:1 U R W +Types:Legendary Creature Human Monk +PT:3/4 +S:Mode$ Continuous | Affected$ Creature.YouCtrl | AddKeyword$ Prowess | Description$ Creatures you control have prowess. +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$ Whenever CARDNAME attacks, exile target noncreature, nonland card with mana value less than NICKNAME's power from a graveyard and copy it. You may cast the copy without paying its mana cost. +SVar:TrigExile:DB$ ChangeZone | Origin$ Graveyard | Destination$ Exile | ValidTgts$ Card.nonCreature+nonLand+cmcLTX | TgtPrompt$ Select target noncreature nonland card from a graveyard with mana value less then Narset's power | RememberChanged$ True | SubAbility$ DBCopy +SVar:DBPlay:DB$ Play | Defined$ Remembered | CopyCard$ True | Controller$ You | WithoutManaCost$ True | Optional$ True | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:Count$CardPower +DeckHints:Type$Instant|Sorcery|Artifact|Enchantment|Battle|Planeswalker +DeckHas:Ability$Graveyard +SVar:HasAttackEffect:TRUE +SVar:EquipMe:Multiple +SVar:EnchantMe:Multiple +Oracle:Creatures you control have prowess.\nWhenever Narset, Enlightened Exile attacks, exile target noncreature, nonland card with mana value less than Narset's power from a graveyard and copy it. You may cast the copy without paying its mana cost. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/new_argive.txt b/forge-gui/res/cardsfolder/upcoming/new_argive.txt new file mode 100644 index 00000000000..b18cc29ecb6 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/new_argive.txt @@ -0,0 +1,9 @@ +Name:New Argive +ManaCost:no cost +Types:Plane Dominaria +T:Mode$ Attacks | ValidCard$ Creature.YouCtrl+Historic | TriggerZones$ Command | Execute$ TrigPump | TriggerDescription$ Whenever a historic creature you control attacks, it gets +2/+2 until end of turn. (Artifacts, legendaries, and Sagas are historic.) +SVar:TrigPump:DB$ Pump | Defined$ TriggeredAttackerLKICopy | NumAtt$ +2 | NumDef$ +2 +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, reveal cards from the top of your library until you reveal a historic card. Put that card into your hand and the rest on the bottom of your library in a random order. +SVar:RolledChaos:DB$ DigUntil | Valid$ Card.Historic | ValidDescription$ historic card | RevealedDestination$ Library | RevealedLibraryPosition$ -1 | RevealRandomOrder$ True | FoundDestination$ Hand +DeckHints:Type$Legendary & Type$Artifact|Saga +Oracle:Whenever a historic creature you control attacks, it gets +2/+2 until end of turn. (Artifacts, legendaries, and Sagas are historic.)\nWhenever chaos ensues, reveal cards from the top of your library until you reveal a historic card. Put that card into your hand and the rest on the bottom of your library in a random order. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/norns_seedcore.txt b/forge-gui/res/cardsfolder/upcoming/norns_seedcore.txt new file mode 100644 index 00000000000..f673f9d45b7 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/norns_seedcore.txt @@ -0,0 +1,9 @@ +Name:Norn's Seedcore +ManaCost:no cost +Types:Plane New Phyrexia +T:Mode$ PlaneswalkedTo | ValidCard$ Plane.Self | Execute$ TrigChaos | TriggerDescription$ When you planeswalk to CARDNAME, chaos ensues. +SVar:TrigChaos:DB$ ChaosEnsues +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigDigUntil | TriggerDescription$ Whenever chaos ensues, reveal cards from the top of your planar deck until you reveal a plane card. Planeswalk to it, except don't planeswalk away from any plane. Put the rest of the revealed cards on the bottom of your planar deck in any order. +SVar:TrigDigUntil:DB$ DigUntil | Valid$ Plane | DigZone$ PlanarDeck | RememberFound$ True | FoundDestination$ PlanarDeck | RevealedDestination$ PlanarDeck | RevealedLibraryPosition$ -1 | SubAbility$ DBPlaneswalk +SVar:DBPlaneswalk:DB$ Planeswalk | Defined$ Remembered | DontPlaneswalkAway$ True +Oracle:When you planeswalk to Norn's Seedcore, chaos ensues.\nWhenever chaos ensues, reveal cards from the top of your planar deck until you reveal a plane card. Planeswalk to it, except don't planeswalk away from any plane. Put the rest of the revealed cards on the bottom of your planar deck in any order. diff --git a/forge-gui/res/cardsfolder/upcoming/nyx.txt b/forge-gui/res/cardsfolder/upcoming/nyx.txt index bf9ee5912d0..024360a410a 100644 --- a/forge-gui/res/cardsfolder/upcoming/nyx.txt +++ b/forge-gui/res/cardsfolder/upcoming/nyx.txt @@ -4,7 +4,7 @@ Types:Plane Theros S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.nonToken | AddType$ Enchantment | Description$ Nontoken creatures are enchantments in addition to their other types. T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Enchantment.YouCtrl | TriggerZones$ Command | Execute$ TrigGainLife | TriggerDescription$ Constellation — Whenever an enchantment enters the battlefield under your control, you gain 1 life. SVar:TrigGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 1 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, choose a color. Add an amount of mana of that color equal to your devotion to that color. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, choose a color. Add an amount of mana of that color equal to your devotion to that color. SVar:RolledChaos:DB$ ChooseColor | SubAbility$ DBMana | AILogic$ MostProminentComputerControls | AINoRecursiveCheck$ True SVar:DBMana:DB$ Mana | Produced$ Chosen | Amount$ X SVar:X:Count$Devotion.Chosen diff --git a/forge-gui/res/cardsfolder/upcoming/ozolith_the_shattered_spire.txt b/forge-gui/res/cardsfolder/upcoming/ozolith_the_shattered_spire.txt new file mode 100644 index 00000000000..2b1cfb161a1 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/ozolith_the_shattered_spire.txt @@ -0,0 +1,11 @@ +Name:Ozolith, the Shattered Spire +ManaCost:1 G +Types:Legendary Artifact +R:Event$ AddCounter | ActiveZones$ Battlefield | ValidCard$ Creature.YouCtrl+inZoneBattlefield,Artifact.YouCtrl+inZoneBattlefield | ValidCounterType$ P1P1 | ReplaceWith$ AddOneMoreCounters | Description$ If one or more +1/+1 counters would be put on an artifact or creature you control, that many plus one +1/+1 counters are put on it instead. +SVar:AddOneMoreCounters:DB$ ReplaceCounter | ValidCounterType$ P1P1 | ChooseCounter$ True | Amount$ X +SVar:X:ReplaceCount$CounterNum/Plus.1 +A:AB$ PutCounter | Cost$ 1 G T | ValidTgts$ Creature.YouCtrl,Artifact.YouCtrl | TgtPrompt$ Select target artifact or creature you control | CounterType$ P1P1 | CounterNum$ 1 | SorcerySpeed$ True | SpellDescription$ Put a +1/+1 counter on target artifact or creature you control. Activate only as a sorcery. +K:Cycling:2 +DeckHas:Ability$Counters|Discard +DeckHints:Ability$Counters +Oracle:If one or more +1/+1 counters would be put on an artifact or creature you control, that many plus one +1/+1 counters are put on it instead.\n{1}{G}, {T}: Put a +1/+1 counter on target artifact or creature you control. Activate only as a sorcery.\nCycling {2} ({2}, Discard this card: Draw a card.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/paliano.txt b/forge-gui/res/cardsfolder/upcoming/paliano.txt new file mode 100644 index 00000000000..ea67ab734f2 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/paliano.txt @@ -0,0 +1,10 @@ +Name:Paliano +ManaCost:no cost +Types:Plane Fiora +T:Mode$ DamageDoneOnce | ValidSource$ Creature.YouCtrl | ValidTarget$ Player | CheckSVar$ Monarch | SVarCompare$ EQ0 | CombatDamage$ True | Execute$ TrigMonarch | TriggerZones$ Command | TriggerDescription$ When one or more creatures you control deal combat damage to a player, if there is no monarch, you become the monarch. +SVar:TrigMonarch:DB$ BecomeMonarch | Defined$ You +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, create a 1/1 black Assassin creature token with deathtouch and haste. +SVar:RolledChaos:DB$ Token | TokenAmount$ 1 | TokenScript$ b_1_1_assassin_deathtouch_haste | TokenOwner$ You +SVar:Monarch:PlayerCountPlayers$HasPropertyisMonarch +DeckHas:Ability$Token & Type$Assassin +Oracle:When one or more creatures you control deal combat damage to a player, if there is no monarch, you become the monarch.\nWhenever chaos ensues, create a 1/1 black Assassin creature token with deathtouch and haste. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/path_of_the_animist.txt b/forge-gui/res/cardsfolder/upcoming/path_of_the_animist.txt new file mode 100644 index 00000000000..1891c75f0fb --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/path_of_the_animist.txt @@ -0,0 +1,9 @@ +Name:Path of the Animist +ManaCost:3 G +Types:Sorcery +A:SP$ ChangeZone | Origin$ Library | Destination$ Battlefield | ChangeType$ Land.Basic | ChangeNum$ 2 | Tapped$ True | SubAbility$ DBSpace | ChangeTypeDesc$ basic land | SpellDescription$ Search your library for up to two basic land cards, put them onto the battlefield tapped, then shuffle. +SVar:DBSpace:DB$ BlankLine | SubAbility$ DBVote | SpellDescription$ ,,,,,, +SVar:DBVote:DB$ Vote | Defined$ Player | VoteType$ Planeswalk,Chaos | VotePlaneswalk$ DBPlaneswalk | VoteChaos$ DBChaos | Tied$ DBChaos | StackDescription$ SpellDescription | SpellDescription$ Will of the Planeswalkers — Starting with you, each player votes for planeswalk or chaos. If planeswalk gets more votes, planeswalk. If chaos gets more votes or the vote is tied, chaos ensues. +SVar:DBPlaneswalk:DB$ Planeswalk +SVar:DBChaos:DB$ ChaosEnsues +Oracle:Search your library for up to two basic land cards, put them onto the battlefield tapped, then shuffle.\nWill of the Planeswalkers — Starting with you, each player votes for planeswalk or chaos. If planeswalk gets more votes, planeswalk. If chaos gets more votes or the vote is tied, chaos ensues. diff --git a/forge-gui/res/cardsfolder/upcoming/path_of_the_enigma.txt b/forge-gui/res/cardsfolder/upcoming/path_of_the_enigma.txt new file mode 100644 index 00000000000..9915fccc077 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/path_of_the_enigma.txt @@ -0,0 +1,9 @@ +Name:Path of the Enigma +ManaCost:4 U +Types:Sorcery +A:SP$ Draw | ValidTgts$ Player | NumCards$ 4 | SubAbility$ DBSpace | SpellDescription$ Target player draws four cards. +SVar:DBSpace:DB$ BlankLine | SubAbility$ DBVote | SpellDescription$ ,,,,,, +SVar:DBVote:DB$ Vote | Defined$ Player | VoteType$ Planeswalk,Chaos | VotePlaneswalk$ DBPlaneswalk | VoteChaos$ DBChaos | Tied$ DBChaos | StackDescription$ SpellDescription | SpellDescription$ Will of the Planeswalkers — Starting with you, each player votes for planeswalk or chaos. If planeswalk gets more votes, planeswalk. If chaos gets more votes or the vote is tied, chaos ensues. +SVar:DBPlaneswalk:DB$ Planeswalk +SVar:DBChaos:DB$ ChaosEnsues +Oracle:Target player draws four cards.\nWill of the Planeswalkers — Starting with you, each player votes for planeswalk or chaos. If planeswalk gets more votes, planeswalk. If chaos gets more votes or the vote is tied, chaos ensues. diff --git a/forge-gui/res/cardsfolder/upcoming/path_of_the_ghosthunter.txt b/forge-gui/res/cardsfolder/upcoming/path_of_the_ghosthunter.txt new file mode 100644 index 00000000000..cc2e0e2ed7e --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/path_of_the_ghosthunter.txt @@ -0,0 +1,11 @@ +Name:Path of the Ghosthunter +ManaCost:X 1 W +Types:Sorcery +A:SP$ Token | TokenAmount$ X | TokenScript$ w_1_1_spirit_flying | SubAbility DBSpace | SpellDescription$ Create X 1/1 white Spirit creature tokens with flying. +SVar:DBSpace:DB$ BlankLine | SubAbility$ DBVote | SpellDescription$ ,,,,,, +SVar:DBVote:DB$ Vote | Defined$ Player | VoteType$ Planeswalk,Chaos | VotePlaneswalk$ DBPlaneswalk | VoteChaos$ DBChaos | Tied$ DBChaos | StackDescription$ SpellDescription | SpellDescription$ Will of the Planeswalkers — Starting with you, each player votes for planeswalk or chaos. If planeswalk gets more votes, planeswalk. If chaos gets more votes or the vote is tied, chaos ensues. +SVar:DBPlaneswalk:DB$ Planeswalk +SVar:DBChaos:DB$ ChaosEnsues +DeckHas:Ability$Token & Type$Spirit +SVar:X:Count$xPaid +Oracle:Create X 1/1 white Spirit creature tokens with flying.\nWill of the Planeswalkers — Starting with you, each player votes for planeswalk or chaos. If planeswalk gets more votes, planeswalk. If chaos gets more votes or the vote is tied, chaos ensues. diff --git a/forge-gui/res/cardsfolder/upcoming/path_of_the_pyromancer.txt b/forge-gui/res/cardsfolder/upcoming/path_of_the_pyromancer.txt new file mode 100644 index 00000000000..f2f1a83208e --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/path_of_the_pyromancer.txt @@ -0,0 +1,14 @@ +Name:Path of the Pyromancer +ManaCost:4 R +Types:Sorcery +A:SP$ Discard | Mode$ Hand | RememberDiscarded$ True | SubAbility$ DBMana | SpellDescription$ Discard all the cards in your hand. +SVar:DBMana:DB$ Mana | Produced$ R | Amount$ X | SubAbility$ DBDraw | StackDescription$ SpellDescription | SpellDescription$ Add {R} for each card discarded this way, +SVar:DBDraw:DB$ Draw | NumCards$ SVar$X/Plus.1 | SubAbility$ DBCleanup | StackDescription$ SpellDescription | SpellDescription$ then draw that many cards plus one. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | SubAbility$ DBSpace +SVar:X:Remembered$Amount +SVar:DBSpace:DB$ BlankLine | SubAbility$ DBVote | SpellDescription$ ,,,,,, +SVar:DBVote:DB$ Vote | Defined$ Player | VoteType$ Planeswalk,Chaos | VotePlaneswalk$ DBPlaneswalk | VoteChaos$ DBChaos | Tied$ DBChaos | StackDescription$ SpellDescription | SpellDescription$ Will of the Planeswalkers — Starting with you, each player votes for planeswalk or chaos. If planeswalk gets more votes, planeswalk. If chaos gets more votes or the vote is tied, chaos ensues. +SVar:DBPlaneswalk:DB$ Planeswalk +SVar:DBChaos:DB$ ChaosEnsues +DeckHas:Ability$Discard +Oracle:Discard all the cards in your hand. Add {R} for each card discarded this way, then draw that many cards plus one.\nWill of the Planeswalkers — Starting with you, each player votes for planeswalk or chaos. If planeswalk gets more votes, planeswalk. If chaos gets more votes or the vote is tied, chaos ensues. diff --git a/forge-gui/res/cardsfolder/upcoming/path_of_the_schemer.txt b/forge-gui/res/cardsfolder/upcoming/path_of_the_schemer.txt new file mode 100644 index 00000000000..4964fa3dafd --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/path_of_the_schemer.txt @@ -0,0 +1,12 @@ +Name:Path of the Schemer +ManaCost:4 B +Types:Sorcery +A:SP$ Mill | NumCards$ 2 | Defined$ Player | SubAbility$ DBChangeZone | SpellDescription$ Each player mills two cards. Then you put a creature card from a graveyard onto the battlefield under your control. +SVar:DBChangeZone:DB$ ChangeZone | Origin$ Graveyard | Destination$ Battlefield | ChangeType$ Creature | ChangeNum$ 1 | Mandatory$ True | GainControl$ True | AnimateSubAbility$ Animate | SubAbility$ DBSpace | SelectPrompt$ Select a creature card to return to the battlefield | Hidden$ True | StackDescription$ SpellDescription | SpellDescription$ Then you put a creature card from a graveyard onto the battlefield under your control. +SVar:Animate:DB$ Animate | Defined$ Remembered | Types$ Phyrexian | Duration$ Permanent +SVar:DBSpace:DB$ BlankLine | SubAbility$ DBVote | SpellDescription$ ,,,,,, +SVar:DBVote:DB$ Vote | Defined$ Player | VoteType$ Planeswalk,Chaos | VotePlaneswalk$ DBPlaneswalk | VoteChaos$ DBChaos | Tied$ DBChaos | StackDescription$ SpellDescription | SpellDescription$ Will of the Planeswalkers — Starting with you, each player votes for planeswalk or chaos. If planeswalk gets more votes, planeswalk. If chaos gets more votes or the vote is tied, chaos ensues. +SVar:DBPlaneswalk:DB$ Planeswalk +SVar:DBChaos:DB$ ChaosEnsues +DeckHas:Ability$Mill|Graveyard +Oracle:Each player mills two cards. Then you put a creature card from a graveyard onto the battlefield under your control. It's an artifact in addition to its other types.\nWill of the Planeswalkers — Starting with you, each player votes for planeswalk or chaos. If planeswalk gets more votes, planeswalk. If chaos gets more votes or the vote is tied, chaos ensues. diff --git a/forge-gui/res/cardsfolder/upcoming/phyrexian_archivist.txt b/forge-gui/res/cardsfolder/upcoming/phyrexian_archivist.txt new file mode 100644 index 00000000000..3a27d7435c4 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/phyrexian_archivist.txt @@ -0,0 +1,8 @@ +Name:Phyrexian Archivist +ManaCost:6 +Types:Artifact Creature Phyrexian Construct +PT:4/5 +K:Reach +A:AB$ ChangeZone | Cost$ 2 T | ValidTgts$ Card | TgtPrompt$ TgtPrompt$ Select target card from a graveyard | Origin$ Graveyard | Destination$ Library | LibraryPosition$ -1 | SpellDescription$ Put target card from a graveyard on the bottom of its owner's library. +DeckHas:Ability$Graveyard +Oracle:Reach\n{2}, {T}: Put target card from a graveyard on the bottom of its owner's library. diff --git a/forge-gui/res/cardsfolder/upcoming/preening_champion.txt b/forge-gui/res/cardsfolder/upcoming/preening_champion.txt index 32ad52d2e8a..5c26594d4c0 100644 --- a/forge-gui/res/cardsfolder/upcoming/preening_champion.txt +++ b/forge-gui/res/cardsfolder/upcoming/preening_champion.txt @@ -3,7 +3,7 @@ ManaCost:2 U Types:Creature Bird Knight PT:2/2 K:Flying -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, create two 1/1 blue and red Elemental creature tokens. -SVar:TrigToken:DB$ Token | TokenAmount$ 2 | TokenScript$ ur_1_1_elemental +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When CARDNAME enters the battlefield, create a 1/1 blue and red Elemental creature token. +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ ur_1_1_elemental DeckHas:Ability$Token & Type$Elemental Oracle:Flying\nWhen Preening Champion enters the battlefield, create a 1/1 blue and red Elemental creature token. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/rashmi_and_ragavan.txt b/forge-gui/res/cardsfolder/upcoming/rashmi_and_ragavan.txt new file mode 100644 index 00000000000..4519f0b04e2 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/rashmi_and_ragavan.txt @@ -0,0 +1,14 @@ +Name:Rashmi and Ragavan +ManaCost:1 G U R +Types:Legendary Creature Elf Monkey +PT:2/4 +T:Mode$ SpellCast | ValidActivatingPlayer$ You | ActivatorThisTurnCast$ EQ1 | PlayerTurn$ True | NoResolvingCheck$ True | ValidCard$ Card | Execute$ TrigExile | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast your first spell during each of your turns, exile the top card of target opponent's library and create a Treasure token. Then you may cast the exiled card without paying its mana cost if it's a spell with mana value less than the number of artifacts you control. If you don't cast it this way, you may cast it this turn. +SVar:TrigExile:DB$ Dig | DigNum$ 1 | ChangeNum$ All | Defined$ Targeted | ValidTgts$ Opponent | DestinationZone$ Exile | RememberChanged$ True | SubAbility$ DBToken +SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenScript$ c_a_treasure_sac | TokenOwner$ You | SubAbility$ DBPlay +SVar:DBPlay:DB$ Play | Valid$ Card.IsRemembered | ValidSA$ Spell.cmcLTX | ValidZone$ Exile | ImprintPlayed$ True | Controller$ You | WithoutManaCost$ True | Optional$ True | Amount$ All | SubAbility$ DBEffect +SVar:DBEffect:DB$ Effect | StaticAbilities$ STPlay | ForgetOnMoved$ Exile | RememberObjects$ RememberedCard | ConditionDefined$ Imprinted | ConditionPresent$ Card | ConditionCompare$ EQ0 | SubAbility$ DBCleanup +SVar:STPlay:Mode$ Continuous | EffectZone$ Command | Affected$ Card.IsRemembered+nonLand | MayPlay$ True | AffectedZone$ Exile | Description$ Until the end of turn, you may play the exiled card. +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True +SVar:X:Count$Valid Artifact.YouCtrl +DeckHints:Type$Artifact +Oracle:Whenever you cast your first spell during each of your turns, exile the top card of target opponent's library and create a Treasure token. Then you may cast the exiled card without paying its mana cost if it's a spell with mana value less than the number of artifacts you control. If you don't cast it this way, you may cast it this turn. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/rebuild_the_city.txt b/forge-gui/res/cardsfolder/upcoming/rebuild_the_city.txt new file mode 100644 index 00000000000..fcb3c2041e9 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/rebuild_the_city.txt @@ -0,0 +1,6 @@ +Name:Rebuild the City +ManaCost:3 B R G +Types:Sorcery +A:SP$ CopyPermanent | ValidTgts$ Land | TgtPrompt$ Select target land | NumCopies$ 3 | SetPower$ 3 | SetToughness$ 3 | AddKeywords$ Vigilance & Menace | AddTypes$ Creature | SpellDescription$ Choose target land. Create three tokens that are copies of it, except they're 3/3 creatures in addition to their other types and they have vigilance and menace. (They're affected by summoning sickness.) +DeckHas:Ability$Token +Oracle:Choose target land. Create three tokens that are copies of it, except they're 3/3 creatures in addition to their other types and they have vigilance and menace. (They're affected by summoning sickness.) \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/riptide_island.txt b/forge-gui/res/cardsfolder/upcoming/riptide_island.txt new file mode 100644 index 00000000000..2d1a1dee89f --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/riptide_island.txt @@ -0,0 +1,12 @@ +Name:Riptide Island +ManaCost:no cost +Types:Plane Dominaria +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, create two 1/1 colorless Sliver creature tokens. +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigToken | TriggerZones$ Command | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, create two 1/1 colorless Sliver creature tokens. +SVar:TrigToken:DB$ Token | TokenAmount$ 2 | TokenScript$ c_1_1_sliver | TokenOwner$ You +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, Slivers you control gain haste and get +X/+X until end of turn, where X is the number of Slivers you control. +SVar:RolledChaos:DB$ PumpAll | ValidCards$ Sliver.YouCtrl | NumAtt$ +X | NumDef$ +X | KW$ Haste +SVar:X:Count$Valid Sliver.YouCtrl +DeckHas:Ability$Token & Type$Sliver +DeckHints:Type$Sliver +Oracle:When you planeswalk to Riptide Island and at the beginning of your upkeep, create two 1/1 colorless Sliver creature tokens.\nWhenever chaos ensues, Slivers you control gain haste and get +X/+X until end of turn, where X is the number of Slivers you control. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/rona_herald_of_invasion_rona_tolarian_obliterator.txt b/forge-gui/res/cardsfolder/upcoming/rona_herald_of_invasion_rona_tolarian_obliterator.txt new file mode 100644 index 00000000000..a90e37b16df --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/rona_herald_of_invasion_rona_tolarian_obliterator.txt @@ -0,0 +1,29 @@ +Name:Rona, Herald of Invasion +ManaCost:1 U +Types:Legendary Creature Human Wizard +PT:1/3 +T:Mode$ SpellCast | ValidCard$ Card.Legendary | ValidActivatingPlayer$ You | Execute$ TrigUntap | TriggerZones$ Battlefield | TriggerDescription$ Whenever you cast a legendary spell, untap CARDNAME. +SVar:TrigUntap:DB$ Untap | Defined$ Self +A:AB$ Draw | Cost$ T | NumCards$ 1 | SpellDescription$ Draw a card, then discard a card. | SubAbility$ DBDiscard +SVar:DBDiscard:DB$ Discard | Defined$ You | Mode$ TgtChoose | NumCards$ 1 +A:AB$ SetState | Cost$ 5 BP | Defined$ Self | Mode$ Transform | SorcerySpeed$ True | AILogic$ Always | SpellDescription$ Transform NICKNAME. Activate only as a sorcery. ({B/P} can be paid with either {B} or 2 life.) +AlternateMode:DoubleFaced +SVar:BuffedBy:Card.Legendary +DeckHas:Ability$Discard|Graveyard +Oracle:Whenever you cast a legendary spell, untap Rona, Herald of Invasion.\n{T}: Draw a card, then discard a card.\n{5}{B/P}: Transform Rona. Activate only as a sorcery. ({B/P} can be paid with either {B} or 2 life.) + +ALTERNATE + +Name:Rona, Tolarian Obliterator +ManaCost:no cost +Colors:blue,black +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: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 +SVar:HasCombatEffect:TRUE +Oracle:Trample\nWhenever a source deals damage to Rona, Tolarian Obliterator, 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. diff --git a/forge-gui/res/cardsfolder/upcoming/rowans_talent.txt b/forge-gui/res/cardsfolder/upcoming/rowans_talent.txt new file mode 100644 index 00000000000..299cd300900 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/rowans_talent.txt @@ -0,0 +1,12 @@ +Name:Rowan's Talent +ManaCost:2 R R +Types:Enchantment Aura +K:Enchant planeswalker +A:SP$ Attach | AILogic$ Pump | ValidTgts$ Planeswalker +S:Mode$ Continuous | Affected$ Planeswalker.EnchantedBy | AddAbility$ RowanPlus | Description$ Enchanted planeswalker has "[+1]: Up to one target creature gets +2/+0 and gains first strike and trample until end of turn." +SVar:RowanPlus:AB$ Pump | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature | TgtPrompt$ Select target creature | TargetMin$ 0 | TargetMax$ 1 | NumAtt$ +2 | KW$ First Strike & Trample | SpellDescription$ Up to one target creature gets +2/+0 and gains first strike and trample until end of turn. +T:Mode$ AbilityCast | ValidCard$ Planeswalker.EnchantedBy+inRealZoneBattlefield | ValidSA$ Activated.Loyalty | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigCopyAbility | TriggerDescription$ Whenever you activate a loyalty ability of enchanted planeswalker, copy that ability. You may choose new targets for the copy. +SVar:TrigCopyAbility:DB$ CopySpellAbility | Defined$ TriggeredSpellAbility | MayChooseTarget$ True +SVar:BuffedBy:Creature +DeckNeeds:Type$Planeswalker +Oracle:Enchant planeswalker\nEnchanted planeswalker has "[+1]: Up to one target creature gets +2/+0 and gains first strike and trample until end of turn."\nWhenever you activate a loyalty ability of enchanted planeswalker, copy that ability. You may choose new targets for the copy. diff --git a/forge-gui/res/cardsfolder/upcoming/saint_traft_and_rem_karolus.txt b/forge-gui/res/cardsfolder/upcoming/saint_traft_and_rem_karolus.txt new file mode 100644 index 00000000000..13460ce8685 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/saint_traft_and_rem_karolus.txt @@ -0,0 +1,14 @@ +Name:Saint Traft and Rem Karolus +ManaCost:U R W +Types:Legendary Creature Spirit Human +PT:3/4 +T:Mode$ Taps | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ Whenever CARDNAME becomes tapped, create a 1/1 red Human creature token if this is the first time this ability has resolved this turn. If it’s the second time, create a 1/1 blue Spirit creature token with flying. If it’s the third time, create a 4/4 white Angel creature token with flying. +SVar:TrigToken:DB$ Token | TokenScript$ r_1_1_human | ConditionCheckSVar$ Resolved | ConditionSVarCompare$ EQ1 | SubAbility$ DBTokenBis +SVar:DBTokenBis:DB$ Token | TokenScript$ u_1_1_spirit_flying | ConditionCheckSVar$ Resolved | ConditionSVarCompare$ EQ2 | SubAbility$ DBTokenTrice +SVar:DBTokenTrice:DB$ Token | TokenScript$w_4_4_angel_flying | ConditionCheckSVar$ Resolved | ConditionSVarCompare$ EQ3 +SVar:Resolved:Count$ResolvedThisTurn +T:Mode$ SpellCast | ValidCard$ Card.withConvoke | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigUntap | TriggerDescription$ Whenever you cast a spell that has convoke, untap CARDNAME. +SVar:TrigUntap:DB$ Untap | Defined$ Self +DeckNeeds:Keyword$Convoke +DeckHas:Ability$Token & Type$Human|Angel|Spirit +Oracle:Whenever Saint Traft and Rem Karolus becomes tapped, create a 1/1 red Human creature token if this is the first time this ability has resolved this turn. If it's the second time, create a 1/1 blue Spirit creature token with flying. If it's the third time, create a 4/4 white Angel creature token with flying.\nWhenever you cast a spell that has convoke, untap Saint Traft and Rem Karolus. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/sheoldred_the_true_scriptures.txt b/forge-gui/res/cardsfolder/upcoming/sheoldred_the_true_scriptures.txt new file mode 100644 index 00000000000..4bf90c22dfd --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/sheoldred_the_true_scriptures.txt @@ -0,0 +1,31 @@ +Name:Sheoldred +ManaCost:3 B B +Types:Legendary Creature Phyrexian Praetor +PT:4/5 +K:Menace +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ DBSacrifice | TriggerDescription$ When CARDNAME enters the battlefield, each opponent sacrifices a nontoken creature or planeswalker. +SVar:DBSacrifice:DB$ Sacrifice | Defined$ Opponent | SacValid$ Creature.nonToken,Planeswalker.nonToken | SacMessage$ nontoken creature or planeswalker +A:AB$ ChangeZone | Cost$ 4 B | CheckSVar$ X | SVarCompare$ GE8 | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | SubAbility$ DBReturn | SorcerySpeed$ True | StackDescription$ SpellDescription | SpellDescription$ Exile CARDNAME, then return it to the battlefield transformed under its owner's control. Activate only as a sorcery and only if an opponent has eight or more cards in their graveyard. +SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | Transformed$ True | ForgetOtherRemembered$ True | SubAbility$ DBCleanup | StackDescription$ None +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:PlayerCountOpponents$HighestCardsInGraveyard +DeckHints:Ability$Graveyard|Mill +AlternateMode:DoubleFaced +Oracle:Menace\nWhen Sheoldred enters the battlefield, each opponent sacrifices a nontoken creature or planeswalker.\n{4}{B}: Exile Sheoldred, then return it to the battlefield transformed under its owner's control. Activate only as a sorcery and only if an opponent has eight or more cards in their graveyard. + +ALTERNATE + +Name:The True Scriptures +ManaCost:no cost +Colors:black +Types:Enchantment Saga +K:Saga:3:DBDestroy,DBDiscard,DBRiseAll +SVar:DBDestroy:DB$ Destroy | ValidTgts$ Creature.OppCtrl,Planeswalker.OppCtrl | TgtPrompt$ For each opponent, select up to one target creature or planeswalker | TargetMin$ 0 | TargetMax$ OneEach | TargetsWithDifferentControllers$ True | SpellDescription$ For each opponent, destroy up to one target creature or planeswalker that player controls. +SVar:DBDiscard:DB$ Discard | Defined$ Opponent | NumCards$ 3 | Mode$ TgtChoose | SubAbility$ DBMill | SpellDescription$ Each opponent discards three cards, then mills three cards. +SVar:DBMill:DB$ Mill | Defined$ Opponent | NumCards$ 3 | StackDescription$ None +SVar:DBRiseAll:DB$ ChangeZoneAll | ChangeType$ Creature | Origin$ Graveyard | Destination$ Battlefield | GainControl$ True | SubAbility$ DBExileSelf | SpellDescription$ Put all creature cards in all graveyards onto the battlefield under your control. Exile CARDNAME, then return it to the battlefield (front face up). +SVar:DBExileSelf:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | SubAbility$ DBReturnSelf | RememberChanged$ True +SVar:DBReturnSelf:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:OneEach:PlayerCountOpponents$Amount +Oracle:(As this Saga enters and after your draw step, add a lore counter.)\nI — For each opponent, destroy up to one target creature or planeswalker that player controls.\nII — Each opponent discards three cards, then mills three cards.\nIII — Put all creature cards from all graveyards onto the battlefield under your control. Exile The True Scriptures, then return it to the battlefield (front face up). diff --git a/forge-gui/res/cardsfolder/upcoming/strixhaven.txt b/forge-gui/res/cardsfolder/upcoming/strixhaven.txt new file mode 100644 index 00000000000..9e83cebbc3f --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/strixhaven.txt @@ -0,0 +1,9 @@ +Name:Strixhaven +ManaCost:no cost +Types:Plane Arcavios +S:Mode$ Continuous | AddKeyword$ Demonstrate | EffectZone$ Command | Affected$ Instant,Sorcery | AffectedZone$ Stack | Description$ Instant and sorcery spells players cast have demonstrate. (Whenever a player casts an instant or sorcery spell, they may copy it. If they do, they choose an opponent to also copy it. Players may choose new targets for their copies.) +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return up to one target instant or sorcery card from a graveyard to its owner's hand +SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | TargetMin$ 0 | TargetMax$ 1 | Destination$ Hand | ValidTgts$ Instant,Sorcery | TgtPrompt$ Select up to target instant or sorcery spell from any graveyard +DeckHas:Ability$Graveyard +DeckHints:Type$Instant|Sorcery +Oracle:Instant and sorcery spells players cast have demonstrate. (Whenever a player casts an instant or sorcery spell, they may copy it. If they do, they choose an opponent to also copy it. Players may choose new targets for their copies.)\nWhenever chaos ensues, return up to one target instant or sorcery card from a graveyard to its owner's hand \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/teferis_talent.txt b/forge-gui/res/cardsfolder/upcoming/teferis_talent.txt new file mode 100644 index 00000000000..0b4a05fceae --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/teferis_talent.txt @@ -0,0 +1,12 @@ +Name:Teferi's Talent +ManaCost:3 U U +Types:Enchantment Aura +K:Enchant planeswalker +A:SP$ Attach | AILogic$ Pump | ValidTgts$ Planeswalker +S:Mode$ Continuous | Affected$ Planeswalker.EnchantedBy | AddAbility$ TeferiUlt | Description$ Enchanted planeswalker has "[-12]: You get an emblem with 'You may activate loyalty abilities of planeswalkers you control on any player's turn any time you could cast an instant.'" +SVar:TeferiUlt:AB$ Effect | Cost$ SubCounter<12/LOYALTY> | Planeswalker$ True | Name$ Emblem - Teferi, Temporal Archmage | StaticAbilities$ InstantPlaneswalkers | Stackable$ False | Duration$ Permanent | AILogic$ Always | SpellDescription$ You get an emblem with "You may activate loyalty abilities of planeswalkers you control on any player's turn any time you could cast an instant." +SVar:InstantPlaneswalkers:Mode$ CastWithFlash | ValidCard$ Planeswalker.YouCtrl | ValidSA$ Activated.Loyalty | Caster$ You | Description$ You may activate loyalty abilities of planeswalkers you control on any player's turn any time you could cast an instant. +T:Mode$ Drawn | ValidCard$ Card.YouCtrl | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever you draw a card, put a loyalty counter on enchanted planeswalker. +SVar:TrigPutCounter:DB$ PutCounter | Defined$ Enchanted | CounterType$ LOYALTY | CounterNum$ 1 +DeckNeeds:Type$Planeswalker +Oracle:Enchant planeswalker\nEnchanted planeswalker has "[-12]: You get an emblem with 'You may activate loyalty abilities of planeswalkers you control on any player's turn any time you could cast an instant.'"\nWhenever you draw a card, put a loyalty counter on enchanted planeswalker. diff --git a/forge-gui/res/cardsfolder/upcoming/ten_wizards_mountain.txt b/forge-gui/res/cardsfolder/upcoming/ten_wizards_mountain.txt new file mode 100644 index 00000000000..7d0cebd644e --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/ten_wizards_mountain.txt @@ -0,0 +1,9 @@ +Name:Ten Wizards Mountain +ManaCost:no cost +Types:Plane Shenmeng +T:Mode$ PlanarDice | TriggerZones$ Command | Execute$ RolledDie | TriggerDescription$ Whenever you roll the planar die, put a +1/+1 counter on up to one target creature. +SVar:RolledDie:DB$ PutCounter | TargetMin$ 0 | TargetMax$ 1 | ValidTgts$ Creature | CounterType$ P1P1 | CounterNum$ 1 +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, creatures you control gain flying until end of turn. +SVar:RolledChaos:DB$ PumpAll | ValidCards$ Creature.YouCtrl | KW$ Flying +DeckHas:Ability$Counters +Oracle:Whenever you roll the planar die, put a +1/+1 counter on up to one target creature.\nWhenever chaos ensues, creatures you control gain flying until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/the_caldaia.txt b/forge-gui/res/cardsfolder/upcoming/the_caldaia.txt new file mode 100644 index 00000000000..1c8d0636425 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/the_caldaia.txt @@ -0,0 +1,8 @@ +Name:The Caldaia +ManaCost:no cost +Types:Plane Capenna +S:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.YouCtrl | AffectedZone$ Stack | AddKeyword$ Blitz:3:Spell.Creature+wasCastFromYourHand | Description$ Creature spells you cast from your hand have blitz {3}. (If you cast a spell for its blitz cost, it gains haste and "When this creature dies, draw a card." Sacrifice it at the beginning of the next end step.) +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, return target creature card from your graveyard to your hand. +SVar:RolledChaos:DB$ ChangeZone | Origin$ Graveyard | Destination$ Hand | ValidTgts$ Creature.YouCtrl +DeckHas:Ability$Sacrifice & Keyword$Blitz +Oracle:Creature spells you cast from your hand have blitz {3}. (If you cast a spell for its blitz cost, it gains haste and "When this creature dies, draw a card." Sacrifice it at the beginning of the next end step.)\nWhenever chaos ensues, return target creature card from your graveyard to your hand. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/the_fertile_lands_of_saulvinia.txt b/forge-gui/res/cardsfolder/upcoming/the_fertile_lands_of_saulvinia.txt new file mode 100644 index 00000000000..20998c80be8 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/the_fertile_lands_of_saulvinia.txt @@ -0,0 +1,9 @@ +Name:The Fertile Lands of Saulvinia +Types:Plane Antausia +T:Mode$ TapsForMana | ValidCard$ Land | Execute$ AddMana | TriggerZones$ Command | Static$ True | TriggerDescription$ Whenever a player taps a land for mana, that player adds one mana of any type that land produced. +SVar:AddMana:DB$ ManaReflected | ColorOrType$ Type | ReflectProperty$ Produced | Defined$ TriggeredActivator +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigDigUntil | TriggerDescription$ Whenever chaos ensues, reveal cards from the top of your planar deck until you reveal a plane card. Chaos ensues on that plane. Then put all cards revealed this way on the bottom of your planar deck in any order. +SVar:TrigDigUntil:DB$ DigUntil | Valid$ Plane | DigZone$ PlanarDeck | RememberFound$ True | FoundDestination$ PlanarDeck | FoundLibraryPosition$ -1 | RevealedDestination$ PlanarDeck | RevealedLibraryPosition$ -1 | SubAbility$ DBChaosEnsues +SVar:DBChaosEnsues:DB$ ChaosEnsues | Defined$ Remembered | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:Whenever a player taps a land for mana, that player adds one mana of any type that land produced.\nWhenever chaos ensues, reveal cards from the top of your planar deck until you reveal a plane card. Chaos ensues on that plane. Then put all cards revealed this way on the bottom of your planar deck in any order. diff --git a/forge-gui/res/cardsfolder/upcoming/the_golden_city_of_orazca.txt b/forge-gui/res/cardsfolder/upcoming/the_golden_city_of_orazca.txt new file mode 100644 index 00000000000..0fb52cd5b57 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/the_golden_city_of_orazca.txt @@ -0,0 +1,11 @@ +Name:The Golden City of Orazca +ManaCost:no cost +Types:Plane Ixalan +K:Ascend +T:Mode$ DamageDoneOnce | ValidSource$ Creature.YouCtrl | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigToken | TriggerZones$ Command | TriggerDescription$ Whenever one or more creatures you control deal combat damage to a player, create a Treasure token. Then draw a card if you have the city's blessing. +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ c_a_treasure_sac | TokenOwner$ You | SubAbility$ DBDraw +SVar:DBDraw:DB$ Draw | Condition$ Blessing +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, you may put a permanent card from your hand onto the battlefield tapped. +SVar:RolledChaos:DB$ ChangeZone | Origin$ Hand | Destination$ Battlefield | Optional$ You | Tapped$ True | ChangeType$ Permanent | ChangeNum$ 1 +DeckHas:Ability$Token & Type$Treasure +Oracle:Ascend (If you control ten or more permanents, you get the city's blessing for the rest of the game.)\nWhenever one or more creatures you control deal combat damage to a player, create a Treasure token. Then draw a card if you have the city's blessing.\nWhenever chaos ensues, you may put a permanent card from your hand onto the battlefield tapped. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/the_great_aerie.txt b/forge-gui/res/cardsfolder/upcoming/the_great_aerie.txt index fe758b5b931..8c94dd58d45 100644 --- a/forge-gui/res/cardsfolder/upcoming/the_great_aerie.txt +++ b/forge-gui/res/cardsfolder/upcoming/the_great_aerie.txt @@ -4,7 +4,7 @@ Types:Plane Tarkir T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigBolster | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your upkeep, bolster 3. (Choose a creature with the least toughness among creatures you control and put three +1/+1 counters on it.) T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigBolster | TriggerZones$ Command | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME or at the beginning of your upkeep, bolster 3. (Choose a creature with the least toughness among creatures you control and put three +1/+1 counters on it.) SVar:TrigBolster:DB$ PutCounter | Bolster$ True | CounterNum$ 3 | CounterType$ P1P1 -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, choose up to one target creature you control and up to one target creature an opponent controls. Each of those creatures deals damage equal to its toughness to the other. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, choose up to one target creature you control and up to one target creature an opponent controls. Each of those creatures deals damage equal to its toughness to the other. SVar:RolledChaos:DB$ Pump | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Choose up to one target creature you control | TargetMin$ 0 | TargetMax$ 1 | SubAbility$ DBEachDamage SVar:DBEachDamage:DB$ EachDamage | ValidTgts$ Creature.OppCtrl | TgtPrompt$ Choose up to one target creature an opponent controls | TargetMin$ 0 | TargetMax$ 1 | ToEachOther$ Targeted | NumDmg$ Count$CardToughness DeckHas:Ability$Counters diff --git a/forge-gui/res/cardsfolder/upcoming/the_pit.txt b/forge-gui/res/cardsfolder/upcoming/the_pit.txt new file mode 100644 index 00000000000..288aee6fd0c --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/the_pit.txt @@ -0,0 +1,12 @@ +Name:The Pit +ManaCost:no cost +Types:Plane The Abyss +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigRepeatEach | TriggerZones$ Command | TriggerDescription$ When you planeswalk to CARDNAME, each player creates their choice of a 3/3 white Angel creature token with flying or a 6/6 black Demon creature token with flying, trample, and "At the beginning of your upkeep, sacrifice another creature. If you can't, this creature deals 6 damage to you." +SVar:TrigRepeatEach:DB$ RepeatEach | RepeatPlayers$ Player | ClearRememberedBeforeLoop$ True | ChangeZoneTable$ True | RepeatSubAbility$ DBChoice +SVar:DBChoice:DB$ GenericChoice | Defined$ Player.IsRemembered | Choices$ Angel,Demon +SVar:Angel:DB$ Token | TokenScript$ w_3_3_angel_flying | TokenOwner$ Player.IsRemembered | SpellDescription$ Create a 3/3 white Angel creature token with flying +SVar:Demon:DB$ Token | TokenScript$ b_6_6_demon_flying_trample_aristocrat | TokenOwner$ Player.IsRemembered | SpellDescription$ a 6/6 black Demon creature token with flying, trample, and "At the beginning of your upkeep, sacrifice another creature. If you can't, this creature deals 6 damage to you." +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, each player sacrifices a nontoken creature. +SVar:RolledChaos:DB$ Sacrifice | SacValid$ Creature.nonToken | Defined$ Player +DeckHas:Ability$Token|Sacrifice & Type$Demon|Angel +Oracle:When you planeswalk to The Pit, each player creates their choice of a 3/3 white Angel creature token with flying or a 6/6 black Demon creature token with flying, trample, and "At the beginning of your upkeep, sacrifice another creature. If you can't, this creature deals 6 damage to you."\nWhenever chaos ensues, each player sacrifices a nontoken creature. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/the_western_cloud.txt b/forge-gui/res/cardsfolder/upcoming/the_western_cloud.txt new file mode 100644 index 00000000000..3f0c4eed868 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/the_western_cloud.txt @@ -0,0 +1,10 @@ +Name:The Western Cloud +ManaCost:no cost +Types:Plane Gobakhan +R:Event$ DamageDone | ActiveZones$ Command | Prevent$ True | ValidTarget$ Planeswalker.YouCtrl,Creature.YouCtrl | Description$ Prevent all damage that would be dealt to creatures and planeswalkers you control. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, create three tapped Treasure tokens. They each deal 1 damage to each creature and each planeswalker. +SVar:RolledChaos:DB$ Token | TokenAmount$ 3 | TokenScript$ c_a_treasure_sac | TokenOwner$ You | RememberTokens$ True | TokenTapped$ True | SubAbility$ DBDamage +SVar:DBDamage:DB$ EachDamage | DefinedDamagers$ Remembered | Defined$ Valid Creature,Planeswalker | NumDmg$ 1 | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +DeckHas:Ability$Token & Type$Treasure +Oracle:Prevent all damage that would be dealt to creatures and planeswalkers you control.\nWhenever chaos ensues, create three tapped Treasure tokens. They each deal 1 damage to each creature and each planeswalker. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/the_wilds.txt b/forge-gui/res/cardsfolder/upcoming/the_wilds.txt new file mode 100644 index 00000000000..64a66d54cc6 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/the_wilds.txt @@ -0,0 +1,14 @@ +Name:The Wilds +ManaCost:no cost +Types:Plane Eldraine +T:Mode$ PlaneswalkedTo | ValidCard$ Card.Self | Execute$ TrigToken | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, create a Food token. +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigToken | TriggerZones$ Command | Secondary$ True | TriggerDescription$ When you planeswalk to CARDNAME and at the beginning of your upkeep, create a Food token. +SVar:TrigToken:DB$ Token | TokenAmount$ 1 | TokenScript$ c_a_food_sac | TokenOwner$ You +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, target player sacrifices a creature. If they do, you create a Food token. You create two Food tokens instead if the sacrificed creature's toughness was 4 or greater. +SVar:RolledChaos:DB$ Sacrifice | ValidTgts$ Player | SacValid$ Creature | SacMessage$ Creature | RememberSacrificed$ True | SubAbility$ DBToken +SVar:DBToken:DB$ Token | TokenScript$ c_a_food_sac | TokenAmount$ Z | ConditionDefined$ Remembered | ConditionPresent$ Card | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:Z:Remembered$Valid Creature.powerGE4/Plus.1 +DeckHas:Ability$Token|Sacrifice & Type$Food +DeckHints:Type$Food +Oracle:When you planeswalk to The Wilds and at the beginning of your upkeep, create a Food token.\nWhenever chaos ensues, target player sacrifices a creature. If they do, you create a Food token. You create two Food tokens instead if the sacrificed creature's toughness was 4 or greater. diff --git a/forge-gui/res/cardsfolder/upcoming/themberchaud.txt b/forge-gui/res/cardsfolder/upcoming/themberchaud.txt index f4b6ad5d7b6..d4167163cd1 100644 --- a/forge-gui/res/cardsfolder/upcoming/themberchaud.txt +++ b/forge-gui/res/cardsfolder/upcoming/themberchaud.txt @@ -3,10 +3,10 @@ ManaCost:4 R R R Types:Legendary Creature Dragon PT:5/5 K:Trample -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDamageAllNonFlyers | TriggerDescription$ When CARDNAME enters the battlefield, he deals X damage to each creature without flying and each player, where X is the number of Mountains you control. -SVar:TrigDamageAllNonFlyers:DB$ DamageAll | NumDmg$ X | ValidCards$ Creature.withoutFlying | ValidPlayers$ Player | ValidDescription$ each creature without flying and each player +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDamageAllNonFlyers | TriggerDescription$ When CARDNAME enters the battlefield, he deals X damage to each other creature without flying and each player, where X is the number of Mountains you control. +SVar:TrigDamageAllNonFlyers:DB$ DamageAll | NumDmg$ X | ValidCards$ Creature.Other+withoutFlying | ValidPlayers$ Player | ValidDescription$ each other creature without flying and each player S:Mode$ OptionalAttackCost | ValidCard$ Card.Self | Trigger$ TrigPump | Cost$ Exert<1/CARDNAME> | Description$ You may exert CARDNAME as it attacks. When you do, he gains flying until end of turn. (An exerted creature won't untap during your next untap step.) SVar:TrigPump:DB$ Pump | Defined$ Self | KW$ Flying | SpellDescription$ When you do, he gains flying until end of turn. SVar:X:Count$TypeYouCtrl.Mountain DeckHints:Type$Dragon & Keyword$Flying -Oracle:When Themberchaud enters the battlefield, he deals X damage to each creature without flying and each player, where X is the number of Mountains you control.\nYou may exert Themberchaud as it attacks. When you do, he gains flying until end of turn. (An exerted creature won't untap during your next untap step.) \ No newline at end of file +Oracle:Trample\nWhen Themberchaud enters the battlefield, he deals X damage to each other creature without flying and each player, where X is the number of Mountains you control.\nYou may exert Themberchaud as he attacks. When you do, he gains flying until end of turn. (An exerted creature won't untap during your next untap step.) diff --git a/forge-gui/res/cardsfolder/upcoming/towashi.txt b/forge-gui/res/cardsfolder/upcoming/towashi.txt index 6cd9e46ab6d..05611d11fdc 100644 --- a/forge-gui/res/cardsfolder/upcoming/towashi.txt +++ b/forge-gui/res/cardsfolder/upcoming/towashi.txt @@ -4,8 +4,8 @@ Types:Plane Kamigawa S:Mode$ Continuous | Affected$ Creature.modified+YouCtrl | AddKeyword$ Trample | EffectZone$ Command | AddTrigger$ DrawTrig | Description$ Modified creatures you control have trample and "Whenever this creature deals combat damage to a player or planeswalker, draw a card." (Equipment, Auras you control, and counters are modifications.) SVar:DrawTrig:Mode$ DamageDone | ValidSource$ Card.Self | ValidTarget$ Player,Planeswalker | CombatDamage$ True | Execute$ TrigDraw | TriggerZones$ Battlefield | TriggerDescription$ Whenever this creature deals combat damage to a player or planeswalker, draw a card. SVar:TrigDraw:DB$ Draw -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever Chaos ensues, distribute three +1/+1 counters among one, two, or three target creatures you control. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, distribute three +1/+1 counters among one, two, or three target creatures you control. SVar:RolledChaos:DB$ PutCounter | ValidTgts$ Creature.YouCtrl | CounterType$ P1P1 | CounterNum$ 3 | TargetMin$ 1 | TargetMax$ 3 | DividedAsYouChoose$ 3 DeckHas:Ability$Counters DeckHints:Type$Aura|Equipment & Ability$Counters -Oracle:Modified creatures you control have trample and "Whenever this creature deals combat damage to a player or planeswalker, draw a card."(Equipment, Auras you control, and counters are modifications.)\nWhenever Chaos ensues, distribute three +1/+1 counters among one, two, or three target creatures you control. +Oracle:Modified creatures you control have trample and "Whenever this creature deals combat damage to a player or planeswalker, draw a card."(Equipment, Auras you control, and counters are modifications.)\nWhenever chaos ensues, distribute three +1/+1 counters among one, two, or three target creatures you control. diff --git a/forge-gui/res/cardsfolder/upcoming/unyaro.txt b/forge-gui/res/cardsfolder/upcoming/unyaro.txt new file mode 100644 index 00000000000..a6cfec36d2a --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/unyaro.txt @@ -0,0 +1,14 @@ +Name:Unyaro +Types:Plane Zhalfir +T:Mode$ Phase | Phase$ End of Turn | TriggerZones$ Command | ValidPlayer$ You | CheckSVar$ X | Execute$ TrigUntapAll | TriggerDescription$ At the beginning of your end step, if you planeswalked to Unyaro this turn, untap all creatures. They phase out until a player planeswalks. (Treat them and anything attached to them as though they didn't exist.) +SVar:TrigUntapAll:DB$ UntapAll | ValidCards$ Creature | SubAbility$ DBPhaseOut +SVar:DBPhaseOut:DB$ Phases | AllValid$ Creature | WontPhaseInNormal$ True | RememberAffected$ True | SubAbility$ DBEffect +SVar:DBEffect:DB$ Effect | Triggers$ PlaneswalkTrig | OneOff$ True | RememberObjects$ Remembered | Duration$ Permanent | ForgetOnPhasedIn$ True | SubAbility$ DBCleanup +SVar:PlaneswalkTrig:Mode$ PlaneswalkedTo | Execute$ TrigPhaseIn | TriggerZones$ Command | Static$ True | TriggerDescription$ They phase out until a player planeswalks. +SVar:TrigPhaseIn:DB$ Phases | Defined$ Remembered | PhaseInOrOut$ True +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:PlayerCountPropertyYou$PlaneswalkedToThisTurn Unyaro +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ TrigToken | TriggerDescription$ Whenever chaos ensues, create two 2/2 white and blue Knight creature tokens with vigilance. +SVar:TrigToken:DB$ Token | TokenAmount$ 2 | TokenScript$ wu_2_2_knight_vigilance +DeckHas:Ability$Token & Colors$White|Blue & Type$Knight +Oracle:At the beginning of your end step, if you planeswalked to Unyaro this turn, untap all creatures. They phase out until a player planeswalks. (Treat them and anything attached to them as though they didn't exist.)\nWhenever chaos ensues, create two 2/2 white and blue Knight creature tokens with vigilance. diff --git a/forge-gui/res/cardsfolder/upcoming/urabrask_the_great_work.txt b/forge-gui/res/cardsfolder/upcoming/urabrask_the_great_work.txt new file mode 100644 index 00000000000..b707c9a7cc0 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/urabrask_the_great_work.txt @@ -0,0 +1,37 @@ +Name:Urabrask +ManaCost:2 R R +Types:Legendary Creature Phyrexian Praetor +PT:4/4 +K:First Strike +T:Mode$ SpellCast | ValidCard$ Card.Instant,Card.Sorcery | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever you cast an instant or sorcery spell, CARDNAME deals 1 damage to target opponent. Add {R}. +SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | NumDmg$ 1 | SubAbility$ DBMana +SVar:DBMana:DB$ Mana | Produced$ R | Amount$ 1 +A:AB$ ChangeZone | Cost$ R | CheckSVar$ X | SVarCompare$ GE3 | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | SubAbility$ DBReturn | SorcerySpeed$ True | StackDescription$ SpellDescription | SpellDescription$ Exile CARDNAME, then return it to the battlefield transformed under its owner's control. Activate only as a sorcery and only if you've cast three or more instant and/or sorcery spells this turn. +SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | Transformed$ True | ForgetOtherRemembered$ True | SubAbility$ DBCleanup | StackDescription$ None +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:Count$ThisTurnCast_Instant.YouCtrl,Sorcery.YouCtrl +DeckNeeds:Type$Instant|Sorcery +AlternateMode:DoubleFaced +DeckHints:Type$Phyrexian +SVar:BuffedBy:Instant,Sorcery +DeckHas:Type$Treasure|Artifact +Oracle:First strike\nWhenever you cast an instant or sorcery spell, Urabrask deals 1 damage to target opponent. Add {R}.\n{R}: Exile Urabrask, then return it to the battlefield transformed under its owner's control. Activate only as a sorcery and only if you've cast three or more instant and/or sorcery spells this turn. + + +ALTERNATE + +Name:The Great Work +ManaCost:no cost +Colors:red +Types:Enchantment Saga +K:Saga:3:DBDamage,DBToken,DBCastAll +SVar:DBDamage:DB$ DamageAll | ValidTgts$ Opponent | NumDmg$ 3 | ValidPlayers$ Targeted | ValidCards$ Creature.TargetedPlayerCtrl | ValidDescription$ target opponent and each creature they control. | SpellDescription$ CARDNAME deals 3 damage to target opponent and each creature they control. +SVar:DBToken:DB$ Token | TokenAmount$ 3 | TokenScript$ c_a_treasure_sac | SpellDescription$ Create three Treasure tokens. +SVar:DBCastAll:DB$ Effect | ReplacementEffects$ REExileOnResolve | StaticAbilities$ STPlay | AILogic$ YawgmothsWill | AINoRecursiveCheck$ True | SubAbility$ DBExileSelf | SpellDescription$ Until end of turn, you may cast instant and sorcery spells from any graveyard. If a spell cast this way would be put into a graveyard, exile it instead. Exile CARDNAME, then return it to the battlefield (front face up). +SVar:STPlay:Mode$ Continuous | EffectZone$ Command | Affected$ Card.Instant,Card.Sorcery | AffectedZone$ Graveyard | MayPlay$ True | Description$ You may play instant and sorcery spells from any graveyard. +SVar:REExileOnResolve:Event$ Moved | ValidLKI$ Card.CastSa Spell.MayPlaySource | Origin$ Stack | Destination$ Graveyard | ReplaceWith$ MoveExile +SVar:MoveExile:DB$ ChangeZone | Defined$ ReplacedCard | Origin$ Stack | Destination$ Exile +SVar:DBExileSelf:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | SubAbility$ DBReturnSelf | RememberChanged$ True +SVar:DBReturnSelf:DB$ ChangeZone | Defined$ Remembered | Origin$ Exile | Destination$ Battlefield | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +Oracle:(As this saga enters and after your draw step, add a lore counter.)\nI — The Great Work deals 3 damage to target opponent and each creature they control.\nII — Create three Treasure tokens.\nIII — Until end of turn, you may cast instant and sorcery spells from any graveyard. If a spell cast this way would be put into a graveyard, exile it instead. Exile The Great Work, then return it to the battlefield (front face up). diff --git a/forge-gui/res/cardsfolder/upcoming/urborg_scavengers.txt b/forge-gui/res/cardsfolder/upcoming/urborg_scavengers.txt new file mode 100644 index 00000000000..62a712c6994 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/urborg_scavengers.txt @@ -0,0 +1,12 @@ +Name:Urborg Scavengers +ManaCost:2 B +Types:Creature Spirit +PT:2/2 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$ When CARDNAME enters the battlefield or attacks, exile a card from a graveyard. Put a +1/+1 counter on CARDNAME. +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigExile | Secondary$ True | TriggerDescription$ Whenever CARDNAME enters the battlefield or attacks, exile a card from a graveyard. +SVar:TrigExile:DB$ ChangeZone | Origin$ Graveyard | Destination$ Exile | ChangeType$ Card | ChangeNum$ 1 | SelectPrompt$ Select a card from a graveyard | Mandatory$ True | Hidden$ True | SubAbility$ DBCounter +SVar:DBCounter:DB$ PutCounter | Defined$ Self | CounterNum$ 1 | CounterType$ P1P1 +S:Mode$ Continuous | EffectZone$ Battlefield | Affected$ Card.Self | SharedKeywordsZone$ Exile | SharedRestrictions$ Card.ExiledWithSource | AddKeyword$ Flying & First Strike & Double Strike & Deathtouch & Haste & Hexproof & Indestructible & Lifelink & Menace & Reach & Trample & Vigilance | Description$ CARDNAME has flying as long as a card exiled with it has flying. The same is true for first strike, double strike, deathtouch, haste, hexproof, indestructible, lifelink, menace, reach, trample, and vigilance. +DeckHas:AbilityGraveyard|Counters +SVar:HasAttackEffect:TRUE +Oracle:Whenever Urborg Scavengers enters the battlefield or attacks, exile target card from a graveyard. Put a +1/+1 counter on Urborg Scavengers.\nUrborg Scavengers has flying as long as a card exiled with it has flying. The same is true for first strike, double strike, deathtouch, haste, hexproof, indestructible, lifelink, menace, reach, trample, and vigilance. diff --git a/forge-gui/res/cardsfolder/upcoming/valors_reach.txt b/forge-gui/res/cardsfolder/upcoming/valors_reach.txt new file mode 100644 index 00000000000..c2f73ebef04 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/valors_reach.txt @@ -0,0 +1,9 @@ +Name:Valor's Reach +ManaCost:no cost +Types:Plane Kylem +T:Mode$ AttackersDeclared | ValidAttackers$ Creature.YourTeamCtrl | Execute$ TrigPumpAll | IsPresent$ Creature.attacking | PresentCompare$ EQ2 | NoResolvingCheck$ True | TriggerZones$ Command | AttackingPlayer$ You | TriggerDescription$ Whenever your team attacks with exactly two creatures, those creatures gain double strike until end of turn. +SVar:TrigPumpAll:DB$ PumpAll | ValidCards$ Creature.YourTeamCtrl+attacking | KW$ Double Strike +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, untap up to two target creatures your team controls. If it's a main phase, there is an additional combat phase after this phase, followed by an additional main phase. +SVar:RolledChaos:DB$ Untap | ValidTgts$ Creature.YourTeamCtrl | TargetMin$ 0 | TargetMax$ 2 | TgtPrompt$ Select up to two target creatures your team controls | SubAbility$ DBAddCombat +SVar:DBAddCombat:DB$ AddPhase | ExtraPhase$ Combat | FollowedBy$ Main2 | ConditionPhases$ Main1,Main2 +Oracle:Whenever your team attacks with exactly two creatures, those creatures gain double strike until end of turn.\nWhenever chaos ensues, untap up to two target creatures your team controls. If it's a main phase, there is an additional combat phase after this phase, followed by an additional main phase. diff --git a/forge-gui/res/cardsfolder/upcoming/viviens_talent.txt b/forge-gui/res/cardsfolder/upcoming/viviens_talent.txt new file mode 100644 index 00000000000..16615fcf976 --- /dev/null +++ b/forge-gui/res/cardsfolder/upcoming/viviens_talent.txt @@ -0,0 +1,12 @@ +Name:Vivien's Talent +ManaCost:1 G G +Types:Enchantment Aura +K:Enchant planeswalker +A:SP$ Attach | AILogic$ Pump | ValidTgts$ Planeswalker +S:Mode$ Continuous | Affected$ Planeswalker.EnchantedBy | AddAbility$ VivienPlus | Description$ Enchanted planeswalker has "[+1]: Look at the top four cards of your library. You may reveal a creature or land card from among them and put it into your hand. Put the rest on the bottom of your library in a random order." +SVar:VivienPlus:AB$ Dig | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | DigNum$ 4 | ChangeNum$ 1 | Optional$ True | ChangeValid$ Creature,Land | ForceRevealToController$ True | RestRandomOrder$ True | StackDescription$ SpellDescription | SpellDescription$ Look at the top four cards of your library. You may reveal a creature or land card from among them and put it into your hand. Put the rest on the bottom of your library in a random order. +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.nonToken+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigPutCounter | TriggerDescription$ Whenever a nontoken creature enters the battlefield under your control, put a loyalty counter on enchanted planeswalker. +SVar:TrigPutCounter:DB$ PutCounter | Defined$ Enchanted | CounterType$ LOYALTY | CounterNum$ 1 +SVar:BuffedBy:Creature +DeckNeeds:Type$Planeswalker +Oracle:Enchant planeswalker\nEnchanted planeswalker has "[+1]: Look at the top four cards of your library. You may reveal a creature or land card from among them and put it into your hand. Put the rest on the bottom of your library in a random order."\nWhenever a nontoken creature enters the battlefield under your control, put a loyalty counter on enchanted planeswalker. diff --git a/forge-gui/res/cardsfolder/v/velis_vel.txt b/forge-gui/res/cardsfolder/v/velis_vel.txt index 0f6b549f3e8..a198c3ee575 100644 --- a/forge-gui/res/cardsfolder/v/velis_vel.txt +++ b/forge-gui/res/cardsfolder/v/velis_vel.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Lorwyn S:Mode$ Continuous | Affected$ Creature | AddPower$ AffectedX | AddToughness$ AffectedX | EffectZone$ Command | Description$ Each creature gets +1/+1 for each other creature on the battlefield that shares at least one creature type with it. (For example, if two Elemental Shamans and an Elemental Spirit are on the battlefield, each gets +2/+2.) SVar:AffectedX:Count$Valid Creature.sharesCreatureTypeWith+Other -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, target creature gains all creature types until end of turn. -SVar:RolledChaos:DB$ Animate | ValidTgts$ Creature | TgtPrompt$ Select target creature | AddAllCreatureTypes$ True +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, target creature gains all creature types until end of turn. +SVar:RolledChaos:DB$ Animate | ValidTgts$ Creature | AddAllCreatureTypes$ True SVar:AIRollPlanarDieParams:Mode$ Always | HasCreatureInPlay$ True -Oracle:Each creature gets +1/+1 for each other creature on the battlefield that shares at least one creature type with it. (For example, if two Elemental Shamans and an Elemental Spirit are on the battlefield, each gets +2/+2.)\nWhenever you roll {CHAOS}, target creature gains all creature types until end of turn. +Oracle:Each creature gets +1/+1 for each other creature on the battlefield that shares at least one creature type with it. (For example, if two Elemental Shamans and an Elemental Spirit are on the battlefield, each gets +2/+2.)\nWhenever chaos ensues, target creature gains all creature types until end of turn. diff --git a/forge-gui/res/cardsfolder/v/vogar_necropolis_tyrant.txt b/forge-gui/res/cardsfolder/v/vogar_necropolis_tyrant.txt index 4501e7231a8..8fc48d195de 100644 --- a/forge-gui/res/cardsfolder/v/vogar_necropolis_tyrant.txt +++ b/forge-gui/res/cardsfolder/v/vogar_necropolis_tyrant.txt @@ -3,10 +3,10 @@ ManaCost:3 B B Types:Legendary Creature Zombie Giant PT:4/4 K:Menace -T:Mode$ ChangesZone | ValidCard$ Creature.Other+YouCtrl | Origin$ Battlefield | Destination$ Graveyard | TriggerZones$ Battlefield | Execute$ TrigPutCounter | PlayerTurn$ True | TriggerDescription$ Whenever another creature you control dies during your turn, put a +1/+1 counter on CARDNAME. +T:Mode$ ChangesZone | ValidCard$ Creature.Other | Origin$ Battlefield | Destination$ Graveyard | TriggerZones$ Battlefield | Execute$ TrigPutCounter | PlayerTurn$ True | TriggerDescription$ Whenever another creature dies during your turn, put a +1/+1 counter on CARDNAME. SVar:TrigPutCounter:DB$ PutCounter | CounterType$ P1P1 | CounterNum$ 1 T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigDraw | TriggerDescription$ When NICKNAME dies, draw a card for each +1+1 counter on it. SVar:TrigDraw:DB$ Draw | NumCards$ XLKI SVar:XLKI:TriggeredCard$CardCounters.P1P1 DeckHas:Ability$Counters -Oracle:Menace\nWhenever another creature you control dies during your turn, put a +1/+1 counter on Vogar Necropolis Tyrant.\nWhen Vogar dies, draw a card for each +1+1 counter on it. +Oracle:Menace\nWhenever another creature dies during your turn, put a +1/+1 counter on Vogar Necropolis Tyrant.\nWhen Vogar dies, draw a card for each +1+1 counter on it. diff --git a/forge-gui/res/cardsfolder/w/windriddle_palaces.txt b/forge-gui/res/cardsfolder/w/windriddle_palaces.txt index 9a49b637d25..36f22b98302 100644 --- a/forge-gui/res/cardsfolder/w/windriddle_palaces.txt +++ b/forge-gui/res/cardsfolder/w/windriddle_palaces.txt @@ -3,7 +3,7 @@ ManaCost:no cost Types:Plane Belenon S:Mode$ Continuous | EffectZone$ Command | Affected$ Card.TopLibrary | AffectedZone$ Library | MayLookAt$ Player | Description$ Players play with the top card of their libraries revealed. S:Mode$ Continuous | EffectZone$ Command | Affected$ Card.TopLibrary | AffectedZone$ Library | MayPlay$ You | Description$ You may play lands and cast spells from the top of any player's library. -T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll {CHAOS}, each player mills a card. +T:Mode$ ChaosEnsues | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever chaos ensues, each player mills a card. SVar:RolledChaos:DB$ Mill | NumCards$ 1 | Defined$ Player SVar:AIRollPlanarDieParams:Mode$ Random | Chance$ 30 -Oracle:Players play with the top card of their libraries revealed.\nYou may play lands and cast spells from the top of any player's library.\nWhenever you roll {CHAOS}, each player mills a card. +Oracle:Players play with the top card of their libraries revealed.\nYou may play lands and cast spells from the top of any player's library.\nWhenever chaos ensues, each player mills a card. diff --git a/forge-gui/res/editions/March of the Machine The Aftermath.txt b/forge-gui/res/editions/March of the Machine The Aftermath.txt index 3a965d2c84e..013f405e107 100644 --- a/forge-gui/res/editions/March of the Machine The Aftermath.txt +++ b/forge-gui/res/editions/March of the Machine The Aftermath.txt @@ -6,9 +6,230 @@ Type=Expansion ScryfallCode=MAT [cards] +1 U Coppercoat Vanguard @ +2 R Deification @ +3 U Harnessed Snubhorn @ +4 R Metropolis Reformer @ +5 R Spark Rupture @ +6 R Tazri, Stalward Survivor @ +7 U Filter Out @ +8 U Tolarian Contempt @ +9 R Training Grounds @ +10 R Vesuvan Drifter @ +11 R Ayara's Oathsworn @ +12 U Blot Out @ +13 U Death-Rattle Oni @ +14 U Markov Baron @ +15 R Urborg Scavengers @ +16 R Arni Metalbrow @ +17 U Kolaghan Warmonger @ +18 R Plargg and Nassari @ +19 U Reckless Handling @ +20 U Animist's Might @ +21 R Leyline Immersion @ +22 M Nissa, Resurgent Animist @ +23 R Open the Way @ +24 R Tranquil Frillback @ +25 U Undercity Upheaval @ +26 M Calix, Guided by Fate @ +27 U Campus Renovation @ +28 U Cosmic Rebirth @ +29 R Danitha, New Benalia's Light @ +30 U Feast of the Victorious Dead @ +31 U Gold-Forged Thopteryx @ +32 R Jirina, Dauntless General @ 33 R Jolrael, Voice of Zhalfir @Lorenzo Mastroianni 34 R The Kenriths' Royal Funeral @Manuel Castañón +35 M Kiora, Sovereign of the Deep @ +36 M Nahiri, Forged in Fury @ +37 R Nahiri's Resolve @ +38 M Narset, Enlightened Exile @ +39 R Nashi, Moon's Legacy @ +40 R Niv-Mizzet, Supreme @ +41 M Ob Nixilis, Captive Kingping @ +42 R Pia Nalaar, Consul of Revival @ +43 R Rebuild the City @ +44 R Rocco, Street Chef @ +45 M Samut, Vizier of Naktamun @ +46 M Sarkhan, Soul Aflame @ +47 R Sigarda, Font of Blessings @ +48 M Tyvar the Bellicose @ +49 M Karn, Legacy Reforged @ +50 R Drannith Ruins @ +51 U Coppercoat Vanguard @ +52 R Deification @ +53 U Harnessed Snubhorn @ +54 R Metropolis Reformer @ +55 R Spark Rupture @ +56 R Tazri, Stalward Survivor @ +57 U Filter Out @ +58 U Tolarian Contempt @ +59 R Training Grounds @ +60 R Vesuvan Drifter @ +61 R Ayara's Oathsworn @ +62 U Blot Out @ +63 U Death-Rattle Oni @ +64 U Markov Baron @ +65 R Urborg Scavengers @ +66 R Arni Metalbrow @ +67 U Kolaghan Warmonger @ +68 R Plargg and Nassari @ +69 U Reckless Handling @ +70 U Animist's Might @ +71 R Leyline Immersion @ +72 M Nissa, Resurgent Animist @ +73 R Open the Way @ +74 R Tranquil Frillback @ +75 U Undercity Upheaval @ +76 M Calix, Guided by Fate @ +77 U Campus Renovation @ +78 U Cosmic Rebirth @ +79 R Danitha, New Benalia's Light @ +80 U Feast of the Victorious Dead @ +81 U Gold-Forged Thopteryx @ +82 R Jirina, Dauntless General @ 83 R Jolrael, Voice of Zhalfir @Scott M. Fischer +84 R The Kenriths' Royal Funeral @ +85 M Kiora, Sovereign of the Deep @ +86 M Nahiri, Forged in Fury @ +87 R Nahiri's Resolve @ +88 M Narset, Enlightened Exile @ +89 R Nashi, Moon's Legacy @ +90 R Niv-Mizzet, Supreme @ +91 M Ob Nixilis, Captive Kingping @ +92 R Pia Nalaar, Consul of Revival @ +93 R Rebuild the City @ +94 R Rocco, Street Chef @ +95 M Samut, Vizier of Naktamun @ +96 M Sarkhan, Soul Aflame @ +97 R Sigarda, Font of Blessings @ +98 M Tyvar the Bellicose @ +99 M Karn, Legacy Reforged @ +100 R Drannith Ruins @ +101 U Coppercoat Vanguard @ +102 R Deification @ +103 U Harnessed Snubhorn @ +104 R Metropolis Reformer @ +105 R Spark Rupture @ +106 R Tazri, Stalward Survivor @ +107 U Filter Out @ +108 U Tolarian Contempt @ +109 R Training Grounds @ +110 R Vesuvan Drifter @ +111 R Ayara's Oathsworn @ +112 U Blot Out @ +113 U Death-Rattle Oni @ +114 U Markov Baron @ +115 R Urborg Scavengers @ +116 R Arni Metalbrow @ +117 U Kolaghan Warmonger @ +118 R Plargg and Nassari @ +119 U Reckless Handling @ +120 U Animist's Might @ +121 R Leyline Immersion @ +122 M Nissa, Resurgent Animist @ +123 R Open the Way @ +124 R Tranquil Frillback @ +125 U Undercity Upheaval @ +126 M Calix, Guided by Fate @ +127 U Campus Renovation @ +128 U Cosmic Rebirth @ +129 R Danitha, New Benalia's Light @ +130 U Feast of the Victorious Dead @ +131 U Gold-Forged Thopteryx @ +132 R Jirina, Dauntless General @ 133 R Jolrael, Voice of Zhalfir @Lorenzo Mastroianni +134 R The Kenriths' Royal Funeral @ +135 M Kiora, Sovereign of the Deep @ +136 M Nahiri, Forged in Fury @ +137 R Nahiri's Resolve @ +138 M Narset, Enlightened Exile @ +139 R Nashi, Moon's Legacy @ +140 R Niv-Mizzet, Supreme @ +141 M Ob Nixilis, Captive Kingping @ +142 R Pia Nalaar, Consul of Revival @ +143 R Rebuild the City @ +144 R Rocco, Street Chef @ +145 M Samut, Vizier of Naktamun @ +146 M Sarkhan, Soul Aflame @ +147 R Sigarda, Font of Blessings @ +148 M Tyvar the Bellicose @ +149 M Karn, Legacy Reforged @ +150 R Drannith Ruins @ +151 R Deification @ +152 R Metropolis Reformer @ +153 R Spark Rupture @ +154 R Tazri, Stalward Survivor @ +155 R Training Grounds @ +156 R Vesuvan Drifter @ +157 R Ayara's Oathsworn @ +158 R Urborg Scavengers @ +159 R Arni Metalbrow @ +160 R Plargg and Nassari @ +161 R Leyline Immersion @ +162 M Nissa, Resurgent Animist @ +163 R Open the Way @ +164 R Tranquil Frillback @ +165 M Calix, Guided by Fate @ +166 R Danitha, New Benalia's Light @ +167 R Jirina, Dauntless General @ 168 R Jolrael, Voice of Zhalfir @Lorenzo Mastroianni +169 R The Kenriths' Royal Funeral @ +170 M Kiora, Sovereign of the Deep @ +171 M Nahiri, Forged in Fury @ +172 R Nahiri's Resolve @ +173 M Narset, Enlightened Exile @ +174 R Nashi, Moon's Legacy @ +175 R Niv-Mizzet, Supreme @ +176 M Ob Nixilis, Captive Kingping @ +177 R Pia Nalaar, Consul of Revival @ +178 R Rebuild the City @ +179 R Rocco, Street Chef @ +180 M Samut, Vizier of Naktamun @ +181 M Sarkhan, Soul Aflame @ +182 R Sigarda, Font of Blessings @ +183 M Tyvar the Bellicose @ +184 M Karn, Legacy Reforged @ +185 R Drannith Ruins @ +186 U Coppercoat Vanguard @ +187 R Deification @ +188 U Harnessed Snubhorn @ +189 R Metropolis Reformer @ +191 U Filter Out @ +192 U Tolarian Contempt @ +193 R Training Grounds @ +194 R Vesuvan Drifter @ +195 R Ayara's Oathsworn @ +196 U Blot Out @ +197 U Death-Rattle Oni @ +198 U Markov Baron @ +199 R Urborg Scavengers @ +200 R Arni Metalbrow @ +201 U Kolaghan Warmonger @ +202 R Plargg and Nassari @ +203 U Reckless Handling @ +205 U Undercity Upheaval @ +206 M Calix, Guided by Fate @ +207 U Campus Renovation @ +208 U Cosmic Rebirth @ +209 R Danitha, New Benalia's Light @ +210 U Feast of the Victorious Dead @ +211 U Gold-Forged Thopteryx @ +212 R Jirina, Dauntless General @ +213 R The Kenriths' Royal Funeral @ +214 M Kiora, Sovereign of the Deep @ +215 M Nahiri, Forged in Fury @ +216 R Nahiri's Resolve @ +217 M Narset, Enlightened Exile @ +218 R Nashi, Moon's Legacy @ +219 R Niv-Mizzet, Supreme @ +220 M Ob Nixilis, Captive Kingping @ +221 R Pia Nalaar, Consul of Revival @ +222 R Rebuild the City @ +223 R Rocco, Street Chef @ +224 M Samut, Vizier of Naktamun @ +225 M Sarkhan, Soul Aflame @ +226 R Sigarda, Font of Blessings @ +227 M Tyvar the Bellicose @ +228 R Drannith Ruins @ 230 R Jolrael, Voice of Zhalfir @Ernanda Souza diff --git a/forge-gui/res/editions/March of the Machine.txt b/forge-gui/res/editions/March of the Machine.txt index 932b6d706f2..e95ea761a48 100644 --- a/forge-gui/res/editions/March of the Machine.txt +++ b/forge-gui/res/editions/March of the Machine.txt @@ -4,7 +4,7 @@ Date=2023-04-21 Name=March of the Machine Type=Expansion BoosterCovers=3 -Booster=8 Common:!fromSheet("MOM lands"):fromsheet("MOM cards"), 2 Uncommon:fromSheet("MOM cards"), 1 dfc:!fromSheet("MOM battles"):fromSheet("MOM cards"), 1 UncommonRareMythic:!dfc:fromSheet("MOM cards"), 1 fromSheet("MOM battles"), 1 fromSheet("MUL cards"), 1 fromSheet("MOM lands") +Booster=8 Common:!fromSheet("MOM lands"):fromsheet("MOM cards"), 2 Uncommon:fromSheet("MOM cards"), 1 dfc:!fromSheet("MOM battles"):fromSheet("MOM cards"), 1 RareMythic:!dfc:fromSheet("MOM cards"), 1 fromSheet("MOM battles"), 1 fromSheet("MUL cards"), 1 fromSheet("MOM lands") Prerelease=6 Boosters, 1 RareMythic+ BoosterBox=36 ScryfallCode=MOM @@ -482,7 +482,7 @@ c_a_treasure_sac c_a_treasure_sac first_mate_ragavan g_1_1_phyrexian_saproling -g_x_x_dinosaur +g_x_x_dinosaur_trample gw_3_3_phyrexian_hydra_lifelink gw_3_3_phyrexian_hydra_reach rw_3_2_spirit diff --git a/forge-gui/res/editions/Strixhaven School of Mages.txt b/forge-gui/res/editions/Strixhaven School of Mages.txt index 39f4e7ccce7..a0b9d9b8ef3 100644 --- a/forge-gui/res/editions/Strixhaven School of Mages.txt +++ b/forge-gui/res/editions/Strixhaven School of Mages.txt @@ -5,7 +5,7 @@ Name=Strixhaven: School of Mages Code2=STX Type=Expansion BoosterCovers=5 -DraftBooster=1 fromSheet("STX lesson"), 9 Common, 3 Uncommon, 1 RareMythic, 1 Any STA +DraftBooster=1 fromSheet("STX lesson"), 9 Common:fromSheet("STX cards"), 3 Uncommon:fromSheet("STX cards"), 1 RareMythic:fromSheet("STX cards"), 1 Any STA CollectorBooster=2 Uncommon:fromSheet("STA")+, 2 RareMythic:fromSheet("STA")+, 1 RareMythic:fromSheet("STX extended art"), 1 RareMythic C21, 1 fromSheet("STX lesson")+, 1 RareMythic+, 2 Uncommon+, 5 Common+ Prerelease=6 Boosters, 1 RareMythic+ FatPackExtraSlots=20 BasicLands, 20 BasicLands+ diff --git a/forge-gui/res/languages/de-DE.properties b/forge-gui/res/languages/de-DE.properties index a1a87f77eda..4e6f9f4f787 100644 --- a/forge-gui/res/languages/de-DE.properties +++ b/forge-gui/res/languages/de-DE.properties @@ -2962,6 +2962,8 @@ lblZoom=Zoomen lblEffect=Wirkung lblEmblem=Emblem lblBoon=Vorteil +lblBackToAdventure=Zurück zum Abenteuer +lblDisableWinLose=Deaktivieren Sie Winslose Overlay lblExitToWoldMap=Zurück zur Weltkarte? lblStartArena=Willst du in die Arena gehen? lblWouldYouLikeDestroy=Möchten Sie {0} zerstören? diff --git a/forge-gui/res/languages/en-US.properties b/forge-gui/res/languages/en-US.properties index 7981bf21a17..593c59ccfcf 100644 --- a/forge-gui/res/languages/en-US.properties +++ b/forge-gui/res/languages/en-US.properties @@ -2972,6 +2972,8 @@ lblZoom=Zoom lblEffect=Effect lblEmblem=Emblem lblBoon=Boon +lblBackToAdventure=Back to Adventure +lblDisableWinLose=Disable WinLose Overlay lblExitToWoldMap=Exit to the World Map? lblStartArena=Do you want to go into the Arena? lblWouldYouLikeDestroy=Would you like to destroy {0}? diff --git a/forge-gui/res/languages/es-ES.properties b/forge-gui/res/languages/es-ES.properties index df8348733f2..d9fb30e91a5 100644 --- a/forge-gui/res/languages/es-ES.properties +++ b/forge-gui/res/languages/es-ES.properties @@ -2965,6 +2965,8 @@ lblZoom=Zoom lblEffect=Efecto lblEmblem=Emblem lblBoon=Boon +lblBackToAdventure=Volver a la aventura +lblDisableWinLose=Desactivar WinLose Overlay lblExitToWoldMap=Salir al mapa del mundo? lblStartArena=¿Quieres ir a la arena? lblWouldYouLikeDestroy=¿Le gustaría destruir {0}? diff --git a/forge-gui/res/languages/fr-FR.properties b/forge-gui/res/languages/fr-FR.properties index c5de9a17174..8f6ce2b14f0 100644 --- a/forge-gui/res/languages/fr-FR.properties +++ b/forge-gui/res/languages/fr-FR.properties @@ -2968,6 +2968,8 @@ lblZoom=Zoom lblEffect=Effet lblEmblem=Emblème lblBoon=Aubaine +lblBackToAdventure=Retour à l'aventure +lblDisableWinLose=Désactiver la superposition Winlose lblExitToWoldMap=Sortir sur la carte du monde? lblStartArena=Voulez-vous entrer dans l'arène? lblWouldYouLikeDestroy=Souhaitez-vous détruire {0}? diff --git a/forge-gui/res/languages/it-IT.properties b/forge-gui/res/languages/it-IT.properties index aa848adf02f..23087813441 100644 --- a/forge-gui/res/languages/it-IT.properties +++ b/forge-gui/res/languages/it-IT.properties @@ -2968,6 +2968,8 @@ lblZoom=Ingrandisci lblEffect=Effetto lblEmblem=Emblema lblBoon=Boon +lblBackToAdventure=Torna all'avventura +lblDisableWinLose=Disabilita overlay winlose lblExitToWoldMap=Esci alla mappa del mondo? lblStartArena=Vuoi andare nell'arena? lblWouldYouLikeDestroy=Vorresti distruggere {0}? diff --git a/forge-gui/res/languages/ja-JP.properties b/forge-gui/res/languages/ja-JP.properties index 661db100946..627cd6f4726 100644 --- a/forge-gui/res/languages/ja-JP.properties +++ b/forge-gui/res/languages/ja-JP.properties @@ -2964,6 +2964,8 @@ lblZoom=ズーム lblEffect=効果 lblEmblem=エンブレム lblBoon=ブーン +lblBackToAdventure=冒険に戻ります +lblDisableWinLose=Winloseオーバーレイを無効にします lblExitToWoldMap=世界地図に終了しますか? lblStartArena=アリーナに行きたいですか? lblWouldYouLikeDestroy={0}を破壊しますか? diff --git a/forge-gui/res/languages/pt-BR.properties b/forge-gui/res/languages/pt-BR.properties index c6d36de1dca..82a68753269 100644 --- a/forge-gui/res/languages/pt-BR.properties +++ b/forge-gui/res/languages/pt-BR.properties @@ -3054,6 +3054,8 @@ lblZoom=Ampliação lblEffect=Efeito lblEmblem=Emblem lblBoon=Boon +lblBackToAdventure=De volta à aventura +lblDisableWinLose=Desative a sobreposição de Winlose lblExitToWoldMap=Sair para o mapa do mundo? lblStartArena=Você quer entrar na arena? lblWouldYouLikeDestroy=Você gostaria de destruir {0}? diff --git a/forge-gui/res/languages/zh-CN.properties b/forge-gui/res/languages/zh-CN.properties index ea3a0dd2b05..61c4c5fadc4 100644 --- a/forge-gui/res/languages/zh-CN.properties +++ b/forge-gui/res/languages/zh-CN.properties @@ -720,15 +720,15 @@ lblInvalidDeck=错误的套牌 lblInvalidDeckDesc=你的套牌%n请编辑或者选择其他套牌 #VSubmenuQuestPrefs.java lblQuestPreferences=冒险偏好 -lblQuestGameSettingsError=Game Settings Error +lblQuestGameSettingsError=游戏设置错误 lblRewardsError=奖励错误 lblDifficultyError=难度错误 lblBoosterError=补充包错误 lblShopError=商店错误 lblDraftTournamentsError=轮抓锦标赛错误 -lblQuestGameSettings=Game Settings -lblWorldRulesConformance=World Rules Conformance -ttWorldRulesConformance=Enforce player deck legality in each world (allowed sets, restricted cards etc). +lblQuestGameSettings=游戏设置 +lblWorldRulesConformance=世界一致性规则 +ttWorldRulesConformance=强制玩家的套牌符合当前世界的套牌合法性要求(例如:可以使用什么系列,什么牌被禁用了)。 lblRewards=奖励 lblBoosterPackRatios=补充包比例 lblDifficultyAdjustments=挑战难度 @@ -824,6 +824,7 @@ lblEnchantments=结界 lblPlaneswalkers=鹏洛客 lblInstants=瞬间 lblSorceries=法术 +lblBattles=战役 lblCCMC0=法术力值为0的牌 lblCCMC1=法术力值为1的牌 lblCCMC2=法术力值为2的牌 @@ -1090,6 +1091,7 @@ lblAutoCacheSize=启用自动缓存大小 nlAutoCacheSize=启用后,Forge将于启动时自动确定缓存大小。(如果不清楚此选项的作用,请关闭此选项) lblUseLaserArrows=使用镭射箭头 nlUseLaserArrows=启用后,Forge使用新的镭射箭头样式。 +lblExpandedShops=扩展牌张商店 #MatchScreen.java lblPlayers=玩家列表 lblLog=日志 @@ -1346,15 +1348,16 @@ lblSelectNumTargetToAction=选择%d个{0}用于{1}。 lblHighestBidder=最高出价者 lblUseTriggeredAbilityOf=使用触发异能 lblExertAttackersConfirm=进攻者耗竭? -lblEnlistAttackersConfirm=Enlist Attackers? -lblEnlisted=Enlisted +lblEnlistAttackersConfirm=进攻者征列? +lblEnlisted=已征列 +lblSelectACostToEnlist=选择一个{0}进行征列(被{1}征列) lblThereNoCardInPlayerZone={0}的{1}中没有牌 lblPutCardsOnTheTopLibraryOrGraveyard=将{0}放到牌库顶还是坟场? lblLibrary=牌库 lblGraveyard=坟场 lblAssignSectorCreature=将{0}分配给一部分 lblChooseSectorEffect=选择一部分 -lblChooseRollIgnore=Choose a roll to ignore +lblChooseRollIgnore=选择要忽略的骰子 lblTop=顶 lblBottom=底 lblNColorManaFromCard={2}产{0}个{1}法术力 @@ -1576,7 +1579,6 @@ lblDestroyed=被消灭 lblDestroyer=破坏者 #TriggerDevoured.java lblDevoured=已吞噬 -#TriggerDiscarded.java #TriggerEvolved.java lblEvolved=已进化 #TriggerExerted.java @@ -1908,10 +1910,10 @@ lblReveals=展示 lblWinsClash=比点赢了 lblLosesClash=比点输了 #CleanUpEffect.java -lblChosenCard={0}''s chosen card: {1} -lblChosenMultiCard={0}''s chosen cards: {1} -lblChosenPlayer={0}''s chosen player: {1} -lblNoValidChoice={0} found no valid choices. +lblChosenCard={0}选择的牌张为:{1} +lblChosenMultiCard={0}选择的牌张为:{1} +lblChosenPlayer={0}选择的牌手为:{1} +lblNoValidChoice={0}没找到可用的选项。 #CloneEffect.java lblDoYouWantCopy=你想要复制{0}吗? #ConniveEffect.java @@ -1977,7 +1979,7 @@ lblNoValidCards=没有有效的牌 lblDoYouWantDigYourLibrary=你想要挖掘你的牌库吗? lblDoYouWantPutCardToZone=你想把这张牌放到{0}吗? #DigMultipleEffect.java -lblMustChoose=You must choose at least one card. +lblMustChoose=你必须至少选择一张牌。 #DiscardEffect.java lblWouldYouLikeRandomDiscardTargetCard=你想随机弃掉%d张牌吗? lblPlayerHasChosenCardsFrom={0}选择了牌自 @@ -2050,7 +2052,7 @@ lblDoYouWantRevealYourHand=你想展示你的手牌吗? #RollDiceEffect.java lblPlayerRolledResult={0}掷骰结果为{1} #RollPlanarDiceEffect.java -lblPlanarDiceResult=Planar dice result: {0} +lblPlanarDiceResult=时空骰子点数: {0} #SacrificeEffect.java lblDoYouWantPayEcho=你想支付返响费用 lblPayEcho=支付返响费用 @@ -2112,6 +2114,7 @@ lblRemoveFromGame=从游戏中删除牌 lblRiggedRoll=触发时空骰 lblWalkTo=时空换入 lblAskAI=获取AI的建议 +lblAskSimulationAI=获取模拟AI的建议 #PhaseType.java lblUntapStep=重置步骤 lblUpkeepStep=维持步骤 @@ -2200,7 +2203,7 @@ lblTotalWins=胜场总计 lblTotalLosses=败场总计 lblConqueredEvents=征服事件 lblUnlockedCards=已解锁卡牌 -lblCommandersCardCannotBeExiledByCard={0} is in use by the following commanders and cannot be exiled:\n{1}. +lblCommandersCardCannotBeExiledByCard={0}被以下指挥官使用并不能被放逐:\n{1}. #QuestWinLoseController.java lblQuitByPayCredits=退出(-15积分) lblSpoilsWonAnteCard=胜利!获得赌注牌 @@ -2423,6 +2426,7 @@ lblCardChooseAnOpponentToGainNLife={0} - 选择一个目标获得{1}点生命值 lblMillNCardsFromYourLibraryConfirm=从你的牌库磨{0}张牌? lblPayNLifeConfirm=支付{0}点生命值? lblPayEnergyConfirm={0}?\n(你拥有{1}点{2}) +lblPayShardsConfirm={0}?\n(你拥有{1}点{2}) lblPutCardToLibraryConfirm=将{0}放入牌库? lblPutNCardsFromYourZone=将{0}张牌放入你的{1} lblFromZonePutToLibrary=从{0}放入牌库 @@ -2474,6 +2478,7 @@ lblCardNameAndCost=卡牌名称和费用 lblCardType=卡牌类别 lblCardID=卡牌ID lblCardPTOrLoyalty=卡牌攻防或忠诚 +lblPrimaryCharacteristic=卡牌攻防或忠诚或防卫指示物 #ArcaneMaster.java lblArcaneMaster=奥术大师 lblWinGameWithOutCasting=赢得一局游戏游戏中未释放过 @@ -2924,6 +2929,7 @@ lblTempHitPoints=临时生命值 #CardDetailUtil.java lblChosenColors=选择的颜色: lblLoyalty=忠诚指示物 +lblDefense=防卫指示物 #Achievement.java lblStandard=标准 lblChaos=混乱 @@ -2947,6 +2953,8 @@ lblZoom=飞涨 lblEffect=影响 lblEmblem=象征 lblBoon=恩赐 +lblBackToAdventure=回到冒险 +lblDisableWinLose=禁用Winlose覆盖 lblExitToWoldMap=退出世界地图? lblStartArena=您想进入竞技场吗? lblWouldYouLikeDestroy=您想销毁{0}吗? diff --git a/forge-lda/pom.xml b/forge-lda/pom.xml index ad382ad3076..cbfffc465bf 100644 --- a/forge-lda/pom.xml +++ b/forge-lda/pom.xml @@ -4,7 +4,7 @@ forge forge - 1.6.56-SNAPSHOT + 1.6.57-SNAPSHOT forge-lda diff --git a/pom.xml b/pom.xml index 571d83397e5..9905ef60df6 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ forge pom Forge Parent - 1.6.56-SNAPSHOT + 1.6.57-SNAPSHOT Forge lets you play the card game Magic: The Gathering against a computer opponent using all of the rules.