diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtilAbility.java b/forge-ai/src/main/java/forge/ai/ComputerUtilAbility.java index ba42c31cf9e..18687559682 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtilAbility.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtilAbility.java @@ -95,9 +95,15 @@ public class ComputerUtilAbility { public static List getOriginalAndAltCostAbilities(final List originList, final Player player) { final List newAbilities = Lists.newArrayList(); - for (SpellAbility sa : originList) { - sa.setActivatingPlayer(player); + List originListWithAddCosts = Lists.newArrayList(); + for (SpellAbility sa : originList) { + // If this spell has alternative additional costs, add them instead of the unmodified SA itself + sa.setActivatingPlayer(player); + originListWithAddCosts.addAll(GameActionUtil.getAdditionalCostSpell(sa)); + } + + for (SpellAbility sa : originListWithAddCosts) { // determine which alternative costs are cheaper than the original and prioritize them List saAltCosts = GameActionUtil.getAlternativeCosts(sa, player); List priorityAltSa = Lists.newArrayList(); diff --git a/forge-game/src/main/java/forge/game/GameAction.java b/forge-game/src/main/java/forge/game/GameAction.java index 1693ee24b07..c0edb324c83 100644 --- a/forge-game/src/main/java/forge/game/GameAction.java +++ b/forge-game/src/main/java/forge/game/GameAction.java @@ -1127,7 +1127,7 @@ public class GameAction { if (c.isAttachedToEntity()) { final GameEntity ge = c.getEntityAttachedTo(); - if (!ge.canBeAttached(c)) { + if (!ge.canBeAttached(c, true)) { c.unattachFromEntity(ge); checkAgain = true; } diff --git a/forge-game/src/main/java/forge/game/ability/effects/CharmEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CharmEffect.java index 88098689550..ef8dfcba924 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CharmEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CharmEffect.java @@ -150,14 +150,14 @@ public class CharmEffect extends SpellAbilityEffect { return ""; } - public static void makeChoices(SpellAbility sa) { + public static boolean makeChoices(SpellAbility sa) { //this resets all previous choices sa.setSubAbility(null); // Entwine does use all Choices if (sa.isEntwine()) { chainAbilities(sa, makePossibleOptions(sa)); - return; + return true; } final int num = sa.hasParam("CharmNumOnResolve") ? @@ -181,6 +181,7 @@ public class CharmEffect extends SpellAbilityEffect { List chosen = chooser.getController().chooseModeForAbility(sa, min, num, sa.hasParam("CanRepeatModes")); chainAbilities(sa, chosen); + return chosen != null && !chosen.isEmpty(); } private static void chainAbilities(SpellAbility sa, List chosen) { 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 9a9f08e1551..82db7497427 100644 --- a/forge-game/src/main/java/forge/game/card/CardFactory.java +++ b/forge-game/src/main/java/forge/game/card/CardFactory.java @@ -25,8 +25,6 @@ import forge.card.mana.ManaCost; import forge.game.Game; import forge.game.ability.AbilityFactory; import forge.game.ability.AbilityUtils; -import forge.game.ability.ApiType; -import forge.game.ability.effects.CharmEffect; import forge.game.cost.Cost; import forge.game.player.Player; import forge.game.replacement.ReplacementHandler; @@ -680,9 +678,6 @@ public class CardFactory { } trig.setStackDescription(trig.toString()); - if (trig.getApi() == ApiType.Charm && !trig.isWrapper()) { - CharmEffect.makeChoices(trig); - } WrappedAbility wrapperAbility = new WrappedAbility(t, trig, ((WrappedAbility) sa).getDecider()); wrapperAbility.setTrigger(true); diff --git a/forge-game/src/main/java/forge/game/card/CardProperty.java b/forge-game/src/main/java/forge/game/card/CardProperty.java index 06cab7f3747..ca2df4ea3a9 100644 --- a/forge-game/src/main/java/forge/game/card/CardProperty.java +++ b/forge-game/src/main/java/forge/game/card/CardProperty.java @@ -1239,7 +1239,7 @@ public class CardProperty { } else if (property.startsWith("greatestPower")) { CardCollectionView cards = CardLists.filter(game.getCardsIn(ZoneType.Battlefield), Presets.CREATURES); if (property.contains("ControlledBy")) { - FCollectionView p = AbilityUtils.getDefinedPlayers(source, property.split("ControlledBy")[1], null); + FCollectionView p = AbilityUtils.getDefinedPlayers(source, property.split("ControlledBy")[1], spellAbility); cards = CardLists.filterControlledBy(cards, p); if (!cards.contains(card)) { return false; diff --git a/forge-game/src/main/java/forge/game/card/CardState.java b/forge-game/src/main/java/forge/game/card/CardState.java index 97bfad4ff04..ae4f942ff2b 100644 --- a/forge-game/src/main/java/forge/game/card/CardState.java +++ b/forge-game/src/main/java/forge/game/card/CardState.java @@ -43,6 +43,9 @@ import java.util.Collection; import java.util.List; import java.util.Map; +import io.sentry.Sentry; +import io.sentry.event.BreadcrumbBuilder; + public class CardState extends GameObject { private String name = ""; private CardType type = new CardType(); @@ -213,7 +216,19 @@ public class CardState extends GameObject { if (s.trim().length() == 0) { return null; } - KeywordInterface inst = intrinsicKeywords.add(s); + KeywordInterface inst = null; + try { + inst = intrinsicKeywords.add(s); + } catch (Exception e) { + String msg = "CardState:addIntrinsicKeyword: failed to parse Keyword"; + Sentry.getContext().recordBreadcrumb( + new BreadcrumbBuilder().setMessage(msg) + .withData("Card", card.getName()).withData("Keyword", s).build() + ); + + //rethrow + throw new RuntimeException("Error in Keyword " + s + " for card " + card.getName(), e); + } if (inst != null && initTraits) { inst.createTraits(card, true); } diff --git a/forge-game/src/main/java/forge/game/spellability/Spell.java b/forge-game/src/main/java/forge/game/spellability/Spell.java index 92879d67545..267a61fea8e 100644 --- a/forge-game/src/main/java/forge/game/spellability/Spell.java +++ b/forge-game/src/main/java/forge/game/spellability/Spell.java @@ -144,6 +144,8 @@ public abstract class Spell extends SpellAbility implements java.io.Serializable if (lkicheck) { game.getAction().checkStaticAbilities(false); game.getTracker().unfreeze(); + // reset owner for lki + card.setController(null, 0); } if (!(isInstant || activator.canCastSorcery() || flash || getRestrictions().isInstantSpeed() 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 308b373411d..6d10443816a 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerHandler.java @@ -636,7 +636,10 @@ public class TriggerHandler { sa.setStackDescription(sa.toString()); if (sa.getApi() == ApiType.Charm && !sa.isWrapper()) { - CharmEffect.makeChoices(sa); + if (!CharmEffect.makeChoices(sa)) { + // 603.3c If no mode is chosen, the ability is removed from the stack. + return; + } } Player decider = null; diff --git a/forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java b/forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java index db4efdbbee0..5df40f54120 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java +++ b/forge-gui-desktop/src/main/java/forge/screens/match/CMatchUI.java @@ -397,6 +397,7 @@ public final class CMatchUI case Hand: updateHand = true; updateZones = true; + FloatingZone.refresh(owner, zone); break; default: updateZones = true; @@ -524,6 +525,45 @@ public final class CMatchUI } } + @Override + public void setSelectables(final Iterable cards) { + super.setSelectables(cards); + // update zones on tabletop and floating zones - non-selectable cards may be rendered differently + FThreads.invokeInEdtNowOrLater(new Runnable() { + @Override public final void run() { + for (final PlayerView p : getGameView().getPlayers()) { + if ( p.getCards(ZoneType.Battlefield) != null ) { + updateCards(p.getCards(ZoneType.Battlefield)); + } + if ( p.getCards(ZoneType.Hand) != null ) { + updateCards(p.getCards(ZoneType.Hand)); + } + } + FloatingZone.refreshAll(); + } + }); + } + + @Override + public void clearSelectables() { + super.clearSelectables(); + // update zones on tabletop and floating zones - non-selectable cards may be rendered differently + FThreads.invokeInEdtNowOrLater(new Runnable() { + @Override public final void run() { + for (final PlayerView p : getGameView().getPlayers()) { + if ( p.getCards(ZoneType.Battlefield) != null ) { + updateCards(p.getCards(ZoneType.Battlefield)); + } + if ( p.getCards(ZoneType.Hand) != null ) { + updateCards(p.getCards(ZoneType.Hand)); + } + } + FloatingZone.refreshAll(); + } + }); + } + + @Override public List getMenus() { return menus.getMenus(); diff --git a/forge-gui-desktop/src/main/java/forge/view/arcane/CardPanel.java b/forge-gui-desktop/src/main/java/forge/view/arcane/CardPanel.java index 16339ea1602..8a7ee3c99c1 100644 --- a/forge-gui-desktop/src/main/java/forge/view/arcane/CardPanel.java +++ b/forge-gui-desktop/src/main/java/forge/view/arcane/CardPanel.java @@ -253,7 +253,7 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl g2d.rotate(getTappedAngle(), cardXOffset + edgeOffset, (cardYOffset + cardHeight) - edgeOffset); } - super.paint(g2d); + super.paint(g2d); } @Override @@ -268,25 +268,21 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl final int cornerSize = noBorderPref && !cardImgHasAlpha ? 0 : Math.max(4, Math.round(cardWidth * CardPanel.ROUNDED_CORNER_SIZE)); final int offset = isTapped() && (!noBorderPref || cardImgHasAlpha) ? 1 : 0; - // Magenta outline for when card was chosen to pay + // Magenta outline for when card is chosen if (matchUI.isUsedToPay(getCard())) { g2d.setColor(Color.magenta); - final int n2 = Math.max(4, Math.round(2 * cardWidth * CardPanel.SELECTED_BORDER_SIZE)); - g2d.fillRoundRect(cardXOffset - n2, (cardYOffset - n2) + offset, cardWidth + (n2 * 2), cardHeight + (n2 * 2), cornerSize + n2, cornerSize + n2); - } else if (matchUI.isSelectable(getCard())) { // Cyan outline for selectable cards - g2d.setColor(Color.cyan); - final int n2 = Math.max(4, Math.round(2 * cardWidth * CardPanel.SELECTED_BORDER_SIZE)); + final int n2 = Math.max(1, Math.round(2 * cardWidth * CardPanel.SELECTED_BORDER_SIZE)); g2d.fillRoundRect(cardXOffset - n2, (cardYOffset - n2) + offset, cardWidth + (n2 * 2), cardHeight + (n2 * 2), cornerSize + n2, cornerSize + n2); } // Green outline for hover if (isSelected) { g2d.setColor(Color.green); - final int n = Math.max(4, Math.round(cardWidth * CardPanel.SELECTED_BORDER_SIZE)); + final int n = Math.max(1, Math.round(cardWidth * CardPanel.SELECTED_BORDER_SIZE)); g2d.fillRoundRect(cardXOffset - n, (cardYOffset - n) + offset, cardWidth + (n * 2), cardHeight + (n * 2), cornerSize + n , cornerSize + n); } - // Black fill - (will become outline for white bordered cards) + // Black fill - (will become an outline for white bordered cards) g2d.setColor(Color.black); g2d.fillRoundRect(cardXOffset, cardYOffset + offset, cardWidth, cardHeight, cornerSize, cornerSize); @@ -309,6 +305,12 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl g2d.fillRoundRect(cardXOffset + ins, cardYOffset + ins, cardWidth - ins*2, cardHeight - ins*2, cornerSize-ins, cornerSize-ins); } } + + if (matchUI.isSelectable(getCard())) { // White border for selectable cards to further highlight them + g2d.setColor(Color.WHITE); + final int ins = 1; + g2d.fillRoundRect(cardXOffset+ins, cardYOffset+ins, cardWidth-ins*2, cardHeight-ins*2, cornerSize-ins, cornerSize-ins); + } } private void drawManaCost(final Graphics g, final ManaCost cost, final int deltaY) { @@ -332,6 +334,17 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl drawFoilEffect(g, card, cardXOffset, cardYOffset, cardWidth, cardHeight, Math.round(cardWidth * BLACK_BORDER_SIZE)); } + + boolean nonselectable = matchUI.isSelecting() && !matchUI.isSelectable(getCard()); + // if selecting, darken non-selectable cards + if ( nonselectable ) { + boolean noBorderPref = !isPreferenceEnabled(FPref.UI_RENDER_BLACK_BORDERS); + boolean cardImgHasAlpha = imagePanel != null && imagePanel.getSrcImage() != null && imagePanel.getSrcImage().getColorModel().hasAlpha(); + final int cornerSize = noBorderPref && !cardImgHasAlpha ? 0 : Math.max(4, Math.round(cardWidth * CardPanel.ROUNDED_CORNER_SIZE)); + final int offset = isTapped() && (!noBorderPref || cardImgHasAlpha) ? 1 : 0; + g.setColor(new Color(0.0f,0.0f,0.0f,0.6f)); + g.fillRoundRect(cardXOffset, cardYOffset + offset, cardWidth, cardHeight, cornerSize, cornerSize); + } } public static void drawFoilEffect(final Graphics g, final CardView card2, final int x, final int y, final int width, final int height, final int borderSize) { @@ -783,6 +796,7 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl return FModel.getPreferences().getPrefBoolean(preferenceName); } + // don't show overlays on non-selectable cards when selecting private boolean isShowingOverlays() { return isPreferenceEnabled(FPref.UI_SHOW_CARD_OVERLAYS) && card != null; } diff --git a/forge-gui-desktop/src/main/java/forge/view/arcane/FloatingZone.java b/forge-gui-desktop/src/main/java/forge/view/arcane/FloatingZone.java index d81af9fef88..616a7cce38c 100644 --- a/forge-gui-desktop/src/main/java/forge/view/arcane/FloatingZone.java +++ b/forge-gui-desktop/src/main/java/forge/view/arcane/FloatingZone.java @@ -94,6 +94,11 @@ public class FloatingZone extends FloatingCardArea { } floatingAreas.clear(); } + public static void refreshAll() { + for (final FloatingZone cardArea : floatingAreas.values()) { + cardArea.refresh(); + } + } private final ZoneType zone; private PlayerView player; diff --git a/forge-gui/res/cardsfolder/upcoming/aeromunculus.txt b/forge-gui/res/cardsfolder/a/aeromunculus.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/aeromunculus.txt rename to forge-gui/res/cardsfolder/a/aeromunculus.txt diff --git a/forge-gui/res/cardsfolder/upcoming/amplifire.txt b/forge-gui/res/cardsfolder/a/amplifire.txt similarity index 55% rename from forge-gui/res/cardsfolder/upcoming/amplifire.txt rename to forge-gui/res/cardsfolder/a/amplifire.txt index ce695f0c794..ec7e20c367f 100644 --- a/forge-gui/res/cardsfolder/upcoming/amplifire.txt +++ b/forge-gui/res/cardsfolder/a/amplifire.txt @@ -3,6 +3,10 @@ ManaCost:2 R R Types:Creature Elemental PT:1/1 T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDig | TriggerDescription$ At the beginning of your upkeep, reveal cards from the top of your library until you reveal a creature card. Until your next turn, CARDNAME's base power becomes twice that card's power and its toughness. Put the revealed cards on the bottom of your library in a random order. -SVar:TrigDig:DB$ DigUntil | Valid$ Creature | ValidDescription$ creature card | FoundDestination$ Library | RevealedDestination$ Library | RevealedLibraryPosition$ -1 | RememberFound$ True | SubAbility$ DBAnimate -SVar:DBAnimate:DB$ Animate | Power$ X | Toughness$ Y +SVar:TrigDig:DB$ DigUntil | Reveal$ True | Valid$ Creature | ValidDescription$ creature card | FoundDestination$ Exile | RevealedDestination$ Exile | RememberFound$ True | ImprintRevealed$ True | SubAbility$ DBAnimate +SVar:DBAnimate:DB$ Animate | Power$ X | Toughness$ Y | SubAbility$ DBMovetoLib +SVar:DBMovetoLib:DB$ ChangeZoneAll | ChangeType$ Card.IsRemembered,Card.IsImprinted | Origin$ Exile | Destination$ Library | RandomOrder$ True | LibraryPosition$ -1 | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True +SVar:X:Remembered$CardPower/Times.2 +SVar:Y:Remembered$CardToughness/Times.2 Oracle:At the beginning of your upkeep, reveal cards from the top of your library until you reveal a creature card. Until your next turn, Amplifire's base power becomes twice that card's power and its base toughness becomes twice that card's toughness. Put the revealed cards on the bottom of your library in a random order. diff --git a/forge-gui/res/cardsfolder/upcoming/angel_of_grace.txt b/forge-gui/res/cardsfolder/a/angel_of_grace.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/angel_of_grace.txt rename to forge-gui/res/cardsfolder/a/angel_of_grace.txt diff --git a/forge-gui/res/cardsfolder/upcoming/angelic_exaltation.txt b/forge-gui/res/cardsfolder/a/angelic_exaltation.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/angelic_exaltation.txt rename to forge-gui/res/cardsfolder/a/angelic_exaltation.txt diff --git a/forge-gui/res/cardsfolder/upcoming/applied_biomancy.txt b/forge-gui/res/cardsfolder/a/applied_biomancy.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/applied_biomancy.txt rename to forge-gui/res/cardsfolder/a/applied_biomancy.txt diff --git a/forge-gui/res/cardsfolder/upcoming/archway_angel.txt b/forge-gui/res/cardsfolder/a/archway_angel.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/archway_angel.txt rename to forge-gui/res/cardsfolder/a/archway_angel.txt diff --git a/forge-gui/res/cardsfolder/upcoming/arresters_admonition.txt b/forge-gui/res/cardsfolder/a/arresters_admonition.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/arresters_admonition.txt rename to forge-gui/res/cardsfolder/a/arresters_admonition.txt diff --git a/forge-gui/res/cardsfolder/upcoming/arresters_zeal.txt b/forge-gui/res/cardsfolder/a/arresters_zeal.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/arresters_zeal.txt rename to forge-gui/res/cardsfolder/a/arresters_zeal.txt diff --git a/forge-gui/res/cardsfolder/upcoming/awaken_the_erstwhile.txt b/forge-gui/res/cardsfolder/a/awaken_the_erstwhile.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/awaken_the_erstwhile.txt rename to forge-gui/res/cardsfolder/a/awaken_the_erstwhile.txt diff --git a/forge-gui/res/cardsfolder/upcoming/axebane_beast.txt b/forge-gui/res/cardsfolder/a/axebane_beast.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/axebane_beast.txt rename to forge-gui/res/cardsfolder/a/axebane_beast.txt diff --git a/forge-gui/res/cardsfolder/upcoming/azorius_knight_arbiter.txt b/forge-gui/res/cardsfolder/a/azorius_knight_arbiter.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/azorius_knight_arbiter.txt rename to forge-gui/res/cardsfolder/a/azorius_knight_arbiter.txt diff --git a/forge-gui/res/cardsfolder/upcoming/azorius_locket.txt b/forge-gui/res/cardsfolder/a/azorius_locket.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/azorius_locket.txt rename to forge-gui/res/cardsfolder/a/azorius_locket.txt diff --git a/forge-gui/res/cardsfolder/upcoming/azorius_skyguard.txt b/forge-gui/res/cardsfolder/a/azorius_skyguard.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/azorius_skyguard.txt rename to forge-gui/res/cardsfolder/a/azorius_skyguard.txt diff --git a/forge-gui/res/cardsfolder/upcoming/bankrupt_in_blood.txt b/forge-gui/res/cardsfolder/b/bankrupt_in_blood.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/bankrupt_in_blood.txt rename to forge-gui/res/cardsfolder/b/bankrupt_in_blood.txt diff --git a/forge-gui/res/cardsfolder/upcoming/basilica_bell_haunt.txt b/forge-gui/res/cardsfolder/b/basilica_bell_haunt.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/basilica_bell_haunt.txt rename to forge-gui/res/cardsfolder/b/basilica_bell_haunt.txt diff --git a/forge-gui/res/cardsfolder/upcoming/bedeck_bedazzle.txt b/forge-gui/res/cardsfolder/b/bedeck_bedazzle.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/bedeck_bedazzle.txt rename to forge-gui/res/cardsfolder/b/bedeck_bedazzle.txt diff --git a/forge-gui/res/cardsfolder/upcoming/bedevil.txt b/forge-gui/res/cardsfolder/b/bedevil.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/bedevil.txt rename to forge-gui/res/cardsfolder/b/bedevil.txt diff --git a/forge-gui/res/cardsfolder/upcoming/benthic_biomancer.txt b/forge-gui/res/cardsfolder/b/benthic_biomancer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/benthic_biomancer.txt rename to forge-gui/res/cardsfolder/b/benthic_biomancer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/biogenic_ooze.txt b/forge-gui/res/cardsfolder/b/biogenic_ooze.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/biogenic_ooze.txt rename to forge-gui/res/cardsfolder/b/biogenic_ooze.txt diff --git a/forge-gui/res/cardsfolder/upcoming/biogenic_upgrade.txt b/forge-gui/res/cardsfolder/b/biogenic_upgrade.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/biogenic_upgrade.txt rename to forge-gui/res/cardsfolder/b/biogenic_upgrade.txt diff --git a/forge-gui/res/cardsfolder/upcoming/biomancers_familiar.txt b/forge-gui/res/cardsfolder/b/biomancers_familiar.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/biomancers_familiar.txt rename to forge-gui/res/cardsfolder/b/biomancers_familiar.txt diff --git a/forge-gui/res/cardsfolder/upcoming/blade_juggler.txt b/forge-gui/res/cardsfolder/b/blade_juggler.txt similarity index 97% rename from forge-gui/res/cardsfolder/upcoming/blade_juggler.txt rename to forge-gui/res/cardsfolder/b/blade_juggler.txt index 9bfac79a21a..558fd7bbb09 100644 --- a/forge-gui/res/cardsfolder/upcoming/blade_juggler.txt +++ b/forge-gui/res/cardsfolder/b/blade_juggler.txt @@ -2,7 +2,7 @@ Name:Blade Juggler ManaCost:4 B Types:Creature Human Rogue PT:3/2 -K:Spectacle:2 +K:Spectacle:2 B T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerDescription$ When CARDNAME enters the battlefield, it deals 1 damage to you and you draw a card. SVar:TrigDealDamage:DB$DealDamage | Defined$ You | NumDmg$ 1 | SubAbility$ DBDraw SVar:DBDraw:DB$Draw | Defined$ You | NumCards$ 1 diff --git a/forge-gui/res/cardsfolder/upcoming/bladebrand.txt b/forge-gui/res/cardsfolder/b/bladebrand.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/bladebrand.txt rename to forge-gui/res/cardsfolder/b/bladebrand.txt diff --git a/forge-gui/res/cardsfolder/upcoming/bloodmist_infiltrator.txt b/forge-gui/res/cardsfolder/b/bloodmist_infiltrator.txt similarity index 68% rename from forge-gui/res/cardsfolder/upcoming/bloodmist_infiltrator.txt rename to forge-gui/res/cardsfolder/b/bloodmist_infiltrator.txt index 595582978bd..564757411cf 100644 --- a/forge-gui/res/cardsfolder/upcoming/bloodmist_infiltrator.txt +++ b/forge-gui/res/cardsfolder/b/bloodmist_infiltrator.txt @@ -3,7 +3,5 @@ ManaCost:2 B Types:Creature Vampire PT:3/1 T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigPump | TriggerDescription$ Whenever CARDNAME attacks, you may sacrifice another creature. If you do, CARDNAME can't be blocked this turn. -SVar:TrigPump:AB$ Pump | Cost$ Sac<1/Creature.Other/another creature> | Defined$ Self | KW$ HIDDEN Unblockable | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ1 | SubAbility$ DBCleanup | References$ X -SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True -SVar:X:Remembered$Amount +SVar:TrigPump:AB$ Pump | Cost$ Sac<1/Creature.Other/another creature> | Defined$ Self | KW$ HIDDEN Unblockable Oracle:Whenever Bloodmist Infiltrator attacks, you may sacrifice another creature. If you do, Bloodmist Infiltrator can't be blocked this turn. diff --git a/forge-gui/res/cardsfolder/upcoming/bolrac_clan_crusher.txt b/forge-gui/res/cardsfolder/b/bolrac_clan_crusher.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/bolrac_clan_crusher.txt rename to forge-gui/res/cardsfolder/b/bolrac_clan_crusher.txt diff --git a/forge-gui/res/cardsfolder/upcoming/bring_to_trial.txt b/forge-gui/res/cardsfolder/b/bring_to_trial.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/bring_to_trial.txt rename to forge-gui/res/cardsfolder/b/bring_to_trial.txt diff --git a/forge-gui/res/cardsfolder/upcoming/burn_bright.txt b/forge-gui/res/cardsfolder/b/burn_bright.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/burn_bright.txt rename to forge-gui/res/cardsfolder/b/burn_bright.txt diff --git a/forge-gui/res/cardsfolder/upcoming/burning_tree_vandal.txt b/forge-gui/res/cardsfolder/b/burning_tree_vandal.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/burning_tree_vandal.txt rename to forge-gui/res/cardsfolder/b/burning_tree_vandal.txt diff --git a/forge-gui/res/cardsfolder/upcoming/captive_audience.txt b/forge-gui/res/cardsfolder/c/captive_audience.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/captive_audience.txt rename to forge-gui/res/cardsfolder/c/captive_audience.txt diff --git a/forge-gui/res/cardsfolder/upcoming/carnival_carnage.txt b/forge-gui/res/cardsfolder/c/carnival_carnage.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/carnival_carnage.txt rename to forge-gui/res/cardsfolder/c/carnival_carnage.txt diff --git a/forge-gui/res/cardsfolder/upcoming/carrion_imp.txt b/forge-gui/res/cardsfolder/c/carrion_imp.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/carrion_imp.txt rename to forge-gui/res/cardsfolder/c/carrion_imp.txt diff --git a/forge-gui/res/cardsfolder/upcoming/catacomb_crocodile.txt b/forge-gui/res/cardsfolder/c/catacomb_crocodile.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/catacomb_crocodile.txt rename to forge-gui/res/cardsfolder/c/catacomb_crocodile.txt diff --git a/forge-gui/res/cardsfolder/c/cavalcade_of_calamity.txt b/forge-gui/res/cardsfolder/c/cavalcade_of_calamity.txt new file mode 100644 index 00000000000..90dc2bd6971 --- /dev/null +++ b/forge-gui/res/cardsfolder/c/cavalcade_of_calamity.txt @@ -0,0 +1,7 @@ +Name:Cavalcade of Calamity +ManaCost:1 R +Types:Enchantment +T:Mode$ Attacks | ValidCard$ Creature.powerLE1+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever a creature you control with power 1 or less attacks, CARDNAME deals 1 damage to the player or planeswalker that creature is attacking +SVar:TrigDamage:DB$DealDamage | Defined$ TriggeredDefender | NumDmg$ 1 +SVar:PlayMain1:TRUE +Oracle:Whenever a creature you control with power 1 or less attacks, Cavalcade of Calamity deals 1 damage to the player or planeswalker that creature is attacking. diff --git a/forge-gui/res/cardsfolder/c/charging_war_boar.txt b/forge-gui/res/cardsfolder/c/charging_war_boar.txt new file mode 100644 index 00000000000..120a77a72d7 --- /dev/null +++ b/forge-gui/res/cardsfolder/c/charging_war_boar.txt @@ -0,0 +1,8 @@ +Name:Charging War Boar +ManaCost:1 R G +Types:Creature Boar +PT:3/1 +K:Haste +S:Mode$ Continuous | Affected$ Card.Self | AddKeyword$ Trample | AddPower$ 1 | AddToughness$ 1 | IsPresent$ Planeswalker.Domri+YouCtrl | Description$ As long as you control a Domri planeswalker, CARDNAME gets +1/+1 and has trample. +SVar:BuffedBy:Domri +Oracle:Haste (This creature can attack and {T} as soon as it comes under your control.)\nAs long as you control a Domri planeswalker, Charging War Boar gets +1/+1 and has trample. (It can deal excess damage to the player or planeswalker it’s attacking.) diff --git a/forge-gui/res/cardsfolder/upcoming/chillbringer.txt b/forge-gui/res/cardsfolder/c/chillbringer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/chillbringer.txt rename to forge-gui/res/cardsfolder/c/chillbringer.txt diff --git a/forge-gui/res/cardsfolder/c/cindervines.txt b/forge-gui/res/cardsfolder/c/cindervines.txt new file mode 100644 index 00000000000..9025de38615 --- /dev/null +++ b/forge-gui/res/cardsfolder/c/cindervines.txt @@ -0,0 +1,8 @@ +Name:Cindervines +ManaCost:R G +Types:Enchantment +T:Mode$ SpellCast | ValidCard$ Card.nonCreature | ValidActivatingPlayer$ Opponent | TriggerZones$ Battlefield | Execute$ TrigDealOneDamage | TriggerDescription$ Whenever an opponent casts a noncreature spell, CARDNAME deals 1 damage to that player. +SVar:TrigDealOneDamage:DB$DealDamage | Defined$ TriggeredActivator | NumDmg$ 1 +A:AB$ Destroy | Cost$ 1 Sac<1/CARDNAME> | ValidTgts$ Artifact,Enchantment | TgtPrompt$ Select target artifact or enchantment | SubAbility$ DBDealTwoDamage | SpellDescription$ Destroy target artifact or enchantment. CARDNAME deals 2 damage to that permanent’s controller. +SVar:DBDealTwoDamage:DB$ DealDamage | Defined$ TargetedController | NumDmg$ 2 +Oracle:Whenever an opponent casts a noncreature spell, Cindervines deals 1 damage to that player.\n{1}, Sacrifice Cindervines: Destroy target artifact or enchantment. Cindervines deals 2 damage to that permanent’s controller. diff --git a/forge-gui/res/cardsfolder/upcoming/civic_stalwart.txt b/forge-gui/res/cardsfolder/c/civic_stalwart.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/civic_stalwart.txt rename to forge-gui/res/cardsfolder/c/civic_stalwart.txt diff --git a/forge-gui/res/cardsfolder/c/clamor_shaman.txt b/forge-gui/res/cardsfolder/c/clamor_shaman.txt new file mode 100644 index 00000000000..64148416e73 --- /dev/null +++ b/forge-gui/res/cardsfolder/c/clamor_shaman.txt @@ -0,0 +1,8 @@ +Name:Clamor Shaman +ManaCost:2 R +Types:Creature Shaman +PT:1/1 +K:Riot +T:Mode$ Attacks | ValidCard$ Card.Self | Execute$ TrigCanNotBlock | TriggerDescription$ Whenever CARDNAME attacks, target creature an opponent controls can't block this turn. +SVar:TrigCanNotBlock:DB$ Pump | ValidTgts$ Creature.OppCtrl | KW$ HIDDEN CARDNAME can't block. | TgtPrompt$ Select target creature an opponent controls | IsCurse$ True +Oracle:Riot (This creature enters the battlefield with your choice of a +1/+1 counter or haste.)\nWhenever Clamor Shaman attacks, target creature an opponent controls can’t block this turn. diff --git a/forge-gui/res/cardsfolder/upcoming/clan_guildmage.txt b/forge-gui/res/cardsfolder/c/clan_guildmage.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/clan_guildmage.txt rename to forge-gui/res/cardsfolder/c/clan_guildmage.txt diff --git a/forge-gui/res/cardsfolder/upcoming/clear_the_mind.txt b/forge-gui/res/cardsfolder/c/clear_the_mind.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/clear_the_mind.txt rename to forge-gui/res/cardsfolder/c/clear_the_mind.txt diff --git a/forge-gui/res/cardsfolder/upcoming/clear_the_stage.txt b/forge-gui/res/cardsfolder/c/clear_the_stage.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/clear_the_stage.txt rename to forge-gui/res/cardsfolder/c/clear_the_stage.txt diff --git a/forge-gui/res/cardsfolder/upcoming/code_of_constraint.txt b/forge-gui/res/cardsfolder/c/code_of_constraint.txt similarity index 82% rename from forge-gui/res/cardsfolder/upcoming/code_of_constraint.txt rename to forge-gui/res/cardsfolder/c/code_of_constraint.txt index 93f7a6a9ebd..33e49316fc9 100644 --- a/forge-gui/res/cardsfolder/upcoming/code_of_constraint.txt +++ b/forge-gui/res/cardsfolder/c/code_of_constraint.txt @@ -4,6 +4,6 @@ Types:Instant A:SP$ Pump | Cost$ 2 U | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ -4 | IsCurse$ True | SubAbility$ DBDraw | SpellDescription$ Target creature gets -4/-0 until end of turn. SVar:DBDraw:DB$ Draw | NumCards$ 1 | SpellDescription$ Draw a card. | SubAbility$ DBAddendum SVar:DBAddendum:DB$ Tap | Defined$ Targeted | ConditionPlayerTurn$ True | ConditionPhases$ Main1,Main2 | SubAbility$ DBPump | SpellDescription$ Addendum - If you cast this spell during your main phase, tap that creature and it doesn't untap during its controller's next untap step. -SVar:DBPump:DB$ Pump | Defined$ Targeted | KW$ HIDDEN This card doesn't untap during your next untap step. | Permanent$ True +SVar:DBPump:DB$ Pump | Defined$ Targeted | ConditionPlayerTurn$ True | ConditionPhases$ Main1,Main2 | KW$ HIDDEN This card doesn't untap during your next untap step. | Permanent$ True SVar:PlayMain1:TRUE Oracle:Target creature gets -4/-0 until end of turn.\nDraw a card.\nAddendum — If you cast this spell during your main phase, tap that creature and it doesn't untap during its controller's next untap step. diff --git a/forge-gui/res/cardsfolder/upcoming/collision_colossus.txt b/forge-gui/res/cardsfolder/c/collision_colossus.txt similarity index 80% rename from forge-gui/res/cardsfolder/upcoming/collision_colossus.txt rename to forge-gui/res/cardsfolder/c/collision_colossus.txt index c91059e34cf..c95838afd48 100644 --- a/forge-gui/res/cardsfolder/upcoming/collision_colossus.txt +++ b/forge-gui/res/cardsfolder/c/collision_colossus.txt @@ -10,5 +10,5 @@ ALTERNATE Name:Colossus ManaCost:R G Types:Instant -A:SP$ Pump | Cost$ 1 R | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +4 | NumDef$ +2 | KW$ Trample | SpellDescription$ Target creature gets +3/+1 and gains trample until end of turn. +A:SP$ Pump | Cost$ R G | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ +4 | NumDef$ +2 | KW$ Trample | SpellDescription$ Target creature gets +4/+2 and gains trample until end of turn. Oracle:Target creature gets +4/+2 and gains trample until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/combine_guildmage.txt b/forge-gui/res/cardsfolder/c/combine_guildmage.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/combine_guildmage.txt rename to forge-gui/res/cardsfolder/c/combine_guildmage.txt diff --git a/forge-gui/res/cardsfolder/c/consecrate_consume.txt b/forge-gui/res/cardsfolder/c/consecrate_consume.txt new file mode 100644 index 00000000000..4bcc6b4e0af --- /dev/null +++ b/forge-gui/res/cardsfolder/c/consecrate_consume.txt @@ -0,0 +1,20 @@ +Name:Consecrate +ManaCost:1 WB +AlternateMode: Split +Types:Instant +A:SP$ ChangeZone | Cost$ 1 WB | Origin$ Graveyard | Destination$ Exile | TgtPrompt$ Choose target card in a graveyard | ValidTgts$ Card | SpellDescription$ Exile target card from a graveyard. | SubAbility$ DBDraw +SVar:DBDraw:DB$ Draw | NumCards$ 1 | SpellDescription$ Draw a card. +Oracle:Exile target card from a graveyard.\nDraw a card. + +ALTERNATE + +Name:Consume +ManaCost:2 W B +Types:Sorcery +A:SP$ Pump | Cost$ 2 W B | ValidTgts$ Player | RememberTargets$ True | SubAbility$ DBChooseCard | SpellDescription$ Target player sacrifices a creature with the greatest power among creatures they control. You gain life equal to its power. +SVar:DBChooseCard:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Creature.greatestPowerControlledByRemembered | Mandatory$ True | SubAbility$ DBSac +SVar:DBSac:DB$ Sacrifice | Defined$ Player.IsRemembered | SacValid$ Card.ChosenCard | RememberSacrificed$ True | SubAbility$ DBGainLife | SacMessage$ the creature with the highest power +SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ X | References$ X | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:RememberedLKI$CardPower +Oracle:Target player sacrifices a creature with the greatest power among creatures they control. You gain life equal to its power. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/consign_to_the_pit.txt b/forge-gui/res/cardsfolder/c/consign_to_the_pit.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/consign_to_the_pit.txt rename to forge-gui/res/cardsfolder/c/consign_to_the_pit.txt diff --git a/forge-gui/res/cardsfolder/upcoming/coral_commando.txt b/forge-gui/res/cardsfolder/c/coral_commando.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/coral_commando.txt rename to forge-gui/res/cardsfolder/c/coral_commando.txt diff --git a/forge-gui/res/cardsfolder/upcoming/cry_of_the_carnarium.txt b/forge-gui/res/cardsfolder/c/cry_of_the_carnarium.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/cry_of_the_carnarium.txt rename to forge-gui/res/cardsfolder/c/cry_of_the_carnarium.txt diff --git a/forge-gui/res/cardsfolder/upcoming/cult_guildmage.txt b/forge-gui/res/cardsfolder/c/cult_guildmage.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/cult_guildmage.txt rename to forge-gui/res/cardsfolder/c/cult_guildmage.txt diff --git a/forge-gui/res/cardsfolder/upcoming/dagger_caster.txt b/forge-gui/res/cardsfolder/d/dagger_caster.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/dagger_caster.txt rename to forge-gui/res/cardsfolder/d/dagger_caster.txt diff --git a/forge-gui/res/cardsfolder/upcoming/dead_revels.txt b/forge-gui/res/cardsfolder/d/dead_revels.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/dead_revels.txt rename to forge-gui/res/cardsfolder/d/dead_revels.txt diff --git a/forge-gui/res/cardsfolder/upcoming/debtors_transport.txt b/forge-gui/res/cardsfolder/d/debtors_transport.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/debtors_transport.txt rename to forge-gui/res/cardsfolder/d/debtors_transport.txt diff --git a/forge-gui/res/cardsfolder/upcoming/deface.txt b/forge-gui/res/cardsfolder/d/deface.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/deface.txt rename to forge-gui/res/cardsfolder/d/deface.txt diff --git a/forge-gui/res/cardsfolder/upcoming/depose_deploy.txt b/forge-gui/res/cardsfolder/d/depose_deploy.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/depose_deploy.txt rename to forge-gui/res/cardsfolder/d/depose_deploy.txt diff --git a/forge-gui/res/cardsfolder/d/deputy_of_detention.txt b/forge-gui/res/cardsfolder/d/deputy_of_detention.txt new file mode 100644 index 00000000000..a29ca9f4bb5 --- /dev/null +++ b/forge-gui/res/cardsfolder/d/deputy_of_detention.txt @@ -0,0 +1,13 @@ +Name:Deputy of Detention +ManaCost:1 W U +Types:Creature Vedalken Wizard +PT:1/3 +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 and all other nonland permanents that player controls with the same name as that permanent until CARDNAME leaves the battlefield. +SVar:TrigExile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | ValidTgts$ Permanent.nonLand+OppCtrl | TgtPrompt$ Select target nonland permanent an opponent controls | RememberTargets$ True | SubAbility$ DBChangeZoneAll +SVar:DBChangeZoneAll:DB$ ChangeZoneAll | Origin$ Battlefield | Destination$ Exile | ChangeType$ Remembered.sameName+OppCtrl | RememberChanged$ True | SubAbility$ DBEffect +SVar:DBEffect:DB$ Effect | Triggers$ ComeBack | RememberObjects$ Remembered | ImprintCards$ Self | SVars$ TrigReturn,ExileSelf | ConditionPresent$ Card.Self | Duration$ Permanent | ForgetOnMoved$ Exile | SubAbility$ DBCleanup +SVar:ComeBack:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.IsImprinted | Execute$ TrigReturn | TriggerZones$ Command | TriggerController$ TriggeredCardController | Static$ True | TriggerDescription$ Those permanents are exiled until EFFECTSOURCE leaves the battlefield +SVar:TrigReturn:DB$ ChangeZoneAll | Origin$ Exile | Destination$ Battlefield | ChangeType$ Card.IsRemembered | SubAbility$ ExileSelf +SVar:ExileSelf:DB$ ChangeZone | Origin$ Command | Destination$ Exile | Defined$ Self +SVar:DBCleanup:DB$Cleanup | ClearRemembered$ True +Oracle:When Deputy of Detention enters the battlefield, exile target nonland permanent an opponent controls and all other nonland permanents that player controls with the same name as that permanent until Deputy of Detention leaves the battlefield. diff --git a/forge-gui/res/cardsfolder/d/domri_chaos_bringer.txt b/forge-gui/res/cardsfolder/d/domri_chaos_bringer.txt new file mode 100644 index 00000000000..74ee094865e --- /dev/null +++ b/forge-gui/res/cardsfolder/d/domri_chaos_bringer.txt @@ -0,0 +1,10 @@ +Name:Domri, Chaos Bringer +ManaCost:2 R G +Types:Legendary Planeswalker Domri +Loyalty:5 +A:AB$ Mana | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | Produced$ Combo R G | Amount$ 1 | AddsKeywords$ Riot | AddsKeywordsType$ Creature | SpellDescription$ Add {R} or {G}. If that mana is spent on a creature spell, it gains riot. (It enters the battlefield with your choice of a +1/+1 counter or haste.) +A:AB$ Dig | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | ForceRevealToController$ True | DigNum$ 4 | ChangeNum$ 2 | Optional$ True | ChangeValid$ Creature | RestRandomOrder$ True | SpellDescription$ Look at the top four cards of your library. You may reveal up to two creature cards from among them and put them into your hand. Put the rest on the bottom of your library in a random order. +A:AB$ Effect | Cost$ SubCounter<8/LOYALTY> | Planeswalker$ True | Ultimate$ True | Name$ Emblem - Domri, Chaos Bringer | Image$ emblem_domri_chaos_bringer | Triggers$ EffPhase | SVars$ EmblemTrigToken | Duration$ Permanent | SpellDescription$ You get an emblem with “At the beginning of each end step, create a 4/4 red and green Beast creature token with trample.” +SVar:EffPhase:Mode$ Phase | Phase$ End of Turn | Execute$ EmblemTrigToken | TriggerDescription$ At the beginning of each end step, create a 4/4 red and green Beast creature token with trample. +SVar:EmblemTrigToken:DB$ Token | TokenOwner$ You | TokenAmount$ 1 | TokenPower$ 4 | TokenToughness$ 4 | TokenColors$ Red,Green | TokenTypes$ Creature,Beast | TokenKeywords$ Trample | TokenImage$ rg 4 4 beast rna +Oracle:+1: Add {R} or {G}. If that mana is spent on a creature spell, it gains riot. (It enters the battlefield with your choice of a +1/+1 counter or haste.)\n−3: Look at the top four cards of your library. You may reveal up to two creature cards from among them and put them into your hand. Put the rest on the bottom of your library in a random order.\n−8: You get an emblem with “At the beginning of each end step, create a 4/4 red and green Beast creature token with trample.” diff --git a/forge-gui/res/cardsfolder/d/domri_city_smasher.txt b/forge-gui/res/cardsfolder/d/domri_city_smasher.txt new file mode 100644 index 00000000000..f5563d10db9 --- /dev/null +++ b/forge-gui/res/cardsfolder/d/domri_city_smasher.txt @@ -0,0 +1,9 @@ +Name:Domri, City Smasher +ManaCost:4 R G +Types:Legendary Planeswalker Domri +Loyalty:4 +A:AB$ PumpAll | Cost$ AddCounter<2/LOYALTY> | ValidCards$ Creature.YouCtrl | KW$ Haste | NumAtt$ +1 | NumDef$ +1 | Planeswalker$ True | AILogic$ Main1 | SpellDescription$ Creatures you control get +1/+1 and gain haste until end of turn. +A:AB$ DealDamage | Cost$ SubCounter<3/LOYALTY> | Planeswalker$ True | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 3 | SpellDescription$ CARDNAME deals 3 damage to any target. +A:AB$ PutCounterAll | Cost$ SubCounter<8/LOYALTY> | Planeswalker$ True | ValidCards$ Creature.YouCtrl | CounterType$ P1P1 | CounterNum$ 3 | SubAbility$ DBPumpAll | SpellDescription$ Put three +1/+1 counters on each creature you control. Those creatures gain trample until end of turn. +SVar:DBPumpAll:DB$ PumpAll | KW$ Trample | ValidCards$ Creature.YouCtrl +Oracle:+2: Creatures you control get +1/+1 and gain haste until end of turn.\n−3: Domri, City Smasher deals 3 damage to any target.\n−8: Put three +1/+1 counters on each creature you control. Those creatures gain trample until end of turn. diff --git a/forge-gui/res/cardsfolder/d/domris_nodorog.txt b/forge-gui/res/cardsfolder/d/domris_nodorog.txt new file mode 100644 index 00000000000..1ab1297832a --- /dev/null +++ b/forge-gui/res/cardsfolder/d/domris_nodorog.txt @@ -0,0 +1,9 @@ +Name:Domri's Nodorog +ManaCost:3 R G +Types:Creature Beast +PT:5/2 +K:Trample +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigSearch | OptionalDecider$ You | TriggerDescription$ When CARDNAME enters the battlefield, you may search your library and/or graveyard for a card named Domri, City Smasher, reveal it, and put it into your hand. If you search your library this way, shuffle it. +SVar:TrigSearch:DB$ ChangeZone | Origin$ Library,Graveyard | Destination$ Hand | ChangeType$ Card.namedDomri; City Smasher | ChangeNum$ 1 | Optional$ True +DeckHints:Name$Domri, City Smasher +Oracle:Trample\nWhen Domri’s Nodorog enters the battlefield, you may search your library and/or graveyard for a card named Domri, City Smasher, reveal it, and put it into your hand. If you search your library this way, shuffle it. diff --git a/forge-gui/res/cardsfolder/d/dovin_architect_of_law.txt b/forge-gui/res/cardsfolder/d/dovin_architect_of_law.txt new file mode 100644 index 00000000000..cd0a8f42060 --- /dev/null +++ b/forge-gui/res/cardsfolder/d/dovin_architect_of_law.txt @@ -0,0 +1,11 @@ +Name:Dovin, Architect of Law +ManaCost:4 W U +Types:Legendary Planeswalker Dovin +Loyalty:5 +A:AB$ GainLife | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | Defined$ You | LifeAmount$ 2 | SubAbility$ DBDraw | SpellDescription$ You gain 2 life and draw a card. +SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ 1 +A:AB$ Tap | Cost$ SubCounter<1/LOYALTY> | ValidTgts$ Creature | TgtPrompt$ Choose target creature to tap. | Planeswalker$ True | SubAbility$ DovinPump | SpellDescription$ Tap target creature. It doesn't untap during its controller's next untap step. +SVar:DovinPump:DB$ Pump | Defined$ Targeted | Permanent$ True | KW$ HIDDEN This card doesn't untap during your next untap step. +A:AB$ TapAll | Cost$ SubCounter<9/LOYALTY> | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | ValidCards$ Permanent | Planeswalker$ True | SubAbility$ NoUntap | SpellDescription$ Tap all permanents target opponent controls. That player skips their next untap step. +SVar:NoUntap:DB$ Pump | Defined$ TargetedPlayer | IsCurse$ True | KW$ Skip your next untap step. | Permanent$ True +Oracle:+1: You gain 2 life and draw a card.\n−1: Tap target creature. It doesn’t untap during its controller’s next untap step.\n−9: Tap all permanents target opponent controls. That player skips their next untap step. diff --git a/forge-gui/res/cardsfolder/upcoming/dovin_grand_arbiter.txt b/forge-gui/res/cardsfolder/d/dovin_grand_arbiter.txt similarity index 60% rename from forge-gui/res/cardsfolder/upcoming/dovin_grand_arbiter.txt rename to forge-gui/res/cardsfolder/d/dovin_grand_arbiter.txt index a27a07d3d7b..494a7f60892 100644 --- a/forge-gui/res/cardsfolder/upcoming/dovin_grand_arbiter.txt +++ b/forge-gui/res/cardsfolder/d/dovin_grand_arbiter.txt @@ -2,11 +2,11 @@ Name:Dovin, Grand Arbiter ManaCost:1 W U Types:Legendary Planeswalker Dovin Loyalty:3 -A:AB$ Effect | Cost$ AddCounter<1/LOYALTY> | Name$ CARDNAME Effect | Triggers$ TrigSpellCast | SVars$ TrigPutCounter | SpellDescription$ Until end of turn, whenever a creature you control deals combat damage to a player, put a loyalty counter on CARDNAME. -SVar:X:Count$Valid Creature.YouCtrl -SVar:TrigPutCounter:DB$ PutCounter | Defined$ Self | CounterType$ LOYALTY | CounterNum$ 1 +A:AB$ Effect | Cost$ AddCounter<1/LOYALTY> | Planeswalker$ True | Name$ Dovin, Grand Arbiter Effect | Triggers$ TrigDamage | SVars$ TrigPutCounter | RememberObjects$ Self | SpellDescription$ Until end of turn, whenever a creature you control deals combat damage to a player, put a loyalty counter on CARDNAME. +SVar:TrigDamage:Mode$ DamageDone | ValidSource$ Creature.YouCtrl | ValidTarget$ Player | CombatDamage$ True | Execute$ TrigPutCounter | TriggerDescription$ Until end of turn, whenever a creature you control deals combat damage to a player, put a loyalty counter on CARDNAME. +SVar:TrigPutCounter:DB$ PutCounter | Defined$ Remembered | CounterType$ LOYALTY | CounterNum$ 1 A:AB$ Token | Cost$ SubCounter<1/LOYALTY> | Planeswalker$ True | TokenAmount$ 1 | TokenScript$ c_1_1_a_thopter_flying | TokenOwner$ You | LegacyImage$ c 1 1 a thopter flying rna | SubAbility$ DBGainLife | SpellDescription$ Create a 1/1 colorless Thopter artifact creature token with flying. SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 1 | SpellDescription$ You gain 1 life. DeckHas:Ability$Token -A:AB$ Dig | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | DigNum$ 10 | ChangeNum$ 3 | DestinationZone$ Hand | DestinationZone2$ Library | LibraryPosition$ -1 | Choices$ Card.nonLand | SpellDescription$ Look at the top ten cards of your library. Put three of them into your hand and the rest on the bottom of your library in a random order. +A:AB$ Dig | Cost$ SubCounter<7/LOYALTY> | Planeswalker$ True | DigNum$ 10 | ChangeNum$ 3 | DestinationZone$ Hand | DestinationZone2$ Library | LibraryPosition$ -1 | RestRandomOrder$ True | SpellDescription$ Look at the top ten cards of your library. Put three of them into your hand and the rest on the bottom of your library in a random order. Oracle:[+1]: Until end of turn, whenever a creature you control deals combat damage to a player, put a loyalty counter on Dovin, Grand Arbiter.\n[-1]: Create a 1/1 colorless Thopter artifact creature token with flying. You gain 1 life.\n[-7]: Look at the top ten cards of your library. Put three of them into your hand and the rest on the bottom of your library in a random order. diff --git a/forge-gui/res/cardsfolder/upcoming/dovins_acuity.txt b/forge-gui/res/cardsfolder/d/dovins_acuity.txt similarity index 63% rename from forge-gui/res/cardsfolder/upcoming/dovins_acuity.txt rename to forge-gui/res/cardsfolder/d/dovins_acuity.txt index 72a7e9e4c1a..41757ebaac4 100644 --- a/forge-gui/res/cardsfolder/upcoming/dovins_acuity.txt +++ b/forge-gui/res/cardsfolder/d/dovins_acuity.txt @@ -2,9 +2,10 @@ Name:Dovin's Acuity ManaCost:1 W U Types:Enchantment T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigGainLife | TriggerDescription$ When CARDNAME enters the battlefield, you gain 2 life and draw a card. -T:Mode$ SpellCast | ValidCard$ Instant | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigChangeZone | OptionalDecider$ You | TriggerDescription$ Whenever you cast an instant spell during your main phase, you may return CARDNAME to its owner's hand. SVar:TrigGainLife:DB$GainLife | Defined$ You | LifeAmount$ 2 | SubAbility$ DBDraw SVar:DBDraw:DB$Draw | Defined$ You | NumCards$ 1 -SVar:X:Count$IfMainPhase +T:Mode$ SpellCast | ValidCard$ Instant | ValidActivatingPlayer$ You | TriggerZones$ Battlefield | PlayerTurn$ True | CheckSVar$ X | SVarCompare$ GE1 | Execute$ TrigChangeZone | OptionalDecider$ You | TriggerDescription$ Whenever you cast an instant spell during your main phase, you may return CARDNAME to its owner's hand. +SVar:TrigChangeZone:DB$ ChangeZone | Origin$ Battlefield | Destination$ Hand | Defined$ Self +SVar:X:Count$IfMainPhase.1.0 DeckHas:Ability$LifeGain Oracle:When Dovin's Acuity enters the battlefield, you gain 2 life and draw a card.\nWhenever you cast an instant spell during your main phase, you may return Dovin's Acuity to its owner's hand. diff --git a/forge-gui/res/cardsfolder/upcoming/dovins_automaton.txt b/forge-gui/res/cardsfolder/d/dovins_automaton.txt similarity index 71% rename from forge-gui/res/cardsfolder/upcoming/dovins_automaton.txt rename to forge-gui/res/cardsfolder/d/dovins_automaton.txt index 73cdd072ab3..49eb272e363 100644 --- a/forge-gui/res/cardsfolder/upcoming/dovins_automaton.txt +++ b/forge-gui/res/cardsfolder/d/dovins_automaton.txt @@ -2,7 +2,7 @@ Name:Dovin's Automaton ManaCost:4 Types:Artifact Creature Homunculus PT:3/3 -S:Mode$ Continuous | Affected$ Card.Self | AddPower$ 2 | AddToughness$ 2 | AddKeyword$ Vigilance | IsPresent$ Planeswalker.Dovin+YouCtrl | Description$ As long as you control a planeswalker planeswalker, CARDNAME gets +2/+2 and has vigilance. (Attacking doesn't cause it to tap.) +S:Mode$ Continuous | Affected$ Card.Self | AddPower$ 2 | AddToughness$ 2 | AddKeyword$ Vigilance | IsPresent$ Planeswalker.Dovin+YouCtrl | Description$ As long as you control a Dovin planeswalker, CARDNAME gets +2/+2 and has vigilance. (Attacking doesn't cause it to tap.) SVar:BuffedBy:Dovin DeckNeeds:Type$Dovin Oracle:As long as you control a Dovin planeswalker, Dovin's Automaton gets +2/+2 and has vigilance. (Attacking doesn't cause it to tap.) diff --git a/forge-gui/res/cardsfolder/d/dovins_dismissal.txt b/forge-gui/res/cardsfolder/d/dovins_dismissal.txt new file mode 100644 index 00000000000..603c0fa17af --- /dev/null +++ b/forge-gui/res/cardsfolder/d/dovins_dismissal.txt @@ -0,0 +1,7 @@ +Name:Dovin's Dismissal +ManaCost:2 W U +Types:Instant +A:SP$ ChangeZone | Cost$ 2 W U | ValidTgts$ Creature.tapped | TargetMin$ 0 | TargetMax$ 1 | TgtPrompt$ Select target tapped creature | Origin$ Battlefield | Destination$ Library | LibraryPosition$ 0 | SubAbility$ DBSearch | SpellDescription$ Put up to one target tapped creature on top of its owner's library. You may search your library and/or graveyard for a card named Dovin, Architect of Law, reveal it, and put it into your hand. If you search your library this way, shuffle it. +SVar:DBSearch:DB$ ChangeZone | Origin$ Library,Graveyard | Destination$ Hand | ChangeType$ Card.namedDovin; Architect of Law | ChangeNum$ 1 | Optional$ True +DeckNeeds:Name$Dovin, Architect of Law +Oracle:Put up to one target tapped creature on top of its owner’s library. You may search your library and/or graveyard for a card named Dovin, Architect of Law, reveal it, and put it into your hand. If you search your library this way, shuffle it. diff --git a/forge-gui/res/cardsfolder/upcoming/drill_bit.txt b/forge-gui/res/cardsfolder/d/drill_bit.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/drill_bit.txt rename to forge-gui/res/cardsfolder/d/drill_bit.txt diff --git a/forge-gui/res/cardsfolder/upcoming/electrodominance.txt b/forge-gui/res/cardsfolder/e/electrodominance.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/electrodominance.txt rename to forge-gui/res/cardsfolder/e/electrodominance.txt diff --git a/forge-gui/res/cardsfolder/e/elite_arrester.txt b/forge-gui/res/cardsfolder/e/elite_arrester.txt new file mode 100644 index 00000000000..67442dfa407 --- /dev/null +++ b/forge-gui/res/cardsfolder/e/elite_arrester.txt @@ -0,0 +1,7 @@ +Name:Elite Arrester +ManaCost:W +Types:Creature Human Soldier +PT:0/3 +A:AB$ Tap | Cost$ 1 U T | ValidTgts$ Creature | TgtPrompt$ Select target creature | SpellDescription$ Tap target creature. +SVar:NonCombatPriority:5 +Oracle:{1}{U}, {T}: Tap target creature. diff --git a/forge-gui/res/cardsfolder/upcoming/emergency_powers.txt b/forge-gui/res/cardsfolder/e/emergency_powers.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/emergency_powers.txt rename to forge-gui/res/cardsfolder/e/emergency_powers.txt diff --git a/forge-gui/res/cardsfolder/upcoming/end_raze_forerunners.txt b/forge-gui/res/cardsfolder/e/end_raze_forerunners.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/end_raze_forerunners.txt rename to forge-gui/res/cardsfolder/e/end_raze_forerunners.txt diff --git a/forge-gui/res/cardsfolder/upcoming/enraged_ceratok.txt b/forge-gui/res/cardsfolder/e/enraged_ceratok.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/enraged_ceratok.txt rename to forge-gui/res/cardsfolder/e/enraged_ceratok.txt diff --git a/forge-gui/res/cardsfolder/upcoming/essence_capture.txt b/forge-gui/res/cardsfolder/e/essence_capture.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/essence_capture.txt rename to forge-gui/res/cardsfolder/e/essence_capture.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ethereal_absolution.txt b/forge-gui/res/cardsfolder/e/ethereal_absolution.txt similarity index 94% rename from forge-gui/res/cardsfolder/upcoming/ethereal_absolution.txt rename to forge-gui/res/cardsfolder/e/ethereal_absolution.txt index 3c789a573ff..14171660a77 100644 --- a/forge-gui/res/cardsfolder/upcoming/ethereal_absolution.txt +++ b/forge-gui/res/cardsfolder/e/ethereal_absolution.txt @@ -5,7 +5,7 @@ S:Mode$ Continuous | Affected$ Creature.YouCtrl | AddPower$ 1 | AddToughness$ 1 S:Mode$ Continuous | Affected$ Creature.OppCtrl | AddPower$ -1 | AddToughness$ -1 | Description$ Creatures your opponents control get -1/-1. SVar:PlayMain1:TRUE SVar:RemRandomDeck:True -A:AB$ ChangeZone | Cost$ 4 W B | Origin$ Graveyard | Destination$ Exile | ValidTgts$ Card.OppOwn | SubAbility$ DBToken | SpellDescription$ Exile target card from an opponent's graveyard. If it was a creature card, you create a 1/1 white and black Spirit creature token with flying. +A:AB$ ChangeZone | Cost$ 2 W B | Origin$ Graveyard | Destination$ Exile | ValidTgts$ Card.OppOwn | SubAbility$ DBToken | SpellDescription$ Exile target card from an opponent's graveyard. If it was a creature card, you create a 1/1 white and black Spirit creature token with flying. SVar:DBToken:DB$ Token | ConditionDefined$ Targeted | ConditionPresent$ Creature | ConditionCompare$ EQ1 | TokenAmount$ 1 | TokenScript$ wb_1_1_spirit_flying | TokenOwner$ You | SubAbility$ DBCleanup | LegacyImage$ wb 1 1 spirit flying rna SVar:DBCleanup:DB$Cleanup | ClearRemembered$ True DeckHas:Ability$Token diff --git a/forge-gui/res/cardsfolder/upcoming/expose_to_daylight.txt b/forge-gui/res/cardsfolder/e/expose_to_daylight.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/expose_to_daylight.txt rename to forge-gui/res/cardsfolder/e/expose_to_daylight.txt diff --git a/forge-gui/res/cardsfolder/upcoming/eyes_everywhere.txt b/forge-gui/res/cardsfolder/e/eyes_everywhere.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/eyes_everywhere.txt rename to forge-gui/res/cardsfolder/e/eyes_everywhere.txt diff --git a/forge-gui/res/cardsfolder/upcoming/faerie_duelist.txt b/forge-gui/res/cardsfolder/f/faerie_duelist.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/faerie_duelist.txt rename to forge-gui/res/cardsfolder/f/faerie_duelist.txt diff --git a/forge-gui/res/cardsfolder/upcoming/feral_maaka.txt b/forge-gui/res/cardsfolder/f/feral_maaka.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/feral_maaka.txt rename to forge-gui/res/cardsfolder/f/feral_maaka.txt diff --git a/forge-gui/res/cardsfolder/upcoming/final_payment.txt b/forge-gui/res/cardsfolder/f/final_payment.txt similarity index 77% rename from forge-gui/res/cardsfolder/upcoming/final_payment.txt rename to forge-gui/res/cardsfolder/f/final_payment.txt index b99e79bf6ff..bc63d05d707 100644 --- a/forge-gui/res/cardsfolder/upcoming/final_payment.txt +++ b/forge-gui/res/cardsfolder/f/final_payment.txt @@ -1,6 +1,6 @@ Name:Final Payment ManaCost:W B Types:Instant -K:AlternateAdditionalCost:PayLife<5>:Sac<1/Creature,Enchantment> +K:AlternateAdditionalCost:PayLife<5>:Sac<1/Creature;Enchantment/creature or enchantment> A:SP$ Destroy | Cost$ W B | ValidTgts$ Creature | TgtPrompt$ Select target creature | SpellDescription$ Destroy target creature. Oracle:As an additional cost to cast this spell, pay 5 life or sacrifice a creature or enchantment.\nDestroy target creature. diff --git a/forge-gui/res/cardsfolder/upcoming/fireblade_artist.txt b/forge-gui/res/cardsfolder/f/fireblade_artist.txt similarity index 63% rename from forge-gui/res/cardsfolder/upcoming/fireblade_artist.txt rename to forge-gui/res/cardsfolder/f/fireblade_artist.txt index a75291fad70..c2adafe9cb5 100644 --- a/forge-gui/res/cardsfolder/upcoming/fireblade_artist.txt +++ b/forge-gui/res/cardsfolder/f/fireblade_artist.txt @@ -4,6 +4,8 @@ Types:Creature Human Shaman PT:2/2 K:Haste T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigSacrifice | TriggerDescription$ At the beginning of your upkeep, you may sacrifice a creature. When you do, CARDNAME deals 2 damage to target opponent or planeswalker. -SVar:TrigSacrifice:DB$ Sacrifice | Optional$ True | SacValid$ Creature | Amount$ 1 -SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Opponent,Planeswalker | TgtPrompt$ Select target opponent or planeswalker | NumDmg$ 2 +SVar:TrigSacrifice:DB$ Sacrifice | Optional$ True | SacValid$ Creature | Amount$ 1 | RememberSacrificed$ True | SubAbility$ TrigImmediate +SVar:TrigImmediate:DB$ ImmediateTrigger | Execute$ TrigDealDamage | ConditionDefined$ Remembered | ConditionPresent$ Creature | ConditionCompare$ GE1 | TriggerDescription$ When you do, CARDNAME deals 2 damage to target opponent or planeswalker. +SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Opponent,Planeswalker | TgtPrompt$ Select target opponent or planeswalker | NumDmg$ 2 | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True Oracle:Haste\nAt the beginning of your upkeep, you may sacrifice a creature. When you do, Fireblade Artist deals 2 damage to target opponent or planeswalker. diff --git a/forge-gui/res/cardsfolder/upcoming/flames_of_the_raze_boar.txt b/forge-gui/res/cardsfolder/f/flames_of_the_raze_boar.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/flames_of_the_raze_boar.txt rename to forge-gui/res/cardsfolder/f/flames_of_the_raze_boar.txt diff --git a/forge-gui/res/cardsfolder/upcoming/font_of_agonies.txt b/forge-gui/res/cardsfolder/f/font_of_agonies.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/font_of_agonies.txt rename to forge-gui/res/cardsfolder/f/font_of_agonies.txt diff --git a/forge-gui/res/cardsfolder/f/footlight_fiend.txt b/forge-gui/res/cardsfolder/f/footlight_fiend.txt new file mode 100644 index 00000000000..d5476eccf58 --- /dev/null +++ b/forge-gui/res/cardsfolder/f/footlight_fiend.txt @@ -0,0 +1,7 @@ +Name:Footlight Fiend +ManaCost:BR +Types:Creature Devil +PT:1/1 +T:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Graveyard | ValidCard$ Card.Self | Execute$ TrigDealDamage | TriggerController$ TriggeredCardController | TriggerDescription$ When CARDNAME dies, it deals 1 damage to any target. +SVar:TrigDealDamage:DB$DealDamage | ValidTgts$ Creature,Player,Planeswalker | TgtPrompt$ Select any target | NumDmg$ 1 +Oracle:When Footlight Fiend dies, it deals 1 damage to any target. diff --git a/forge-gui/res/cardsfolder/f/forbidding_spirit.txt b/forge-gui/res/cardsfolder/f/forbidding_spirit.txt new file mode 100644 index 00000000000..37885dd2d0e --- /dev/null +++ b/forge-gui/res/cardsfolder/f/forbidding_spirit.txt @@ -0,0 +1,8 @@ +Name:Forbidding Spirit +ManaCost:1 W W +Types:Creature Spirit Cleric +PT:3/3 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TempAttackTax | TriggerDescription$ When CARDNAME enters the battlefield, until your next turn, creatures can’t attack you or a planeswalker you control unless their controller pays {2} for each of those creatures. +SVar:TempAttackTax:DB$ Effect | Name$ Forbidding Spirit Effect | StaticAbilities$ TempoCantAttack | Duration$ UntilYourNextTurn | SpellDescription$ Until your next turn, creatures can’t attack you or a planeswalker you control unless their controller pays {2} for each of those creatures. +SVar:TempoCantAttack:Mode$ CantAttackUnless | EffectZone$ Command | ValidCard$ Creature | Target$ You,Planeswalker.YouCtrl | Cost$ 2 | Description$ Until your next turn, creatures can't attack you or a planeswalker you control unless their controller pays {2} for each of those creatures. +Oracle:When Forbidding Spirit enters the battlefield, until your next turn, creatures can’t attack you or a planeswalker you control unless their controller pays {2} for each of those creatures. diff --git a/forge-gui/res/cardsfolder/upcoming/frenzied_arynx.txt b/forge-gui/res/cardsfolder/f/frenzied_arynx.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/frenzied_arynx.txt rename to forge-gui/res/cardsfolder/f/frenzied_arynx.txt diff --git a/forge-gui/res/cardsfolder/upcoming/frilled_mystic.txt b/forge-gui/res/cardsfolder/f/frilled_mystic.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/frilled_mystic.txt rename to forge-gui/res/cardsfolder/f/frilled_mystic.txt diff --git a/forge-gui/res/cardsfolder/upcoming/galloping_lizrog.txt b/forge-gui/res/cardsfolder/g/galloping_lizrog.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/galloping_lizrog.txt rename to forge-gui/res/cardsfolder/g/galloping_lizrog.txt diff --git a/forge-gui/res/cardsfolder/upcoming/gate_colossus.txt b/forge-gui/res/cardsfolder/g/gate_colossus.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/gate_colossus.txt rename to forge-gui/res/cardsfolder/g/gate_colossus.txt diff --git a/forge-gui/res/cardsfolder/upcoming/gatebreaker_ram.txt b/forge-gui/res/cardsfolder/g/gatebreaker_ram.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/gatebreaker_ram.txt rename to forge-gui/res/cardsfolder/g/gatebreaker_ram.txt diff --git a/forge-gui/res/cardsfolder/upcoming/gates_ablaze.txt b/forge-gui/res/cardsfolder/g/gates_ablaze.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/gates_ablaze.txt rename to forge-gui/res/cardsfolder/g/gates_ablaze.txt diff --git a/forge-gui/res/cardsfolder/upcoming/gateway_sneak.txt b/forge-gui/res/cardsfolder/g/gateway_sneak.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/gateway_sneak.txt rename to forge-gui/res/cardsfolder/g/gateway_sneak.txt diff --git a/forge-gui/res/cardsfolder/g/get_the_point.txt b/forge-gui/res/cardsfolder/g/get_the_point.txt new file mode 100644 index 00000000000..1a09941bc97 --- /dev/null +++ b/forge-gui/res/cardsfolder/g/get_the_point.txt @@ -0,0 +1,6 @@ +Name:Get the Point +ManaCost:3 B R +Types:Instant +A:SP$ Destroy | Cost$ 3 B R | ValidTgts$ Creature | TgtPrompt$ Select target creature | SubAbility$ DBScry | SpellDescription$ Destroy target creature. Scry 1. +SVar:DBScry:DB$ Scry | ScryNum$ 1 +Oracle:Destroy target creature. Scry 1. diff --git a/forge-gui/res/cardsfolder/upcoming/ghor_clan_wrecker.txt b/forge-gui/res/cardsfolder/g/ghor_clan_wrecker.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ghor_clan_wrecker.txt rename to forge-gui/res/cardsfolder/g/ghor_clan_wrecker.txt diff --git a/forge-gui/res/cardsfolder/upcoming/glass_of_the_guildpact.txt b/forge-gui/res/cardsfolder/g/glass_of_the_guildpact.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/glass_of_the_guildpact.txt rename to forge-gui/res/cardsfolder/g/glass_of_the_guildpact.txt diff --git a/forge-gui/res/cardsfolder/upcoming/goblin_gathering.txt b/forge-gui/res/cardsfolder/g/goblin_gathering.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/goblin_gathering.txt rename to forge-gui/res/cardsfolder/g/goblin_gathering.txt diff --git a/forge-gui/res/cardsfolder/upcoming/grasping_thrull.txt b/forge-gui/res/cardsfolder/g/grasping_thrull.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/grasping_thrull.txt rename to forge-gui/res/cardsfolder/g/grasping_thrull.txt diff --git a/forge-gui/res/cardsfolder/upcoming/gravel_hide_goblin.txt b/forge-gui/res/cardsfolder/g/gravel_hide_goblin.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/gravel_hide_goblin.txt rename to forge-gui/res/cardsfolder/g/gravel_hide_goblin.txt diff --git a/forge-gui/res/cardsfolder/upcoming/grotesque_demise.txt b/forge-gui/res/cardsfolder/g/grotesque_demise.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/grotesque_demise.txt rename to forge-gui/res/cardsfolder/g/grotesque_demise.txt diff --git a/forge-gui/res/cardsfolder/upcoming/growth_chamber_guardian.txt b/forge-gui/res/cardsfolder/g/growth_chamber_guardian.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/growth_chamber_guardian.txt rename to forge-gui/res/cardsfolder/g/growth_chamber_guardian.txt diff --git a/forge-gui/res/cardsfolder/upcoming/growth_spiral.txt b/forge-gui/res/cardsfolder/g/growth_spiral.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/growth_spiral.txt rename to forge-gui/res/cardsfolder/g/growth_spiral.txt diff --git a/forge-gui/res/cardsfolder/upcoming/gruul_beastmaster.txt b/forge-gui/res/cardsfolder/g/gruul_beastmaster.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/gruul_beastmaster.txt rename to forge-gui/res/cardsfolder/g/gruul_beastmaster.txt diff --git a/forge-gui/res/cardsfolder/upcoming/gruul_locket.txt b/forge-gui/res/cardsfolder/g/gruul_locket.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/gruul_locket.txt rename to forge-gui/res/cardsfolder/g/gruul_locket.txt diff --git a/forge-gui/res/cardsfolder/upcoming/gruul_spellbreaker.txt b/forge-gui/res/cardsfolder/g/gruul_spellbreaker.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/gruul_spellbreaker.txt rename to forge-gui/res/cardsfolder/g/gruul_spellbreaker.txt diff --git a/forge-gui/res/cardsfolder/upcoming/guardian_project.txt b/forge-gui/res/cardsfolder/g/guardian_project.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/guardian_project.txt rename to forge-gui/res/cardsfolder/g/guardian_project.txt diff --git a/forge-gui/res/cardsfolder/g/gutterbones.txt b/forge-gui/res/cardsfolder/g/gutterbones.txt new file mode 100644 index 00000000000..25cbbb43111 --- /dev/null +++ b/forge-gui/res/cardsfolder/g/gutterbones.txt @@ -0,0 +1,8 @@ +Name:Gutterbones +ManaCost:B +Types:Creature Skeleton Warrior +PT:2/1 +K:CARDNAME enters the battlefield tapped. +A:AB$ ChangeZone | Cost$ 1 B | Origin$ Graveyard | Destination$ Hand | ActivationZone$ Graveyard | PlayerTurn$ True | CheckSVar$ X | References$ X | SpellDescription$ Return CARDNAME from your graveyard to your hand. Activate this ability only during your turn and only if an opponent lost life this turn. +SVar:X:Count$LifeOppsLostThisTurn +Oracle:Gutterbones enters the battlefield tapped.\n{1}{B}: Return Gutterbones from your graveyard to your hand. Activate this ability only during your turn and only if an opponent lost life this turn. diff --git a/forge-gui/res/cardsfolder/upcoming/gyre_engineer.txt b/forge-gui/res/cardsfolder/g/gyre_engineer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/gyre_engineer.txt rename to forge-gui/res/cardsfolder/g/gyre_engineer.txt diff --git a/forge-gui/res/cardsfolder/h/haazda_officer.txt b/forge-gui/res/cardsfolder/h/haazda_officer.txt new file mode 100644 index 00000000000..1599c582e1a --- /dev/null +++ b/forge-gui/res/cardsfolder/h/haazda_officer.txt @@ -0,0 +1,8 @@ +Name:Haazda Officer +ManaCost:2 W +Types:Creature Human Soldier +PT:3/2 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigPump | TriggerDescription$ When CARDNAME enters the battlefield, target creature you control gets +1/+1 until end of turn. +SVar:TrigPump:DB$Pump | ValidTgts$ Creature.YouCtrl | TgtPrompt$ Select target creature you control | NumAtt$ 1 | NumDef$ 1 +SVar:PlayMain1:TRUE +Oracle:When Haazda Officer enters the battlefield, target creature you control gets +1/+1 until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/hackrobat.txt b/forge-gui/res/cardsfolder/h/hackrobat.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hackrobat.txt rename to forge-gui/res/cardsfolder/h/hackrobat.txt diff --git a/forge-gui/res/cardsfolder/upcoming/hero_of_precinct_one.txt b/forge-gui/res/cardsfolder/h/hero_of_precinct_one.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hero_of_precinct_one.txt rename to forge-gui/res/cardsfolder/h/hero_of_precinct_one.txt diff --git a/forge-gui/res/cardsfolder/upcoming/high_alert.txt b/forge-gui/res/cardsfolder/h/high_alert.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/high_alert.txt rename to forge-gui/res/cardsfolder/h/high_alert.txt diff --git a/forge-gui/res/cardsfolder/upcoming/humongulus.txt b/forge-gui/res/cardsfolder/h/humongulus.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/humongulus.txt rename to forge-gui/res/cardsfolder/h/humongulus.txt diff --git a/forge-gui/res/cardsfolder/upcoming/hydroid_krasis.txt b/forge-gui/res/cardsfolder/h/hydroid_krasis.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/hydroid_krasis.txt rename to forge-gui/res/cardsfolder/h/hydroid_krasis.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ill_gotten_inheritance.txt b/forge-gui/res/cardsfolder/i/ill_gotten_inheritance.txt similarity index 50% rename from forge-gui/res/cardsfolder/upcoming/ill_gotten_inheritance.txt rename to forge-gui/res/cardsfolder/i/ill_gotten_inheritance.txt index 5c3658aca13..85cf8828a10 100644 --- a/forge-gui/res/cardsfolder/upcoming/ill_gotten_inheritance.txt +++ b/forge-gui/res/cardsfolder/i/ill_gotten_inheritance.txt @@ -1,9 +1,9 @@ Name:Ill-Gotten Inheritance ManaCost:3 B Types:Enchantment -T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDamageAll | TriggerDescription$ At the beginning of your upkeep, CARDNAME deals 1 damage to each opponent and you gain 1 life. -SVar:TrigDealDamage:DB$ DamageAll | ValidPlayers$ Player.Opponent | NumDmg$ 1 | SubAbility$ DBGainLife -SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ 1 -A:AB$ DealDamage | Cost$ 5 B Sac<1/CARDNAME> | ValidTgts$ Opponent | NumDmg$ 4 | SubAbility$ DBGainLife | SpellDescription$ CARDNAME deals 4 damage to target opponent and you gain 4 life. -SVar:DBGainLife:DB$GainLife | LifeAmount$ 4 +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ At the beginning of your upkeep, CARDNAME deals 1 damage to each opponent and you gain 1 life. +SVar:TrigDealDamage:DB$ DamageAll | ValidPlayers$ Player.Opponent | NumDmg$ 1 | SubAbility$ DBGainOneLife +SVar:DBGainOneLife:DB$ GainLife | Defined$ You | LifeAmount$ 1 +A:AB$ DealDamage | Cost$ 5 B Sac<1/CARDNAME> | ValidTgts$ Opponent | NumDmg$ 4 | SubAbility$ DBGainFourLife | SpellDescription$ CARDNAME deals 4 damage to target opponent and you gain 4 life. +SVar:DBGainFourLife:DB$GainLife | Defined$ You | LifeAmount$ 4 Oracle:At the beginning of your upkeep, Ill-Gotten Inheritance deals 1 damage to each opponent and you gain 1 life.\n{5}{B}, Sacrifice Ill-Gotten Inheritance: It deals 4 damage to target opponent and you gain 4 life. diff --git a/forge-gui/res/cardsfolder/upcoming/immolation_shaman.txt b/forge-gui/res/cardsfolder/i/immolation_shaman.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/immolation_shaman.txt rename to forge-gui/res/cardsfolder/i/immolation_shaman.txt diff --git a/forge-gui/res/cardsfolder/upcoming/impassioned_orator.txt b/forge-gui/res/cardsfolder/i/impassioned_orator.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/impassioned_orator.txt rename to forge-gui/res/cardsfolder/i/impassioned_orator.txt diff --git a/forge-gui/res/cardsfolder/upcoming/imperious_oligarch.txt b/forge-gui/res/cardsfolder/i/imperious_oligarch.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/imperious_oligarch.txt rename to forge-gui/res/cardsfolder/i/imperious_oligarch.txt diff --git a/forge-gui/res/cardsfolder/upcoming/incubation_druid.txt b/forge-gui/res/cardsfolder/i/incubation_druid.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/incubation_druid.txt rename to forge-gui/res/cardsfolder/i/incubation_druid.txt diff --git a/forge-gui/res/cardsfolder/upcoming/incubation_incongruity.txt b/forge-gui/res/cardsfolder/i/incubation_incongruity.txt similarity index 94% rename from forge-gui/res/cardsfolder/upcoming/incubation_incongruity.txt rename to forge-gui/res/cardsfolder/i/incubation_incongruity.txt index 3814a3dbfcc..d6c71908766 100644 --- a/forge-gui/res/cardsfolder/upcoming/incubation_incongruity.txt +++ b/forge-gui/res/cardsfolder/i/incubation_incongruity.txt @@ -11,6 +11,6 @@ ALTERNATE Name:Incongruity ManaCost:1 G U Types:Instant -A:AB$ ChangeZone | Cost$ 1 G U | ValidTgts$ Creature | TgtPrompt$ Select target creature | Origin$ Battlefield | Destination$ Exile | SubAbility$ DBToken | SpellDescription$ Exile target creature. That creature’s controller creates a 3/3 green Frog Lizard creature token. +A:SP$ ChangeZone | Cost$ 1 G U | ValidTgts$ Creature | TgtPrompt$ Select target creature | Origin$ Battlefield | Destination$ Exile | SubAbility$ DBToken | SpellDescription$ Exile target creature. That creature’s controller creates a 3/3 green Frog Lizard creature token. SVar:DBToken:DB$ Token | TokenAmount$ 1 | TokenOwner$ TargetedController | TokenScript$ g_3_3_frog_lizard Oracle:Exile target creature. That creature’s controller creates a 3/3 green Frog Lizard creature token. \ No newline at end of file diff --git a/forge-gui/res/cardsfolder/upcoming/judith_the_scourge_diva.txt b/forge-gui/res/cardsfolder/j/judith_the_scourge_diva.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/judith_the_scourge_diva.txt rename to forge-gui/res/cardsfolder/j/judith_the_scourge_diva.txt diff --git a/forge-gui/res/cardsfolder/upcoming/justiciars_portal.txt b/forge-gui/res/cardsfolder/j/justiciars_portal.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/justiciars_portal.txt rename to forge-gui/res/cardsfolder/j/justiciars_portal.txt diff --git a/forge-gui/res/cardsfolder/upcoming/kaya_orzhov_usurper.txt b/forge-gui/res/cardsfolder/k/kaya_orzhov_usurper.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/kaya_orzhov_usurper.txt rename to forge-gui/res/cardsfolder/k/kaya_orzhov_usurper.txt diff --git a/forge-gui/res/cardsfolder/upcoming/kayas_wrath.txt b/forge-gui/res/cardsfolder/k/kayas_wrath.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/kayas_wrath.txt rename to forge-gui/res/cardsfolder/k/kayas_wrath.txt diff --git a/forge-gui/res/cardsfolder/upcoming/knight_of_sorrows.txt b/forge-gui/res/cardsfolder/k/knight_of_sorrows.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/knight_of_sorrows.txt rename to forge-gui/res/cardsfolder/k/knight_of_sorrows.txt diff --git a/forge-gui/res/cardsfolder/upcoming/knight_of_the_last_breath.txt b/forge-gui/res/cardsfolder/k/knight_of_the_last_breath.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/knight_of_the_last_breath.txt rename to forge-gui/res/cardsfolder/k/knight_of_the_last_breath.txt diff --git a/forge-gui/res/cardsfolder/upcoming/lavinia_azorius_renegade.txt b/forge-gui/res/cardsfolder/l/lavinia_azorius_renegade.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/lavinia_azorius_renegade.txt rename to forge-gui/res/cardsfolder/l/lavinia_azorius_renegade.txt diff --git a/forge-gui/res/cardsfolder/l/lawmages_binding.txt b/forge-gui/res/cardsfolder/l/lawmages_binding.txt new file mode 100644 index 00000000000..3c5087d6bc5 --- /dev/null +++ b/forge-gui/res/cardsfolder/l/lawmages_binding.txt @@ -0,0 +1,8 @@ +Name:Lawmage's Binding +ManaCost:1 W U +Types:Enchantment Aura +K:Flash +K:Enchant creature +A:SP$ Attach | Cost$ 1 W U | ValidTgts$ Creature | AILogic$ Curse +S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddHiddenKeyword$ CARDNAME can't attack or block. & CARDNAME's activated abilities can't be activated. | Description$ Enchanted creature can't attack or block and its activated abilities can't be activated. +Oracle:Flash\nEnchant creature\nEnchanted creature can't attack or block, and its activated abilities can't be activated. diff --git a/forge-gui/res/cardsfolder/upcoming/light_up_the_stage.txt b/forge-gui/res/cardsfolder/l/light_up_the_stage.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/light_up_the_stage.txt rename to forge-gui/res/cardsfolder/l/light_up_the_stage.txt diff --git a/forge-gui/res/cardsfolder/l/lumbering_battlement.txt b/forge-gui/res/cardsfolder/l/lumbering_battlement.txt new file mode 100644 index 00000000000..9e3ec703e98 --- /dev/null +++ b/forge-gui/res/cardsfolder/l/lumbering_battlement.txt @@ -0,0 +1,23 @@ +Name:Lumbering Battlement +ManaCost:4 W +Types:Creature Beast +PT:4/5 +K:Vigilance +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ DBChooseExile | TriggerDescription$ When CARDNAME enters the battlefield, exile any number of other nontoken creatures you control until it leaves the battlefield. +SVar:DBChooseExile:DB$ ChooseCard | Defined$ You | MinAmount$ 0 | Amount$ MaxTgts | References$ MaxTgts | Choices$ Creature.nonToken+Other+YouCtrl | ChoiceTitle$ Choose any number of other nontoken creatures you control | ChoiceZone$ Battlefield | SubAbility$ TrigExile +SVar:TrigExile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | Defined$ ChosenCard | SubAbility$ DBEffect +SVar:DBEffect:DB$ Effect | Triggers$ ComeBack | RememberObjects$ RememberedCard | ImprintCards$ Self | SVars$ TrigReturn,ExileSelf | ConditionPresent$ Card.Self | Duration$ Permanent | ForgetOnMoved$ Exile | SubAbility$ DBCleanup +SVar:ComeBack:Mode$ ChangesZone | Origin$ Battlefield | Destination$ Any | ValidCard$ Card.IsImprinted | Execute$ TrigReturn | TriggerZones$ Command | TriggerController$ TriggeredCardController | Static$ True | TriggerDescription$ That creature is exiled until EFFECTSOURCE leaves the battlefield +SVar:TrigReturn:DB$ ChangeZoneAll | Origin$ Exile | Destination$ Battlefield | ChangeType$ Card.IsRemembered | SubAbility$ ExileSelf +SVar:ExileSelf:DB$ ChangeZone | Origin$ Command | Destination$ Exile | Defined$ Self +SVar:DBCleanup:DB$ Cleanup | ClearChosenCard$ True +S:Mode$ Continuous | Affected$ Card.Self | AddPower$ X | AddToughness$ X | References$ X | Description$ CARDNAME gets +2/+2 for each card exiled with it. +#Triggers to forget remembered on this +T:Mode$ ChangesZone | ValidCard$ Card.IsRemembered | Origin$ Exile | Destination$ Any | TriggerZones$ Battlefield | Static$ True | Execute$ TrigForget +SVar:TrigForget:DB$ Pump | ForgetObjects$ TriggeredCard +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Battlefield | Destination$ Any | Static$ True | Execute$ TrigForgetAll +SVar:TrigForgetAll:DB$ Cleanup | ClearRemembered$ True +SVar:X:Count$ValidExile Card.IsRemembered+ExiledWithSource/Times.2 +SVar:MaxTgts:Count$Valid Creature.nonToken+Other+YouCtrl +SVar:RemRandomDeck:True +Oracle:Vigilance\nWhen Lumbering Battlement enters the battlefield, exile any number of other nontoken creatures you control until it leaves the battlefield.\nLumbering Battlement gets +2/+2 for each card exiled with it. diff --git a/forge-gui/res/cardsfolder/upcoming/macabre_mockery.txt b/forge-gui/res/cardsfolder/m/macabre_mockery.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/macabre_mockery.txt rename to forge-gui/res/cardsfolder/m/macabre_mockery.txt diff --git a/forge-gui/res/cardsfolder/upcoming/mass_manipulation.txt b/forge-gui/res/cardsfolder/m/mass_manipulation.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/mass_manipulation.txt rename to forge-gui/res/cardsfolder/m/mass_manipulation.txt diff --git a/forge-gui/res/cardsfolder/upcoming/mesmerizing_benthid.txt b/forge-gui/res/cardsfolder/m/mesmerizing_benthid.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/mesmerizing_benthid.txt rename to forge-gui/res/cardsfolder/m/mesmerizing_benthid.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ministrant_of_obligation.txt b/forge-gui/res/cardsfolder/m/ministrant_of_obligation.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ministrant_of_obligation.txt rename to forge-gui/res/cardsfolder/m/ministrant_of_obligation.txt diff --git a/forge-gui/res/cardsfolder/upcoming/mirror_march.txt b/forge-gui/res/cardsfolder/m/mirror_march.txt similarity index 93% rename from forge-gui/res/cardsfolder/upcoming/mirror_march.txt rename to forge-gui/res/cardsfolder/m/mirror_march.txt index 2dec7304ab9..8d7c8d7c398 100644 --- a/forge-gui/res/cardsfolder/upcoming/mirror_march.txt +++ b/forge-gui/res/cardsfolder/m/mirror_march.txt @@ -2,7 +2,7 @@ Name:Mirror March ManaCost:5 R Types:Enchantment T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Creature.nonToken+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigFlipACoin | TriggerDescription$ Whenever a nontoken creature enters the battlefield under your control, flip a coin until you lose a flip. For each flip you won, create a token that's a copy of that creature. Those tokens gain haste. Exile them at the beginning of the next end step. -SVar:TrigFlipACoin:DB$FlipACoin | FlipUntilYouLose$ True | SaveNumFlipsToSVar$ MirrorAmount | NoCall$ True | LoseSubAbility$ DBCopies +SVar:TrigFlipACoin:DB$FlipACoin | FlipUntilYouLose$ True | SaveNumFlipsToSVar$ MirrorAmount | LoseSubAbility$ DBCopies SVar:DBCopies:DB$ CopyPermanent | PumpKeywords$ Haste | AtEOT$ Exile | Defined$ TriggeredCard | NumCopies$ MirrorAmount SVar:MirrorAmount:Number$0 DeckHas:Ability$Token diff --git a/forge-gui/res/cardsfolder/upcoming/nikya_of_the_old_ways.txt b/forge-gui/res/cardsfolder/n/nikya_of_the_old_ways.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/nikya_of_the_old_ways.txt rename to forge-gui/res/cardsfolder/n/nikya_of_the_old_ways.txt diff --git a/forge-gui/res/cardsfolder/upcoming/noxious_groodion.txt b/forge-gui/res/cardsfolder/n/noxious_groodion.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/noxious_groodion.txt rename to forge-gui/res/cardsfolder/n/noxious_groodion.txt diff --git a/forge-gui/res/cardsfolder/upcoming/open_the_gates.txt b/forge-gui/res/cardsfolder/o/open_the_gates.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/open_the_gates.txt rename to forge-gui/res/cardsfolder/o/open_the_gates.txt diff --git a/forge-gui/res/cardsfolder/upcoming/orzhov_enforcer.txt b/forge-gui/res/cardsfolder/o/orzhov_enforcer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/orzhov_enforcer.txt rename to forge-gui/res/cardsfolder/o/orzhov_enforcer.txt diff --git a/forge-gui/res/cardsfolder/upcoming/orzhov_locket.txt b/forge-gui/res/cardsfolder/o/orzhov_locket.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/orzhov_locket.txt rename to forge-gui/res/cardsfolder/o/orzhov_locket.txt diff --git a/forge-gui/res/cardsfolder/upcoming/orzhov_racketeers.txt b/forge-gui/res/cardsfolder/o/orzhov_racketeers.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/orzhov_racketeers.txt rename to forge-gui/res/cardsfolder/o/orzhov_racketeers.txt diff --git a/forge-gui/res/cardsfolder/upcoming/persistent_petitioners.txt b/forge-gui/res/cardsfolder/p/persistent_petitioners.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/persistent_petitioners.txt rename to forge-gui/res/cardsfolder/p/persistent_petitioners.txt diff --git a/forge-gui/res/cardsfolder/upcoming/pestilent_spirit.txt b/forge-gui/res/cardsfolder/p/pestilent_spirit.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/pestilent_spirit.txt rename to forge-gui/res/cardsfolder/p/pestilent_spirit.txt diff --git a/forge-gui/res/cardsfolder/upcoming/pitiless_pontiff.txt b/forge-gui/res/cardsfolder/p/pitiless_pontiff.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/pitiless_pontiff.txt rename to forge-gui/res/cardsfolder/p/pitiless_pontiff.txt diff --git a/forge-gui/res/cardsfolder/upcoming/plague_wight.txt b/forge-gui/res/cardsfolder/p/plague_wight.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/plague_wight.txt rename to forge-gui/res/cardsfolder/p/plague_wight.txt diff --git a/forge-gui/res/cardsfolder/upcoming/plaza_of_harmony.txt b/forge-gui/res/cardsfolder/p/plaza_of_harmony.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/plaza_of_harmony.txt rename to forge-gui/res/cardsfolder/p/plaza_of_harmony.txt diff --git a/forge-gui/res/cardsfolder/p/precognitive_perception.txt b/forge-gui/res/cardsfolder/p/precognitive_perception.txt new file mode 100644 index 00000000000..0b2a2ef5f7c --- /dev/null +++ b/forge-gui/res/cardsfolder/p/precognitive_perception.txt @@ -0,0 +1,6 @@ +Name:Precognitive Perception +ManaCost:3 U U +Types:Instant +A:SP$ Scry | Cost$ 3 U U | ScryNum$ 3 | ConditionPlayerTurn$ True | ConditionPhases$ Main1,Main2 | SubAbility$ DBDraw | SpellDescription$ Draw three cards.\nAddendum — If you cast this spell during your main phase, instead scry 3, then draw three cards. +SVar:DBDraw:DB$ Draw | Cost$ 3 U U | NumCards$ 3 +Oracle:Draw three cards.\nAddendum — If you cast this spell during your main phase, instead scry 3, then draw three cards. diff --git a/forge-gui/res/cardsfolder/upcoming/priest_of_forgotten_gods.txt b/forge-gui/res/cardsfolder/p/priest_of_forgotten_gods.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/priest_of_forgotten_gods.txt rename to forge-gui/res/cardsfolder/p/priest_of_forgotten_gods.txt diff --git a/forge-gui/res/cardsfolder/upcoming/prime_speaker_vannifar.txt b/forge-gui/res/cardsfolder/p/prime_speaker_vannifar.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/prime_speaker_vannifar.txt rename to forge-gui/res/cardsfolder/p/prime_speaker_vannifar.txt diff --git a/forge-gui/res/cardsfolder/upcoming/prowling_caracal.txt b/forge-gui/res/cardsfolder/p/prowling_caracal.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/prowling_caracal.txt rename to forge-gui/res/cardsfolder/p/prowling_caracal.txt diff --git a/forge-gui/res/cardsfolder/upcoming/prying_eyes.txt b/forge-gui/res/cardsfolder/p/prying_eyes.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/prying_eyes.txt rename to forge-gui/res/cardsfolder/p/prying_eyes.txt diff --git a/forge-gui/res/cardsfolder/upcoming/pteramander.txt b/forge-gui/res/cardsfolder/p/pteramander.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/pteramander.txt rename to forge-gui/res/cardsfolder/p/pteramander.txt diff --git a/forge-gui/res/cardsfolder/upcoming/quench.txt b/forge-gui/res/cardsfolder/q/quench.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/quench.txt rename to forge-gui/res/cardsfolder/q/quench.txt diff --git a/forge-gui/res/cardsfolder/upcoming/rafter_demon.txt b/forge-gui/res/cardsfolder/r/rafter_demon.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/rafter_demon.txt rename to forge-gui/res/cardsfolder/r/rafter_demon.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ragefire.txt b/forge-gui/res/cardsfolder/r/ragefire.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ragefire.txt rename to forge-gui/res/cardsfolder/r/ragefire.txt diff --git a/forge-gui/res/cardsfolder/r/raid_bombardment.txt b/forge-gui/res/cardsfolder/r/raid_bombardment.txt index 2534b51ec7c..58fd1ccbdf2 100644 --- a/forge-gui/res/cardsfolder/r/raid_bombardment.txt +++ b/forge-gui/res/cardsfolder/r/raid_bombardment.txt @@ -1,8 +1,7 @@ Name:Raid Bombardment ManaCost:2 R Types:Enchantment -T:Mode$ Attacks | ValidCard$ Creature.powerLE2+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever a creature you control with power 2 or less attacks, CARDNAME deals 1 damage to defending player. -SVar:TrigDamage:DB$DealDamage | Defined$ TriggeredDefendingPlayer | NumDmg$ 1 +T:Mode$ Attacks | ValidCard$ Creature.powerLE2+YouCtrl | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ Whenever a creature you control with power 2 or less attacks, CARDNAME deals 1 damage to the player or planeswalker that creature is attacking +SVar:TrigDamage:DB$DealDamage | Defined$ TriggeredDefender | NumDmg$ 1 SVar:PlayMain1:TRUE -SVar:Picture:http://www.wizards.com/global/images/magic/general/raid_bombardment.jpg -Oracle:Whenever a creature you control with power 2 or less attacks, Raid Bombardment deals 1 damage to defending player. +Oracle:Whenever a creature you control with power 2 or less attacks, Raid Bombardment deals 1 damage to the player or planeswalker that creature is attacking. diff --git a/forge-gui/res/cardsfolder/upcoming/rakdos_firewheeler.txt b/forge-gui/res/cardsfolder/r/rakdos_firewheeler.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/rakdos_firewheeler.txt rename to forge-gui/res/cardsfolder/r/rakdos_firewheeler.txt diff --git a/forge-gui/res/cardsfolder/upcoming/rakdos_locket.txt b/forge-gui/res/cardsfolder/r/rakdos_locket.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/rakdos_locket.txt rename to forge-gui/res/cardsfolder/r/rakdos_locket.txt diff --git a/forge-gui/res/cardsfolder/upcoming/rakdos_roustabout.txt b/forge-gui/res/cardsfolder/r/rakdos_roustabout.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/rakdos_roustabout.txt rename to forge-gui/res/cardsfolder/r/rakdos_roustabout.txt diff --git a/forge-gui/res/cardsfolder/upcoming/rakdos_the_showstopper.txt b/forge-gui/res/cardsfolder/r/rakdos_the_showstopper.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/rakdos_the_showstopper.txt rename to forge-gui/res/cardsfolder/r/rakdos_the_showstopper.txt diff --git a/forge-gui/res/cardsfolder/upcoming/rakdos_trumpeter.txt b/forge-gui/res/cardsfolder/r/rakdos_trumpeter.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/rakdos_trumpeter.txt rename to forge-gui/res/cardsfolder/r/rakdos_trumpeter.txt diff --git a/forge-gui/res/cardsfolder/upcoming/rally_to_battle.txt b/forge-gui/res/cardsfolder/r/rally_to_battle.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/rally_to_battle.txt rename to forge-gui/res/cardsfolder/r/rally_to_battle.txt diff --git a/forge-gui/res/cardsfolder/upcoming/rampage_of_the_clans.txt b/forge-gui/res/cardsfolder/r/rampage_of_the_clans.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/rampage_of_the_clans.txt rename to forge-gui/res/cardsfolder/r/rampage_of_the_clans.txt diff --git a/forge-gui/res/cardsfolder/upcoming/rampaging_rendhorn.txt b/forge-gui/res/cardsfolder/r/rampaging_rendhorn.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/rampaging_rendhorn.txt rename to forge-gui/res/cardsfolder/r/rampaging_rendhorn.txt diff --git a/forge-gui/res/cardsfolder/upcoming/ravager_wurm.txt b/forge-gui/res/cardsfolder/r/ravager_wurm.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/ravager_wurm.txt rename to forge-gui/res/cardsfolder/r/ravager_wurm.txt diff --git a/forge-gui/res/cardsfolder/upcoming/regenesis.txt b/forge-gui/res/cardsfolder/r/regenesis.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/regenesis.txt rename to forge-gui/res/cardsfolder/r/regenesis.txt diff --git a/forge-gui/res/cardsfolder/upcoming/repudiate_replicate.txt b/forge-gui/res/cardsfolder/r/repudiate_replicate.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/repudiate_replicate.txt rename to forge-gui/res/cardsfolder/r/repudiate_replicate.txt diff --git a/forge-gui/res/cardsfolder/upcoming/resolute_watchdog.txt b/forge-gui/res/cardsfolder/r/resolute_watchdog.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/resolute_watchdog.txt rename to forge-gui/res/cardsfolder/r/resolute_watchdog.txt diff --git a/forge-gui/res/cardsfolder/upcoming/revival_revenge.txt b/forge-gui/res/cardsfolder/r/revival_revenge.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/revival_revenge.txt rename to forge-gui/res/cardsfolder/r/revival_revenge.txt diff --git a/forge-gui/res/cardsfolder/upcoming/rhythm_of_the_wild.txt b/forge-gui/res/cardsfolder/r/rhythm_of_the_wild.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/rhythm_of_the_wild.txt rename to forge-gui/res/cardsfolder/r/rhythm_of_the_wild.txt diff --git a/forge-gui/res/cardsfolder/r/rix_maadi_reveler.txt b/forge-gui/res/cardsfolder/r/rix_maadi_reveler.txt new file mode 100644 index 00000000000..f7ceece6349 --- /dev/null +++ b/forge-gui/res/cardsfolder/r/rix_maadi_reveler.txt @@ -0,0 +1,11 @@ +Name:Rix Maadi Reveler +ManaCost:1 R +Types:Creature Human Shaman +PT:2/2 +K:Spectacle:2 B R +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDiscard | TriggerDescription$ When CARDNAME enters the battlefield, discard a card, then draw a card. If CARDNAME's spectacle cost was paid, instead discard your hand, then draw three cards. +SVar:TrigDiscard:DB$ Discard | NumCards$ 1 | Mode$ TgtChoose | SubAbility$ DBDrawOne | ConditionDefined$ TriggeredCard | ConditionPresent$ Card.spectacle | ConditionCompare$ EQ0 +SVar:DBDrawOne:DB$ Draw | Defined$ You | NumCards$ 1 | ConditionDefined$ TriggeredCard | ConditionPresent$ Card.spectacle | ConditionCompare$ EQ0 | SubAbility$ DBDiscard +SVar:DBDiscard:DB$ Discard | Mode$ Hand | Defined$ You | SubAbility$ DBDrawThree | ConditionDefined$ TriggeredCard | ConditionPresent$ Card.spectacle +SVar:DBDrawThree:DB$ Draw | Defined$ You | NumCards$ 3 | ConditionDefined$ TriggeredCard | ConditionPresent$ Card.spectacle +Oracle:Spectacle {2}{B}{R} (You may cast this spell for its spectacle cost rather than its mana cost if an opponent lost life this turn.)\nWhen Rix Maadi Reveler enters the battlefield, discard a card, then draw a card. If Rix Maadi Reveler's spectacle cost was paid, instead discard your hand, then draw three cards. diff --git a/forge-gui/res/cardsfolder/upcoming/rubble_reading.txt b/forge-gui/res/cardsfolder/r/rubble_reading.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/rubble_reading.txt rename to forge-gui/res/cardsfolder/r/rubble_reading.txt diff --git a/forge-gui/res/cardsfolder/r/rubble_slinger.txt b/forge-gui/res/cardsfolder/r/rubble_slinger.txt new file mode 100644 index 00000000000..bfa37840636 --- /dev/null +++ b/forge-gui/res/cardsfolder/r/rubble_slinger.txt @@ -0,0 +1,6 @@ +Name:Rubble Slinger +ManaCost:2 RG +Types:Creature Human Warrior +PT:2/3 +K:Reach +Oracle:Reach diff --git a/forge-gui/res/cardsfolder/upcoming/rubblebelt_recluse.txt b/forge-gui/res/cardsfolder/r/rubblebelt_recluse.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/rubblebelt_recluse.txt rename to forge-gui/res/cardsfolder/r/rubblebelt_recluse.txt diff --git a/forge-gui/res/cardsfolder/r/rubblebelt_runner.txt b/forge-gui/res/cardsfolder/r/rubblebelt_runner.txt new file mode 100644 index 00000000000..6c88e9b0745 --- /dev/null +++ b/forge-gui/res/cardsfolder/r/rubblebelt_runner.txt @@ -0,0 +1,6 @@ +Name:Rubblebelt Runner +ManaCost:1 R G +Types:Creature Viashino Warrior +PT:3/3 +K:CantBeBlockedBy Creature.token +Oracle:Rubblebelt Runner can’t be blocked by creature tokens. diff --git a/forge-gui/res/cardsfolder/upcoming/rumbling_ruin.txt b/forge-gui/res/cardsfolder/r/rumbling_ruin.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/rumbling_ruin.txt rename to forge-gui/res/cardsfolder/r/rumbling_ruin.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sages_row_savant.txt b/forge-gui/res/cardsfolder/s/sages_row_savant.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sages_row_savant.txt rename to forge-gui/res/cardsfolder/s/sages_row_savant.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sagittars_volley.txt b/forge-gui/res/cardsfolder/s/sagittars_volley.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sagittars_volley.txt rename to forge-gui/res/cardsfolder/s/sagittars_volley.txt diff --git a/forge-gui/res/cardsfolder/upcoming/saruli_caretaker.txt b/forge-gui/res/cardsfolder/s/saruli_caretaker.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/saruli_caretaker.txt rename to forge-gui/res/cardsfolder/s/saruli_caretaker.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sauroform_hybrid.txt b/forge-gui/res/cardsfolder/s/sauroform_hybrid.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sauroform_hybrid.txt rename to forge-gui/res/cardsfolder/s/sauroform_hybrid.txt diff --git a/forge-gui/res/cardsfolder/upcoming/savage_smash.txt b/forge-gui/res/cardsfolder/s/savage_smash.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/savage_smash.txt rename to forge-gui/res/cardsfolder/s/savage_smash.txt diff --git a/forge-gui/res/cardsfolder/upcoming/scorchmark.txt b/forge-gui/res/cardsfolder/s/scorchmark.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/scorchmark.txt rename to forge-gui/res/cardsfolder/s/scorchmark.txt diff --git a/forge-gui/res/cardsfolder/s/screaming_shield.txt b/forge-gui/res/cardsfolder/s/screaming_shield.txt new file mode 100644 index 00000000000..f0f80e0a52e --- /dev/null +++ b/forge-gui/res/cardsfolder/s/screaming_shield.txt @@ -0,0 +1,7 @@ +Name:Screaming Shield +ManaCost:1 +Types:Artifact Equipment +K:Equip:3 +S:Mode$ Continuous | Affected$ Creature.EquippedBy | AddToughness$ 3 | AddAbility$ Mill | Description$ Equipped creature gets +0/+3 and has "{2}, {T}: Target player puts the top three cards of their library into their graveyard." +SVar:Mill:AB$ Mill | Cost$ 2 T | NumCards$ 3 | ValidTgts$ Player | TgtPrompt$ Choose a player | SpellDescription$ Target player puts the top three cards of their library into their graveyard. +Oracle:Equipped creature gets +0/+3 and has "{2}, {T}: Target player puts the top three cards of their library into their graveyard."\nEquip {3} ({3}: Attach to target creature you control. Equip only as a sorcery.) diff --git a/forge-gui/res/cardsfolder/s/scuttlegator.txt b/forge-gui/res/cardsfolder/s/scuttlegator.txt new file mode 100644 index 00000000000..19a4f959cab --- /dev/null +++ b/forge-gui/res/cardsfolder/s/scuttlegator.txt @@ -0,0 +1,8 @@ +Name:Scuttlegator +ManaCost:4 GU GU +Types:Creature Crab Turtle Crocodile +PT:6/6 +K:Defender +K:Adapt:3:6 GU GU +S:Mode$ Continuous | Affected$ Card.Self+counters_GE1_P1P1 | AddHiddenKeyword$ CARDNAME can attack as though it didn't have defender. | Description$ As long as CARDNAME has a +1/+1 counter on it, it can attack as though it didn’t have defender. +Oracle:Defender\n{6}{G/U}{G/U}: Adapt 3. (If this creature has no +1/+1 counters on it, put two +1/+1 counters on it.)\nAs long as Scuttlegator has a +1/+1 counter on it, it can attack as though it didn’t have defender. diff --git a/forge-gui/res/cardsfolder/upcoming/senate_courier.txt b/forge-gui/res/cardsfolder/s/senate_courier.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/senate_courier.txt rename to forge-gui/res/cardsfolder/s/senate_courier.txt diff --git a/forge-gui/res/cardsfolder/s/senate_griffin.txt b/forge-gui/res/cardsfolder/s/senate_griffin.txt new file mode 100644 index 00000000000..3b01e0b0c7a --- /dev/null +++ b/forge-gui/res/cardsfolder/s/senate_griffin.txt @@ -0,0 +1,8 @@ +Name:Senate Griffin +ManaCost:2 UW UW +Types:Creature Griffin +PT:3/2 +K:Flying +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ DBScry | TriggerDescription$ When CARDNAME etners the battlefield, scry 1. +SVar:DBScry:DB$ Scry | ScryNum$ 1 +Oracle:Flying.\nWhen Senate Griffin enters the battlefield, scry 1. diff --git a/forge-gui/res/cardsfolder/upcoming/senate_guildmage.txt b/forge-gui/res/cardsfolder/s/senate_guildmage.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/senate_guildmage.txt rename to forge-gui/res/cardsfolder/s/senate_guildmage.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sentinels_mark.txt b/forge-gui/res/cardsfolder/s/sentinels_mark.txt similarity index 64% rename from forge-gui/res/cardsfolder/upcoming/sentinels_mark.txt rename to forge-gui/res/cardsfolder/s/sentinels_mark.txt index 0ab076fe3b1..db9d0ffe5e8 100644 --- a/forge-gui/res/cardsfolder/upcoming/sentinels_mark.txt +++ b/forge-gui/res/cardsfolder/s/sentinels_mark.txt @@ -5,6 +5,7 @@ K:Flash K:Enchant creature A:SP$ Attach | Cost$ 1 W | ValidTgts$ Creature | AILogic$ Pump S:Mode$ Continuous | Affected$ Creature.EnchantedBy | AddPower$ 1 | AddToughness$ 2 | AddKeyword$ Vigilance | Description$ Enchanted creature gets +1/+2 and has vigilance. -T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigPump | Condition$ Main1 | TriggerDescription$ When CARDNAME enters the battlefield, if you cast it during your main phase, enchanted creature gains lifelink until end of turn. -SVar:TrigPump:DB$ Pump | Defined$ Enchanted | KW$ +T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigPump | PlayerTurn$ True | CheckSVar$ X | SVarCompare$ GE1 | TriggerDescription$ When CARDNAME enters the battlefield, if you cast it during your main phase, enchanted creature gains lifelink until end of turn. +SVar:TrigPump:DB$ Pump | Defined$ Enchanted | KW$ Lifelink +SVar:X:Count$IfMainPhase.1.0 Oracle:Flash\nEnchant creature\nEnchanted creature gets +1/+2 and has vigilance.\nAddendum — When Sentinel's Mark enters the battlefield, if you cast it during your main phase, enchanted creature gains lifelink until end of turn. diff --git a/forge-gui/res/cardsfolder/upcoming/seraph_of_the_scales.txt b/forge-gui/res/cardsfolder/s/seraph_of_the_scales.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/seraph_of_the_scales.txt rename to forge-gui/res/cardsfolder/s/seraph_of_the_scales.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sharktocrab.txt b/forge-gui/res/cardsfolder/s/sharktocrab.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sharktocrab.txt rename to forge-gui/res/cardsfolder/s/sharktocrab.txt diff --git a/forge-gui/res/cardsfolder/s/shimmer_of_possibility.txt b/forge-gui/res/cardsfolder/s/shimmer_of_possibility.txt new file mode 100644 index 00000000000..ab6ac18b898 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/shimmer_of_possibility.txt @@ -0,0 +1,5 @@ +Name:Shimmer of Possibility +ManaCost:1 U +Types:Sorcery +A:SP$ Dig | Cost$ 1 U | DigNum$ 4 | ChangeNum$ 1 | RestRandomOrder$ True | SpellDescription$ Look at the top four cards of your library. Put one of them into your hand and the rest on the bottom of your library in a random order. +Oracle:Look at the top four cards of your library. Put one of them into your hand and the rest on the bottom of your library in a random order. diff --git a/forge-gui/res/cardsfolder/s/silhana_wayfinder.txt b/forge-gui/res/cardsfolder/s/silhana_wayfinder.txt new file mode 100644 index 00000000000..331db43d9ef --- /dev/null +++ b/forge-gui/res/cardsfolder/s/silhana_wayfinder.txt @@ -0,0 +1,7 @@ +Name:Silhana Wayfinder +ManaCost:1 G +Types:Creature Elf Scout +PT:2/1 +T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDig | TriggerDescription$ When CARDNAME enters the battlefield, look at the top four cards of your library. You may reveal a creature or land card from among them and put it on top of your library. Put the rest on the bottom of your library in a random order. +SVar:TrigDig:DB$ Dig | DigNum$ 4 | ChangeNum$ 1 | Optional$ True | ChangeValid$ Creature,Land | ForceRevealToController$ True | DestinationZone$ Library | LibraryPosition$ 0 | RestRandomOrder$ True | ForceRevealToController$ True +Oracle:When Silhana Wayfinder enters the battlefield, look at the top four cards of your library. You may reveal a creature or land card from among them and put it on top of your library. Put the rest on the bottom of your library in a random order. diff --git a/forge-gui/res/cardsfolder/upcoming/simic_ascendancy.txt b/forge-gui/res/cardsfolder/s/simic_ascendancy.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/simic_ascendancy.txt rename to forge-gui/res/cardsfolder/s/simic_ascendancy.txt diff --git a/forge-gui/res/cardsfolder/upcoming/simic_locket.txt b/forge-gui/res/cardsfolder/s/simic_locket.txt similarity index 84% rename from forge-gui/res/cardsfolder/upcoming/simic_locket.txt rename to forge-gui/res/cardsfolder/s/simic_locket.txt index 22025cfffd4..e7886996cae 100644 --- a/forge-gui/res/cardsfolder/upcoming/simic_locket.txt +++ b/forge-gui/res/cardsfolder/s/simic_locket.txt @@ -2,7 +2,7 @@ Name:Simic Locket ManaCost:3 Types:Artifact A:AB$ Mana | Cost$ T | Produced$ U | SpellDescription$ Add {U}. -A:AB$ Mana | Cost$ T | Produced$ U | SpellDescription$ Add {U}. +A:AB$ Mana | Cost$ T | Produced$ G | SpellDescription$ Add {G}. AI:RemoveDeck:Random DeckNeeds:Color$Green | Blue A:AB$ Draw | Cost$ GU GU GU GU T Sac<1/CARDNAME> | NumCards$ 2 | SpellDescription$ Draw two cards. diff --git a/forge-gui/res/cardsfolder/upcoming/skarrgan_hellkite.txt b/forge-gui/res/cardsfolder/s/skarrgan_hellkite.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/skarrgan_hellkite.txt rename to forge-gui/res/cardsfolder/s/skarrgan_hellkite.txt diff --git a/forge-gui/res/cardsfolder/upcoming/skatewing_spy.txt b/forge-gui/res/cardsfolder/s/skatewing_spy.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/skatewing_spy.txt rename to forge-gui/res/cardsfolder/s/skatewing_spy.txt diff --git a/forge-gui/res/cardsfolder/upcoming/skewer_the_critics.txt b/forge-gui/res/cardsfolder/s/skewer_the_critics.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/skewer_the_critics.txt rename to forge-gui/res/cardsfolder/s/skewer_the_critics.txt diff --git a/forge-gui/res/cardsfolder/upcoming/skitter_eel.txt b/forge-gui/res/cardsfolder/s/skitter_eel.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/skitter_eel.txt rename to forge-gui/res/cardsfolder/s/skitter_eel.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sky_tether.txt b/forge-gui/res/cardsfolder/s/sky_tether.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sky_tether.txt rename to forge-gui/res/cardsfolder/s/sky_tether.txt diff --git a/forge-gui/res/cardsfolder/upcoming/slimebind.txt b/forge-gui/res/cardsfolder/s/slimebind.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/slimebind.txt rename to forge-gui/res/cardsfolder/s/slimebind.txt diff --git a/forge-gui/res/cardsfolder/upcoming/smelt_ward_ignus.txt b/forge-gui/res/cardsfolder/s/smelt_ward_ignus.txt similarity index 50% rename from forge-gui/res/cardsfolder/upcoming/smelt_ward_ignus.txt rename to forge-gui/res/cardsfolder/s/smelt_ward_ignus.txt index b54b1e12310..6581226efc0 100644 --- a/forge-gui/res/cardsfolder/upcoming/smelt_ward_ignus.txt +++ b/forge-gui/res/cardsfolder/s/smelt_ward_ignus.txt @@ -2,5 +2,5 @@ Name:Smelt-Ward Ignus ManaCost:1 R Types:Creature Elemental PT:2/1 -A:AB$ GainControl | Cost$ 2 R Sac<1/CARDNAME> | ValidTgts$ Creature.powerLE3 | TgtPrompt$ Select target creature with power 3 or less | Untap$ True | AddKWs$ Haste | SorcerySpeed$ True | SpellDescription$ Gain control of target creature with power 3 or less until end of turn. Untap that creature. It gains haste until end of turn. Activate this ability only any time you could cast a sorcery. +A:AB$ GainControl | Cost$ 2 R Sac<1/CARDNAME> | ValidTgts$ Creature.powerLE3 | LoseControl$ EOT | TgtPrompt$ Select target creature with power 3 or less | Untap$ True | AddKWs$ Haste | SorcerySpeed$ True | SpellDescription$ Gain control of target creature with power 3 or less until end of turn. Untap that creature. It gains haste until end of turn. Activate this ability only any time you could cast a sorcery. Oracle:{2}{R}, Sacrifice Smelt-Ward Ignus: Gain control of target creature with power 3 or less until end of turn. Untap that creature. It gains haste until end of turn. Activate this ability only any time you could cast a sorcery. diff --git a/forge-gui/res/cardsfolder/upcoming/smothering_tithe.txt b/forge-gui/res/cardsfolder/s/smothering_tithe.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/smothering_tithe.txt rename to forge-gui/res/cardsfolder/s/smothering_tithe.txt diff --git a/forge-gui/res/cardsfolder/upcoming/spawn_of_mayhem.txt b/forge-gui/res/cardsfolder/s/spawn_of_mayhem.txt similarity index 91% rename from forge-gui/res/cardsfolder/upcoming/spawn_of_mayhem.txt rename to forge-gui/res/cardsfolder/s/spawn_of_mayhem.txt index 3d4b5725ea0..e1e05351ad4 100644 --- a/forge-gui/res/cardsfolder/upcoming/spawn_of_mayhem.txt +++ b/forge-gui/res/cardsfolder/s/spawn_of_mayhem.txt @@ -6,7 +6,7 @@ K:Spectacle:1 B B K:Flying K:Trample T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigDmg | TriggerDescription$ At the beginning of your upkeep, CARDNAME deals 1 damage to each player. Then if you have 10 or less life, put a +1/+1 counter on CARDNAME. -SVar:TrigDmgOpp:DB$DealDamage | Defined$ Player | NumDmg$ 1 | SubAbility$ DBCounter +SVar:TrigDmg:DB$DealDamage | Defined$ Player | NumDmg$ 1 | SubAbility$ DBCounter SVar:DBCounter:DB$PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ 1 | ConditionCheckSVar$ X | ConditionSVarCompare$ LE10 | References$ X SVar:X:Count$YourLifeTotal DeckHas:Ability$Counters diff --git a/forge-gui/res/cardsfolder/upcoming/spear_spewer.txt b/forge-gui/res/cardsfolder/s/spear_spewer.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/spear_spewer.txt rename to forge-gui/res/cardsfolder/s/spear_spewer.txt diff --git a/forge-gui/res/cardsfolder/s/sphinx_of_foresight.txt b/forge-gui/res/cardsfolder/s/sphinx_of_foresight.txt new file mode 100644 index 00000000000..9efea7643c3 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/sphinx_of_foresight.txt @@ -0,0 +1,14 @@ +Name:Sphinx of Foresight +ManaCost:2 U U +Types:Creature Sphinx +PT:4/4 +K:MayEffectFromOpeningHand:RevealCard +SVar:RevealCard:DB$ Reveal | RevealDefined$ Self | SubAbility$ ScryOnUpkeep | SpellDescription$ You may reveal this card from your opening hand. If you do, scry 3 at the beginning of your first upkeep. +SVar:ScryOnUpkeep:DB$ Effect | Triggers$ TrigOpenScry | SVars$ DBScry,RemoveMe | Duration$ Permanent | Name$ Sphinx of Foresight effect | SpellDescription$ You may reveal this card from your opening hand. If you do, scry 3 at the beginning of your first upkeep. +SVar:TrigOpenScry:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ DBScry | TriggerDescription$ If you do, scry 3 at the beginning of your first upkeep. +SVar:DBScry:DB$ Scry | ScryNum$ 3 | SubAbility$ RemoveMe +SVar:RemoveMe:DB$ ChangeZone | Defined$ Self | Origin$ Command | Destination$ Exile +K:Flying +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigScry | TriggerDescription$ At the beginning of your upkeep, scry 1. +SVar:TrigScry:DB$ Scry | ScryNum$ 1 +Oracle:You may reveal this card from your opening hand. If you do, scry 3 at the beginning of your first upkeep.\nFlying\nAt the beginning of your upkeep, scry 1. diff --git a/forge-gui/res/cardsfolder/upcoming/sphinx_of_new_prahv.txt b/forge-gui/res/cardsfolder/s/sphinx_of_new_prahv.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sphinx_of_new_prahv.txt rename to forge-gui/res/cardsfolder/s/sphinx_of_new_prahv.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sphinx_of_the_guildpact.txt b/forge-gui/res/cardsfolder/s/sphinx_of_the_guildpact.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sphinx_of_the_guildpact.txt rename to forge-gui/res/cardsfolder/s/sphinx_of_the_guildpact.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sphinxs_insight.txt b/forge-gui/res/cardsfolder/s/sphinxs_insight.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sphinxs_insight.txt rename to forge-gui/res/cardsfolder/s/sphinxs_insight.txt diff --git a/forge-gui/res/cardsfolder/upcoming/spikewheel_acrobat.txt b/forge-gui/res/cardsfolder/s/spikewheel_acrobat.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/spikewheel_acrobat.txt rename to forge-gui/res/cardsfolder/s/spikewheel_acrobat.txt diff --git a/forge-gui/res/cardsfolder/upcoming/spire_mangler.txt b/forge-gui/res/cardsfolder/s/spire_mangler.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/spire_mangler.txt rename to forge-gui/res/cardsfolder/s/spire_mangler.txt diff --git a/forge-gui/res/cardsfolder/upcoming/spirit_of_the_spires.txt b/forge-gui/res/cardsfolder/s/spirit_of_the_spires.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/spirit_of_the_spires.txt rename to forge-gui/res/cardsfolder/s/spirit_of_the_spires.txt diff --git a/forge-gui/res/cardsfolder/upcoming/steeple_creeper.txt b/forge-gui/res/cardsfolder/s/steeple_creeper.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/steeple_creeper.txt rename to forge-gui/res/cardsfolder/s/steeple_creeper.txt diff --git a/forge-gui/res/cardsfolder/upcoming/stony_strength.txt b/forge-gui/res/cardsfolder/s/stony_strength.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/stony_strength.txt rename to forge-gui/res/cardsfolder/s/stony_strength.txt diff --git a/forge-gui/res/cardsfolder/upcoming/storm_strike.txt b/forge-gui/res/cardsfolder/s/storm_strike.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/storm_strike.txt rename to forge-gui/res/cardsfolder/s/storm_strike.txt diff --git a/forge-gui/res/cardsfolder/s/summary_judgment.txt b/forge-gui/res/cardsfolder/s/summary_judgment.txt new file mode 100644 index 00000000000..605dc72faa4 --- /dev/null +++ b/forge-gui/res/cardsfolder/s/summary_judgment.txt @@ -0,0 +1,6 @@ +Name:Summary Judgment +ManaCost:1 W +Types:Instant +A:SP$ DealDamage | Cost$ 1 W | ValidTgts$ Creature.tapped | NumDmg$ X | References$ X | TgtPrompt$ Select target tapped creature | SpellDescription$ CARDNAME deals 3 damage to target tapped creature. If you cast this spell during your main phase, CARDNAME deals 5 damage to that creature instead. +SVar:X:Count$IfMainPhase.5.3 +Oracle:Summary Judgment deals 3 damage to target tapped creature.\nAddendum — If you cast this spell during your main phase, it deals 5 damage to that creature instead. diff --git a/forge-gui/res/cardsfolder/upcoming/sunder_shaman.txt b/forge-gui/res/cardsfolder/s/sunder_shaman.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sunder_shaman.txt rename to forge-gui/res/cardsfolder/s/sunder_shaman.txt diff --git a/forge-gui/res/cardsfolder/upcoming/swirling_torrent.txt b/forge-gui/res/cardsfolder/s/swirling_torrent.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/swirling_torrent.txt rename to forge-gui/res/cardsfolder/s/swirling_torrent.txt diff --git a/forge-gui/res/cardsfolder/upcoming/sylvan_brushstrider.txt b/forge-gui/res/cardsfolder/s/sylvan_brushstrider.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/sylvan_brushstrider.txt rename to forge-gui/res/cardsfolder/s/sylvan_brushstrider.txt diff --git a/forge-gui/res/cardsfolder/upcoming/syndicate_guildmage.txt b/forge-gui/res/cardsfolder/s/syndicate_guildmage.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/syndicate_guildmage.txt rename to forge-gui/res/cardsfolder/s/syndicate_guildmage.txt diff --git a/forge-gui/res/cardsfolder/upcoming/syndicate_messenger.txt b/forge-gui/res/cardsfolder/s/syndicate_messenger.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/syndicate_messenger.txt rename to forge-gui/res/cardsfolder/s/syndicate_messenger.txt diff --git a/forge-gui/res/cardsfolder/upcoming/tenth_district_veteran.txt b/forge-gui/res/cardsfolder/t/tenth_district_veteran.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/tenth_district_veteran.txt rename to forge-gui/res/cardsfolder/t/tenth_district_veteran.txt diff --git a/forge-gui/res/cardsfolder/upcoming/territorial_boar.txt b/forge-gui/res/cardsfolder/t/territorial_boar.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/territorial_boar.txt rename to forge-gui/res/cardsfolder/t/territorial_boar.txt diff --git a/forge-gui/res/cardsfolder/upcoming/teysa_karlov.txt b/forge-gui/res/cardsfolder/t/teysa_karlov.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/teysa_karlov.txt rename to forge-gui/res/cardsfolder/t/teysa_karlov.txt diff --git a/forge-gui/res/cardsfolder/upcoming/the_haunt_of_hightower.txt b/forge-gui/res/cardsfolder/t/the_haunt_of_hightower.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/the_haunt_of_hightower.txt rename to forge-gui/res/cardsfolder/t/the_haunt_of_hightower.txt diff --git a/forge-gui/res/cardsfolder/upcoming/theater_of_horrors.txt b/forge-gui/res/cardsfolder/t/theater_of_horrors.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/theater_of_horrors.txt rename to forge-gui/res/cardsfolder/t/theater_of_horrors.txt diff --git a/forge-gui/res/cardsfolder/upcoming/thirsting_shade.txt b/forge-gui/res/cardsfolder/t/thirsting_shade.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/thirsting_shade.txt rename to forge-gui/res/cardsfolder/t/thirsting_shade.txt diff --git a/forge-gui/res/cardsfolder/upcoming/thought_collapse.txt b/forge-gui/res/cardsfolder/t/thought_collapse.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/thought_collapse.txt rename to forge-gui/res/cardsfolder/t/thought_collapse.txt diff --git a/forge-gui/res/cardsfolder/upcoming/thrash_threat.txt b/forge-gui/res/cardsfolder/t/thrash_threat.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/thrash_threat.txt rename to forge-gui/res/cardsfolder/t/thrash_threat.txt diff --git a/forge-gui/res/cardsfolder/t/thrilling_encore.txt b/forge-gui/res/cardsfolder/t/thrilling_encore.txt index cb7d570c9ac..80560927db9 100644 --- a/forge-gui/res/cardsfolder/t/thrilling_encore.txt +++ b/forge-gui/res/cardsfolder/t/thrilling_encore.txt @@ -1,5 +1,5 @@ Name:Thrilling Encore ManaCost:4 B Types:Instant -A:SP$ ChangeZone | Cost$ 4 B | Origin$ Graveyard | Destination$ Battlefield | Defined$ ThisTurnEntered_Graveyard_from_Battlefield_Creature.nonToken | SpellDescription$ Put onto the battlefield under your control all creature cards in all graveyards that were put there from the battlefield this turn. +A:SP$ ChangeZone | Cost$ 4 B | Origin$ Graveyard | Destination$ Battlefield | Defined$ ThisTurnEntered_Graveyard_from_Battlefield_Creature.nonToken | GainControl$ True | SpellDescription$ Put onto the battlefield under your control all creature cards in all graveyards that were put there from the battlefield this turn. Oracle:Put onto the battlefield under your control all creature cards in all graveyards that were put there from the battlefield this turn. diff --git a/forge-gui/res/cardsfolder/upcoming/tin_street_dodger.txt b/forge-gui/res/cardsfolder/t/tin_street_dodger.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/tin_street_dodger.txt rename to forge-gui/res/cardsfolder/t/tin_street_dodger.txt diff --git a/forge-gui/res/cardsfolder/upcoming/titanic_brawl.txt b/forge-gui/res/cardsfolder/t/titanic_brawl.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/titanic_brawl.txt rename to forge-gui/res/cardsfolder/t/titanic_brawl.txt diff --git a/forge-gui/res/cardsfolder/upcoming/tithe_taker.txt b/forge-gui/res/cardsfolder/t/tithe_taker.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/tithe_taker.txt rename to forge-gui/res/cardsfolder/t/tithe_taker.txt diff --git a/forge-gui/res/cardsfolder/upcoming/tome_of_the_guildpact.txt b/forge-gui/res/cardsfolder/t/tome_of_the_guildpact.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/tome_of_the_guildpact.txt rename to forge-gui/res/cardsfolder/t/tome_of_the_guildpact.txt diff --git a/forge-gui/res/cardsfolder/upcoming/trollbred_guardian.txt b/forge-gui/res/cardsfolder/t/trollbred_guardian.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/trollbred_guardian.txt rename to forge-gui/res/cardsfolder/t/trollbred_guardian.txt diff --git a/forge-gui/res/cardsfolder/upcoming/twilight_panther.txt b/forge-gui/res/cardsfolder/t/twilight_panther.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/twilight_panther.txt rename to forge-gui/res/cardsfolder/t/twilight_panther.txt diff --git a/forge-gui/res/cardsfolder/upcoming/unbreakable_formation.txt b/forge-gui/res/cardsfolder/u/unbreakable_formation.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/unbreakable_formation.txt rename to forge-gui/res/cardsfolder/u/unbreakable_formation.txt diff --git a/forge-gui/res/cardsfolder/upcoming/undercity_scavenger.txt b/forge-gui/res/cardsfolder/u/undercity_scavenger.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/undercity_scavenger.txt rename to forge-gui/res/cardsfolder/u/undercity_scavenger.txt diff --git a/forge-gui/res/cardsfolder/upcoming/undercitys_embrace.txt b/forge-gui/res/cardsfolder/u/undercitys_embrace.txt similarity index 68% rename from forge-gui/res/cardsfolder/upcoming/undercitys_embrace.txt rename to forge-gui/res/cardsfolder/u/undercitys_embrace.txt index 528da6b040d..fd3a43144c6 100644 --- a/forge-gui/res/cardsfolder/upcoming/undercitys_embrace.txt +++ b/forge-gui/res/cardsfolder/u/undercitys_embrace.txt @@ -2,6 +2,6 @@ Name:Undercity's Embrace ManaCost:2 B Types:Instant A:SP$ Sacrifice | Cost$ 2 B | ValidTgts$ Opponent | SacValid$ Creature | SacMessage$ Creature | SubAbility$ DBGainLife | SpellDescription$ Target opponent sacrifices a creature. If you control a creature with power 4 or greater, you gain 4 life. | StackDescription$ SpellDescription -SVar:DBGainLife:DB$ GainLife | Defined$ You | ConditionPresent$ Creature.YouCtrl+powerGE4 | ConditionCompare$ GE1 | StackDescription$ If you control a creature with power 4 or greater, you gain 4 life. +SVar:DBGainLife:DB$ GainLife | LifeAmount$ 4 | Defined$ You | ConditionPresent$ Creature.YouCtrl+powerGE4 | ConditionCompare$ GE1 | StackDescription$ If you control a creature with power 4 or greater, you gain 4 life. DeckHas:Ability$LifeGain Oracle:Target opponent sacrifices a creature. If you control a creature with power 4 or greater, you gain 4 life. diff --git a/forge-gui/res/cardsfolder/upcoming/consecrate_consume.txt b/forge-gui/res/cardsfolder/upcoming/consecrate_consume.txt deleted file mode 100644 index 6f0ce2e9cdb..00000000000 --- a/forge-gui/res/cardsfolder/upcoming/consecrate_consume.txt +++ /dev/null @@ -1,18 +0,0 @@ -Name:Consecrate -ManaCost:1 WB -AlternateMode: Split -Types:Instant -A:SP$ ChangeZone | Cost$ 1 WB | Origin$ Graveyard | Destination$ Exile | TgtPrompt$ Choose target card in a graveyard | ValidTgts$ Card | SpellDescription$ Exile target card from a graveyard. | SubAbility$ DBDraw -SVar:DBDraw:DB$ Draw | NumCards$ 1 | SpellDescription$ Draw a card. -Oracle:Exile target card from a graveyard.\nDraw a card. - -ALTERNATE - -Name:Consume -ManaCost:2 W B -Types:Sorcery -A:SP$ ChooseCard | Cost$ 2 W B | ValidTgts$ Player | Choices$ Creature.greatestPowerControlledByRemembered | Mandatory$ True | SubAbility$ DBSac -SVar:DBSac:DB$ Sacrifice | Defined$ Targeted | SacValid$ Card.ChosenCard | RememberSacrificed$ True | SacMessage$ the creature with the highest power | SubAbility$ DBGainLife -SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ X | References$ X -SVar:X:TargetedLKI$CardPower -Oracle:Target player sacrifices a creature with the greatest power among creatures they control. You gain life equal to its power. diff --git a/forge-gui/res/cardsfolder/upcoming/deputy_of_detention.txt b/forge-gui/res/cardsfolder/upcoming/deputy_of_detention.txt deleted file mode 100644 index ef606eccea7..00000000000 --- a/forge-gui/res/cardsfolder/upcoming/deputy_of_detention.txt +++ /dev/null @@ -1,9 +0,0 @@ -Name:Deputy of Detention -ManaCost:1 W U -Types:Creature Vedalken Wizard -PT:1/3 -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 and all other nonland permanents that player controls with the same name as that permanent until CARDNAME leaves the battlefield. -SVar:TrigExile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | ValidTgts$ Permanent.nonLand+OppCtrl | TgtPrompt$ Select target nonland permanent an opponent controls | RememberTargets$ True | SubAbility$ DBExile -SVar:DBChangeZoneAll:DB$ ChangeZoneAll | Origin$ Battlefield | Destination$ Exile | ChangeType$ Card.IsRemembered | SubAbility$ DBCleanup -SVar:DBCleanup:DB$ Cleanup -Oracle:When Deputy of Detention enters the battlefield, exile target nonland permanent an opponent controls and all other nonland permanents that player controls with the same name as that permanent until Deputy of Detention leaves the battlefield. diff --git a/forge-gui/res/cardsfolder/upcoming/gutterbones.txt b/forge-gui/res/cardsfolder/upcoming/gutterbones.txt deleted file mode 100644 index 89207d77bf6..00000000000 --- a/forge-gui/res/cardsfolder/upcoming/gutterbones.txt +++ /dev/null @@ -1,9 +0,0 @@ -Name:Gutterbones -ManaCost:B -Types:Creature Skeleton Warrior -PT:2/1 -K:CARDNAME enters the battlefield tapped. -A:AB$ ChangeZone | Cost$ 1 B | Origin$ Graveyard | Destination$ Hand | ActivationZone$ Graveyard | OpponentTurn$ True | SubAbility$ DBEffect | SpellDescription$ Return CARDNAME from your graveyard to your hand. Activate this ability only during your turn and only if an opponent lost life this turn. -SVar:DBEffect:DB$ Effect | CheckSVar$ X | SVarCompare$ GE1 | References$ X | StaticAbilities$ MustAttack | SubAbility$ DBCleanup -SVar:RPrevent:Mode$ Continuous | EffectZone$ Command | Affected$ You | AddKeyword$ You only during your turn and only if an opponent lost life this turn. | Description$ Activate this ability only during your turn and only if an opponent -Oracle:Gutterbones enters the battlefield tapped.\n{1}{B}: Return Gutterbones from your graveyard to your hand. Activate this ability only during your turn and only if an opponent lost life this turn. diff --git a/forge-gui/res/cardsfolder/upcoming/lumbering_battlement.txt b/forge-gui/res/cardsfolder/upcoming/lumbering_battlement.txt deleted file mode 100644 index 0838ca63c67..00000000000 --- a/forge-gui/res/cardsfolder/upcoming/lumbering_battlement.txt +++ /dev/null @@ -1,13 +0,0 @@ -Name:Lumbering Battlement -ManaCost:4 W -Types:Creature Beast -PT:4/5 -K:Vigilance -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigExile | TriggerDescription$ When CARDNAME enters the battlefield, exile any number of other nontoken creatures you control until it leaves the battlefield. -SVar:TrigExile:DB$ ChangeZone | Origin$ Battlefield | Destination$ Exile | RememberChanged$ True | ChangeType$ Creature.nonToken+Other+YouCtrl | TargetMin$ 0 | TargetMax$ X | References$ X | Mandatory$ True | SubAbility$ DBEffect -SVar:DBEffect:DB$ Effect | Triggers$ ComeBack | RememberObjects$ Remembered | ImprintCards$ Remembered | SVars$ TrigReturn,ExileSelf | ConditionPresent$ Card.IsRemembered | ConditionCompare$ GE1 -SVar: -S:Mode$ Continuous | Affected$ Card.Self | AddPower$ X | AddToughness$ X | References$ X | Description$ CARDNAME gets +2/+2 for each card exiled with it. -SVar:X:Count$Valid Card.IsRemembered+namedCARDNAME/Times.2 -SVar:RemRandomDeck:True -Oracle:Vigilance\nWhen Lumbering Battlement enters the battlefield, exile any number of other nontoken creatures you control until it leaves the battlefield.\nLumbering Battlement gets +2/+2 for each card exiled with it. diff --git a/forge-gui/res/cardsfolder/upcoming/precognitive_perception.txt b/forge-gui/res/cardsfolder/upcoming/precognitive_perception.txt deleted file mode 100644 index 2bd4cc8757a..00000000000 --- a/forge-gui/res/cardsfolder/upcoming/precognitive_perception.txt +++ /dev/null @@ -1,6 +0,0 @@ -Name:Precognitive Perception -ManaCost:3 U U -Types:Instant -A:SP$ Scry | Cost$ 3 U U | NumCards$ 3 | ConditionPlayerTurn$ True | ConditionPhases$ Main1,Main2 | SubAbility$ DBDraw | SpellDescription$ Draw three cards.\nAddendum — If you cast this spell during your main phase, instead scry 3, then draw three cards. -SVar:DBDraw:DB$ Draw | Cost$ 3 U U | NumCards$ 3 -Oracle:Draw three cards.\nAddendum — If you cast this spell during your main phase, instead scry 3, then draw three cards. diff --git a/forge-gui/res/cardsfolder/upcoming/rix_maadi_reveler.txt b/forge-gui/res/cardsfolder/upcoming/rix_maadi_reveler.txt deleted file mode 100644 index 7af42a6556d..00000000000 --- a/forge-gui/res/cardsfolder/upcoming/rix_maadi_reveler.txt +++ /dev/null @@ -1,12 +0,0 @@ -Name:Rix Maadi Reveler -ManaCost:1 R -Types:Creature Human Shaman -PT:2/2 -K:Flying -K:Morph:2 B R -T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigDiscard | TriggerDescription$ When CARDNAME enters the battlefield, discard a card, then draw a card. If CARDNAME's Goblin cost was paid, instead discard your hand, then draw three cards. -SVar:TrigDiscard:DB$ Discard | NumCards$ 1 | Mode$ TgtChoose | SubAbility$ DBDraw -SVar:DBDraw:DB$ Draw | Defined$ You | NumCards$ 3 | SubAbility$ DBDiscard -SVar:DBDiscard:DB$ Discard | Mode$ Hand | Defined$ You | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ1 | References$ X | SubAbility$ DBDraw -SVar:DBDraw -Oracle:Spectacle {2}{B}{R} (You may cast this spell for its spectacle cost rather than its mana cost if an opponent lost life this turn.)\nWhen Rix Maadi Reveler enters the battlefield, discard a card, then draw a card. If Rix Maadi Reveler's spectacle cost was paid, instead discard your hand, then draw three cards. diff --git a/forge-gui/res/cardsfolder/upcoming/shimmer_of_possibility.txt b/forge-gui/res/cardsfolder/upcoming/shimmer_of_possibility.txt deleted file mode 100644 index f554272ecf9..00000000000 --- a/forge-gui/res/cardsfolder/upcoming/shimmer_of_possibility.txt +++ /dev/null @@ -1,5 +0,0 @@ -Name:Shimmer of Possibility -ManaCost:1 U -Types:Sorcery -A:SP$ Dig | Cost$ 1 U | DigNum$ 4 | ChangeNum$ 1 | SpellDescription$ Look at the top four cards of your library. Put one of them into your hand and the rest on the bottom of your library in a random order. -Oracle:Look at the top four cards of your library. Put one of them into your hand and the rest on the bottom of your library in a random order. diff --git a/forge-gui/res/cardsfolder/upcoming/silhana_wayfinder.txt b/forge-gui/res/cardsfolder/upcoming/silhana_wayfinder.txt deleted file mode 100644 index 8f001dc79ee..00000000000 --- a/forge-gui/res/cardsfolder/upcoming/silhana_wayfinder.txt +++ /dev/null @@ -1,6 +0,0 @@ -Name:Silhana Wayfinder -ManaCost:1 G -Types:Creature Elf Scout -PT:2/1 -SVar:DBDig:DB$ Dig | DigNum$ 4 | ChangeNum$ 1 | Optional$ True | ChangeValid$ Creature,Land | ForceRevealToController$ True | DestinationZone$ Library | LibraryPosition$ -1 | RestRandomOrder$ True | ForceRevealToController$ True -Oracle:When Silhana Wayfinder enters the battlefield, look at the top four cards of your library. You may reveal a creature or land card from among them and put it on top of your library. Put the rest on the bottom of your library in a random order. diff --git a/forge-gui/res/cardsfolder/upcoming/sphinx_of_foresight.txt b/forge-gui/res/cardsfolder/upcoming/sphinx_of_foresight.txt deleted file mode 100644 index 99d8de1cd69..00000000000 --- a/forge-gui/res/cardsfolder/upcoming/sphinx_of_foresight.txt +++ /dev/null @@ -1,11 +0,0 @@ -Name:Sphinx of Foresight -ManaCost:2 U U -Types:Creature Sphinx -PT:4/4 -K:MayEffectFromOpeningHand:RevealCard -SVar:RevealCard:DB$ Reveal | RevealDefined$ Self | SubAbility$ DBPump | SpellDescription$ You may reveal this card from your opening hand. If you do, scry 3 at the beginning of your first upkeep. -SVar:DBPump:DB$ Scry | ScryNum$ 3 -K:Flying -T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | TriggerZones$ Battlefield | Execute$ TrigScry | TriggerDescription$ At the beginning of your upkeep, scry 1. -SVar:TrigScry:DB$ Scry | ScryNum$ 1 -Oracle:You may reveal this card from your opening hand. If you do, scry 3 at the beginning of your first upkeep.\nFlying\nAt the beginning of your upkeep, scry 1. diff --git a/forge-gui/res/cardsfolder/upcoming/verity_circle.txt b/forge-gui/res/cardsfolder/v/verity_circle.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/verity_circle.txt rename to forge-gui/res/cardsfolder/v/verity_circle.txt diff --git a/forge-gui/res/cardsfolder/upcoming/vindictive_vampire.txt b/forge-gui/res/cardsfolder/v/vindictive_vampire.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/vindictive_vampire.txt rename to forge-gui/res/cardsfolder/v/vindictive_vampire.txt diff --git a/forge-gui/res/cardsfolder/v/vizkopa_vampire.txt b/forge-gui/res/cardsfolder/v/vizkopa_vampire.txt new file mode 100644 index 00000000000..c14766555ab --- /dev/null +++ b/forge-gui/res/cardsfolder/v/vizkopa_vampire.txt @@ -0,0 +1,6 @@ +Name:Vizkopa Vampire +ManaCost:2 WB +Types:Creature Vampire +PT:3/1 +K:Lifelink +Oracle:Lifelink diff --git a/forge-gui/res/cardsfolder/upcoming/wall_of_lost_thoughts.txt b/forge-gui/res/cardsfolder/w/wall_of_lost_thoughts.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/wall_of_lost_thoughts.txt rename to forge-gui/res/cardsfolder/w/wall_of_lost_thoughts.txt diff --git a/forge-gui/res/cardsfolder/upcoming/warrant_warden.txt b/forge-gui/res/cardsfolder/w/warrant_warden.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/warrant_warden.txt rename to forge-gui/res/cardsfolder/w/warrant_warden.txt diff --git a/forge-gui/res/cardsfolder/upcoming/watchful_giant.txt b/forge-gui/res/cardsfolder/w/watchful_giant.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/watchful_giant.txt rename to forge-gui/res/cardsfolder/w/watchful_giant.txt diff --git a/forge-gui/res/cardsfolder/upcoming/wilderness_reclamation.txt b/forge-gui/res/cardsfolder/w/wilderness_reclamation.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/wilderness_reclamation.txt rename to forge-gui/res/cardsfolder/w/wilderness_reclamation.txt diff --git a/forge-gui/res/cardsfolder/upcoming/windstorm_drake.txt b/forge-gui/res/cardsfolder/w/windstorm_drake.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/windstorm_drake.txt rename to forge-gui/res/cardsfolder/w/windstorm_drake.txt diff --git a/forge-gui/res/cardsfolder/upcoming/wrecking_beast.txt b/forge-gui/res/cardsfolder/w/wrecking_beast.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/wrecking_beast.txt rename to forge-gui/res/cardsfolder/w/wrecking_beast.txt diff --git a/forge-gui/res/cardsfolder/upcoming/zegana_utopian_speaker.txt b/forge-gui/res/cardsfolder/z/zegana_utopian_speaker.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/zegana_utopian_speaker.txt rename to forge-gui/res/cardsfolder/z/zegana_utopian_speaker.txt diff --git a/forge-gui/res/cardsfolder/upcoming/zhur_taa_goblin.txt b/forge-gui/res/cardsfolder/z/zhur_taa_goblin.txt similarity index 100% rename from forge-gui/res/cardsfolder/upcoming/zhur_taa_goblin.txt rename to forge-gui/res/cardsfolder/z/zhur_taa_goblin.txt diff --git a/forge-gui/res/draft/rankings.txt b/forge-gui/res/draft/rankings.txt index 38ffbc8508a..fc0e4a14f4c 100644 --- a/forge-gui/res/draft/rankings.txt +++ b/forge-gui/res/draft/rankings.txt @@ -1,4 +1,254 @@ //Rank|Name|Rarity|Set +#1|Ravager Wurm|M|RNA +#2|Skarrgan Hellkite|M|RNA +#3|Ethereal Absolution|R|RNA +#4|Spawn of Mayhem|M|RNA +#5|Biogenic Ooze|M|RNA +#6|Hydroid Krasis|M|RNA +#7|Angel of Grace|M|RNA +#8|Seraph of the Scales|M|RNA +#9|Zegana, Utopian Speaker|R|RNA +#10|Rakdos, the Showstopper|M|RNA +#11|Thrash Threat|R|RNA +#12|Dovin, Grand Arbiter|M|RNA +#13|Judith, the Scourge Diva|R|RNA +#14|Domri, Chaos Bringer|M|RNA +#15|Warrant Warden|R|RNA +#16|Electrodominance|R|RNA +#17|Kaya's Wrath|R|RNA +#18|Mesmerizing Benthid|M|RNA +#19|Mortify|U|RNA +#20|Bedevil|R|RNA +#21|Gruul Spellbreaker|R|RNA +#22|Theater of Horrors|R|RNA +#23|Incubation Druid|R|RNA +#24|Deputy of Detention|R|RNA +#25|Mass Manipulation|R|RNA +#26|Biomancer's Familiar|R|RNA +#27|Pestilent Spirit|R|RNA +#28|End-Raze Forerunners|R|RNA +#29|Priest of Forgotten Gods|R|RNA +#30|Guardian Project|R|RNA +#31|Hero of Precinct One|R|RNA +#32|Flames of the Raze-Boar|U|RNA +#33|Rakdos Firewheeler|U|RNA +#34|Sphinx of Foresight|R|RNA +#35|Precognitive Perception|R|RNA +#36|Teysa Karlov|R|RNA +#37|Lumbering Battlement|R|RNA +#38|Rix Maadi Reveler|R|RNA +#39|Bedeck Bedazzle|R|RNA +#40|Get the Point|C|RNA +#41|Frenzied Arynx|C|RNA +#42|Basilica Bell-Haunt|U|RNA +#43|Sphinx of New Prahv|U|RNA +#44|Savage Smash|C|RNA +#45|Sunder Shaman|U|RNA +#46|Grotesque Demise|C|RNA +#47|Simic Ascendancy|R|RNA +#48|Growth-Chamber Guardian|R|RNA +#49|Consecrate Consume|U|RNA +#50|Zhur-Taa Goblin|U|RNA +#51|Frilled Mystic|U|RNA +#52|Trollbred Guardian|U|RNA +#53|Senate Guildmage|U|RNA +#54|Sharktocrab|U|RNA +#55|Skewer the Critics|C|RNA +#56|Orzhov Enforcer|U|RNA +#57|Final Payment|C|RNA +#58|Lawmage's Binding|C|RNA +#59|Imperious Oligarch|C|RNA +#60|Rhythm of the Wild|U|RNA +#61|Nikya of the Old Ways|R|RNA +#62|Summary Judgment|C|RNA +#63|Dagger Caster|U|RNA +#64|Bolrac-Clan Crusher|U|RNA +#65|Pitiless Pontiff|U|RNA +#66|Titanic Brawl|C|RNA +#67|Essence Capture|U|RNA +#68|Revival Revenge|R|RNA +#69|Fireblade Artist|U|RNA +#70|Azorius Knight-Arbiter|C|RNA +#71|Aeromunculus|C|RNA +#72|Incubation Incongruity|U|RNA +#73|Blade Juggler|C|RNA +#74|Biogenic Upgrade|U|RNA +#75|Grasping Thrull|C|RNA +#76|Gyre Engineer|U|RNA +#77|Combine Guildmage|U|RNA +#78|Syndicate Guildmage|U|RNA +#79|Ministrant of Obligation|U|RNA +#80|Cult Guildmage|U|RNA +#81|Azorius Skyguard|U|RNA +#82|Clan Guildmage|U|RNA +#83|Dovin's Acuity|U|RNA +#84|Scorchmark|C|RNA +#85|Repudiate Replicate|R|RNA +#86|Clamor Shaman|U|RNA +#87|Tithe Taker|R|RNA +#88|Depose Deploy|U|RNA +#89|Cry of the Carnarium|U|RNA +#90|Gutterbones|R|RNA +#91|Verity Circle|R|RNA +#92|Hackrobat|U|RNA +#93|Sauroform Hybrid|C|RNA +#94|Skatewing Spy|U|RNA +#95|Galloping Lizrog|U|RNA +#96|Orzhov Racketeers|U|RNA +#97|Immolation Shaman|R|RNA +#98|Windstorm Drake|U|RNA +#99|Arrester's Admonition|C|RNA +#100|Collision Colossus|U|RNA +#101|Forbidding Spirit|U|RNA +#102|Eyes Everywhere|U|RNA +#103|Gatebreaker Ram|U|RNA +#104|Sky Tether|U|RNA +#105|Chillbringer|C|RNA +#106|Enraged Ceratok|U|RNA +#107|Applied Biomancy|C|RNA +#108|Prime Speaker Vannifar|M|RNA +#109|High Alert|U|RNA +#110|Smelt-Ward Ignus|U|RNA +#111|Rakdos Roustabout|C|RNA +#112|Unbreakable Formation|R|RNA +#113|Archway Angel|U|RNA +#114|Spirit of the Spires|U|RNA +#115|Gates Ablaze|U|RNA +#116|Captive Audience|M|RNA +#117|Sentinel's Mark|U|RNA +#118|Impassioned Orator|C|RNA +#119|Code of Constraint|U|RNA +#120|Swirling Torrent|U|RNA +#121|Clear the Stage|U|RNA +#122|Vindictive Vampire|U|RNA +#123|Light Up the Stage|U|RNA +#124|Absorb|R|RNA +#125|Breeding Pool|R|RNA +#126|Hallowed Fountain|R|RNA +#127|Blood Crypt|R|RNA +#128|Stomping Ground|R|RNA +#129|Godless Shrine|R|RNA +#130|Amplifire|R|RNA +#131|Carnival Carnage|U|RNA +#132|Quench|C|RNA +#133|Angelic Exaltation|U|RNA +#134|Gruul Beastmaster|U|RNA +#135|Sphinx of the Guildpact|U|RNA +#136|Gateway Sneak|U|RNA +#137|Skitter Eel|C|RNA +#138|Bloodmist Infiltrator|U|RNA +#139|Consign to the Pit|C|RNA +#140|Dead Revels|C|RNA +#141|Spire Mangler|U|RNA +#142|Rumbling Ruin|U|RNA +#143|Open the Gates|C|RNA +#144|Rubblebelt Runner|C|RNA +#145|Senate Griffin|C|RNA +#146|Growth Spiral|C|RNA +#147|Gate Colossus|U|RNA +#148|Sphinx's Insight|C|RNA +#149|Burning-Tree Vandal|C|RNA +#150|Humongulus|C|RNA +#151|Drill Bit|U|RNA +#152|Silhana Wayfinder|U|RNA +#153|Benthic Biomancer|R|RNA +#154|Knight of the Last Breath|U|RNA +#155|Arrester's Zeal|C|RNA +#156|Concordia Pegasus|C|RNA +#157|Syndicate Messenger|C|RNA +#158|Faerie Duelist|C|RNA +#159|Slimebind|C|RNA +#160|Ill-Gotten Inheritance|C|RNA +#161|Plague Wight|C|RNA +#162|Undercity Scavenger|C|RNA +#163|Undercity's Embrace|C|RNA +#164|Ghor-Clan Wrecker|C|RNA +#165|Axebane Beast|C|RNA +#166|Mammoth Spider|C|RNA +#167|Rampaging Rendhorn|C|RNA +#168|Footlight Fiend|C|RNA +#169|Rafter Demon|C|RNA +#170|Pteramander|U|RNA +#171|Glass of the Guildpact|R|RNA +#172|Macabre Mockery|U|RNA +#173|Resolute Watchdog|U|RNA +#174|Gateway Plaza|C|RNA +#175|Haazda Officer|C|RNA +#176|Senate Courier|C|RNA +#177|Thought Collapse|C|RNA +#178|Bladebrand|C|RNA +#179|Carrion Imp|C|RNA +#180|Noxious Groodion|C|RNA +#181|Rubblebelt Recluse|C|RNA +#182|Spikewheel Acrobat|C|RNA +#183|Storm Strike|C|RNA +#184|Steeple Creeper|C|RNA +#185|Stony Strength|C|RNA +#186|Territorial Boar|C|RNA +#187|Wrecking Beast|C|RNA +#188|Rubble Slinger|C|RNA +#189|Regenesis|U|RNA +#190|Bring to Trial|C|RNA +#191|Civic Stalwart|C|RNA +#192|Twilight Panther|C|RNA +#193|Sage's Row Savant|C|RNA +#194|Catacomb Crocodile|C|RNA +#195|Debtors' Transport|C|RNA +#196|Rakdos Trumpeter|C|RNA +#197|Goblin Gathering|C|RNA +#198|Gravel-Hide Goblin|C|RNA +#199|Tin Street Dodger|U|RNA +#200|Gift of Strength|C|RNA +#201|Sylvan Brushstrider|C|RNA +#202|Vizkopa Vampire|C|RNA +#203|Lavinia, Azorius Renegade|R|RNA +#204|Simic Locket|C|RNA +#205|Azorius Locket|C|RNA +#206|Rakdos Locket|C|RNA +#207|Gruul Locket|C|RNA +#208|Orzhov Locket|C|RNA +#209|Wilderness Reclamation|U|RNA +#210|Burn Bright|C|RNA +#211|Plaza of Harmony|R|RNA +#212|Rally to Battle|U|RNA +#213|Justiciar's Portal|C|RNA +#214|Knight of Sorrows|C|RNA +#215|Tenth District Veteran|C|RNA +#216|Coral Commando|C|RNA +#217|Shimmer of Possibility|C|RNA +#218|Act of Treason|C|RNA +#219|Spear Spewer|C|RNA +#220|Scuttlegator|C|RNA +#221|Smothering Tithe|R|RNA +#222|Mirror March|R|RNA +#223|Prowling Caracal|C|RNA +#224|Watchful Giant|C|RNA +#225|Prying Eyes|C|RNA +#226|Feral Maaka|C|RNA +#227|Sagittars' Volley|C|RNA +#228|Saruli Caretaker|C|RNA +#229|Bankrupt in Blood|U|RNA +#230|Awaken the Erstwhile|R|RNA +#231|Cindervines|R|RNA +#232|Tome of the Guildpact|R|RNA +#233|Persistent Petitioners|C|RNA +#234|Expose to Daylight|C|RNA +#235|Wall of Lost Thoughts|U|RNA +#236|Thirsting Shade|C|RNA +#237|Deface|C|RNA +#238|Tower Defense|U|RNA +#239|Junktroller|U|RNA +#240|Screaming Shield|U|RNA +#241|Emergency Powers|M|RNA +#242|Root Snare|C|RNA +#243|Scrabbling Claws|U|RNA +#244|Cavalcade of Calamity|U|RNA +#245|Rubble Reading|C|RNA +#246|Kaya, Orzhov Usurper|M|RNA +#247|Clear the Mind|C|RNA +#248|Rampage of the Clans|R|RNA +#249|Font of Agonies|R|RNA +//Rank|Name|Rarity|Set #1|Karn Liberated|M|UMA #2|Sigarda, Host of Herons|M|UMA #3|Bitterblossom|M|UMA diff --git a/forge-gui/res/lists/altwin-achievements.txt b/forge-gui/res/lists/altwin-achievements.txt index 901042fb4f6..0ae91d729ca 100644 --- a/forge-gui/res/lists/altwin-achievements.txt +++ b/forge-gui/res/lists/altwin-achievements.txt @@ -24,6 +24,7 @@ Mortal Combat|The Boneyard|So peaceful... Near-Death Experience|The Edge|Phew... I thought I was going to die! Phage the Untouchable|The Untouchable|None are immune to her deadly touch! Revel in Riches|The Dead Man's Chest|Yo-ho-ho, and a bottle of rum! +Simic Ascendancy|The Ascension|As you can see, we are going through a period of unprecedented growth. Test of Endurance|The Test|So... did I pass? Triskaidekaphobia|The Fear of 13|It's just a silly ancient superstition... right? Vraska, Golgari Queen|The Flurry of Assassins|How good is your dodging? diff --git a/forge-gui/res/lists/planeswalker-achievements.txt b/forge-gui/res/lists/planeswalker-achievements.txt index dfe01f8c832..d991ae4bcbd 100644 --- a/forge-gui/res/lists/planeswalker-achievements.txt +++ b/forge-gui/res/lists/planeswalker-achievements.txt @@ -25,7 +25,11 @@ Dack Fayden|Dack's Discount|Do you have any evidence it was me? Daretti, Ingenious Iconoclast|Daretti's Mass Production|Imitation is the sincerest form of irritation. Daretti, Scrap Savant|Daretti's Recycler|Save the environment! Domri Rade|Domri's Surprise|That's GOTTA get me a date! +Domri, Chaos Bringer|Domri's Wild Army|Let's have a team-destroying exercise! +Domri, City Smasher|Domri's Overrun|You may feel a slight sensation of burning rage. Dovin Baan|Dovin's Static|Have you tried to turn it off and on again? +Dovin, Architect of Law|Dovin's Freeze|With one gear out of place, the whole machine grinds to halt. +Dovin, Grand Arbiter|Dovin's Modern Recall|The best solutions for the worst problems. Elspeth Tirel|Elspeth's Solitude|Tokens are my only friends... Elspeth, Knight-Errant|Elspeth's Endurance|Bant will prevail! Elspeth, Sun's Champion|Elspeth's Crusade|With Heliod on my side, I'm invincible! @@ -57,6 +61,7 @@ Jace, Unraveler of Secrets|Jace's Perfect Plan|So, I've read about this neat guy Jaya Ballard|Jaya's Flashback|Fire is easily rekindled. Karn Liberated|Karn's Reset|Let's do this again! Kaya, Ghost Assassin|Kaya's Syphon|You don't MIND, do you? +Kaya, Orzhov Usurper|Kaya's Revenge of Emptiness|Nothing I do can hurt you. Literally. Kiora, Master of the Depths|Kiora's Fight Club|First rule is not to talk about the sucker punches Kiora, the Crashing Wave|Kiora's Kraken|Say hello to Cthulhu for me! Koth of the Hammer|Koth's Eruption|You won't like the mountains when they are angry! diff --git a/forge-gui/res/puzzle/PS_RNA0a.pzl b/forge-gui/res/puzzle/PS_RNA0a.pzl new file mode 100644 index 00000000000..f26949aa65c --- /dev/null +++ b/forge-gui/res/puzzle/PS_RNA0a.pzl @@ -0,0 +1,17 @@ +[metadata] +Name:Possibility Storm - Ravnica Allegiance #00a (Prerelease Puzzle) +URL:http://www.possibilitystorm.com/wp-content/uploads/2019/01/097.-RNA002.jpg +Goal:Win +Turns:1 +Difficulty:Rare +Description:Win this turn. You have three other Growth-Chamber Guardians in your deck (in addition to the one in your hand). +[state] +humanlife=20 +ailife=7 +turn=1 +activeplayer=human +activephase=MAIN1 +humanhand=Grotesque Demise;Ancient Animus;Bedevil;Growth-Chamber Guardian +humanlibrary=Growth-Chamber Guardian;Growth-Chamber Guardian;Growth-Chamber Guardian +humanbattlefield=Rhythm of the Wild;Rhythm of the Wild;Piston-Fist Cyclops|NoETBTrigs;Mausoleum Harpy|NoETBTrigs;Dragon Egg|NoETBTrigs;Blood Crypt|NoETBTrigs;Blood Crypt|NoETBTrigs;Blood Crypt|NoETBTrigs;Overgrown Tomb|NoETBTrigs;Overgrown Tomb|NoETBTrigs;Overgrown Tomb|NoETBTrigs +aibattlefield=Goring Ceratops;Goblin Chainwhirler;Goblin Chainwhirler diff --git a/forge-gui/res/quest/precons/Domri, City Smasher.dck b/forge-gui/res/quest/precons/Domri, City Smasher.dck new file mode 100644 index 00000000000..50b92147758 --- /dev/null +++ b/forge-gui/res/quest/precons/Domri, City Smasher.dck @@ -0,0 +1,33 @@ +[shop] +WinsToUnlock=0 +Credits=1200 +MinDifficulty=0 +MaxDifficulty=5 +[metadata] +Name=Domri, City Smasher +Description=Domri, City Smasher - GR Ravnica Allegiance Planeswalker Deck +Deck Type=constructed +Set=RNA +Image=domri_city_smasher.jpg +[Main] +1 Axebane Beast|RNA +1 Bolrac-Clan Crusher|RNA +2 Burn Bright|RNA +3 Charging War Boar|RNA +2 Clamor Shaman|RNA +2 Domri's Nodorog|RNA +1 Domri, City Smasher+|RNA +1 End-Raze Forerunners|RNA +2 Feral Maaka|RNA +11 Forest|RNA +3 Frenzied Arynx|RNA +1 Glass of the Guildpact|RNA +2 Gravel-Hide Goblin|RNA +4 Gruul Guildgate|RNA +11 Mountain|RNA +4 Ragefire|RNA +1 Rampaging Rendhorn|RNA +2 Stony Strength|RNA +2 Sylvan Brushstrider|RNA +1 Wrecking Beast|RNA +3 Zhur-Taa Goblin|RNA diff --git a/forge-gui/res/quest/precons/Dovin, Architect of Law.dck b/forge-gui/res/quest/precons/Dovin, Architect of Law.dck new file mode 100644 index 00000000000..b2becb27ab1 --- /dev/null +++ b/forge-gui/res/quest/precons/Dovin, Architect of Law.dck @@ -0,0 +1,33 @@ +[shop] +WinsToUnlock=0 +Credits=1200 +MinDifficulty=0 +MaxDifficulty=5 +[metadata] +Name=Dovin, Architect of Law +Description=Dovin, Architect of Law - WU Ravnica Allegiance Planeswalker Deck +Deck Type=constructed +Set=RNA +Image=dovin_architect_of_law.jpg +[Main] +3 Arrester's Zeal|RNA +4 Azorius Guildgate|RNA +1 Azorius Knight-Arbiter|RNA +1 Chillbringer|RNA +2 Code of Constraint|RNA +3 Concordia Pegasus|RNA +3 Dovin's Automaton|RNA +2 Dovin's Dismissal|RNA +1 Dovin, Architect of Law+|RNA +4 Elite Arrester|RNA +10 Island|RNA +12 Plains|RNA +2 Prowling Caracal|RNA +2 Senate Courier|RNA +1 Sphinx's Insight|RNA +2 Spirit of the Spires|RNA +2 Summary Judgment|RNA +1 Tenth District Veteran|RNA +1 Unbreakable Formation|RNA +1 Verity Circle|RNA +2 Windstorm Drake|RNA diff --git a/forge-gui/src/main/java/forge/interfaces/IGuiGame.java b/forge-gui/src/main/java/forge/interfaces/IGuiGame.java index ec2c6994a0f..3c9b08f4679 100644 --- a/forge-gui/src/main/java/forge/interfaces/IGuiGame.java +++ b/forge-gui/src/main/java/forge/interfaces/IGuiGame.java @@ -159,6 +159,7 @@ public interface IGuiGame { void setUsedToPay(CardView card, boolean value); void setSelectables(final Iterable cards); void clearSelectables(); + boolean isSelecting(); void awaitNextInput(); void cancelAwaitNextInput(); diff --git a/forge-gui/src/main/java/forge/match/AbstractGuiGame.java b/forge-gui/src/main/java/forge/match/AbstractGuiGame.java index e71e4ff0293..ed4a467e112 100644 --- a/forge-gui/src/main/java/forge/match/AbstractGuiGame.java +++ b/forge-gui/src/main/java/forge/match/AbstractGuiGame.java @@ -230,6 +230,9 @@ public abstract class AbstractGuiGame implements IGuiGame, IMayViewCards { public boolean isSelectable(final CardView card) { return selectableCards.contains(card); } + public boolean isSelecting() { + return !selectableCards.isEmpty(); + } /** Concede game, bring up WinLose UI. */ public boolean concede() { diff --git a/forge-gui/src/main/java/forge/player/HumanPlay.java b/forge-gui/src/main/java/forge/player/HumanPlay.java index 3f634a2e499..989501299f7 100644 --- a/forge-gui/src/main/java/forge/player/HumanPlay.java +++ b/forge-gui/src/main/java/forge/player/HumanPlay.java @@ -605,7 +605,7 @@ public class HumanPlay { } } } - else if (from == ZoneType.Hand) { // Tainted Specter + else { // Tainted Specter, Gurzigost, etc. boolean hasPaid = payCostPart(controller, sourceAbility, (CostPartWithList)part, amount, list, "put into library." + orString); if (!hasPaid) { return false;