Date: Mon, 21 Jan 2019 11:40:36 -0500
Subject: [PATCH 25/93] stronger highlighting for selectable cards
---
.../java/forge/view/arcane/CardPanel.java | 28 +++++++++++++------
.../forge/view/arcane/ScaledImagePanel.java | 9 +++++-
.../main/java/forge/interfaces/IGuiGame.java | 1 +
.../java/forge/match/AbstractGuiGame.java | 3 ++
4 files changed, 31 insertions(+), 10 deletions(-)
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..d1e1e6f1953 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,6 +253,13 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
g2d.rotate(getTappedAngle(), cardXOffset + edgeOffset, (cardYOffset + cardHeight)
- edgeOffset);
}
+ boolean selectable = matchUI.isSelectable(getCard());
+ if ( titleText!=null ) { // selectable cards have colored names
+ titleText.setForeground(selectable?Color.cyan:Color.white);
+ }
+ // if ( imagePanel != null ) { // if selecting, darken non-selectable cards - needs more refreshing to do right
+ // imagePanel.setBrightness(selectable?1.0f:(matchUI.isSelecting()?0.5f:1.0f));
+ //}
super.paint(g2d);
}
@@ -268,25 +275,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));
- g2d.fillRoundRect(cardXOffset - n, (cardYOffset - n) + offset, cardWidth + (n * 2), cardHeight + (n * 2), cornerSize + n , cornerSize + n);
+ 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 +312,13 @@ 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())) { // Replace border for selectable cards
+ g2d.setColor(Color.cyan);
+ // final int n2 = Math.max(2, Math.round(2 * cardWidth * CardPanel.SELECTED_BORDER_SIZE));
+ g2d.fillRoundRect(cardXOffset, (cardYOffset) + offset, cardWidth, cardHeight, cornerSize, cornerSize);
+ // g2d.fillRoundRect(cardXOffset - n2, (cardYOffset - n2) + offset, cardWidth + (n2 * 2), cardHeight + (n2 * 2), cornerSize + n2, cornerSize + n2);
+ }
}
private void drawManaCost(final Graphics g, final ManaCost cost, final int deltaY) {
diff --git a/forge-gui-desktop/src/main/java/forge/view/arcane/ScaledImagePanel.java b/forge-gui-desktop/src/main/java/forge/view/arcane/ScaledImagePanel.java
index 26021b0f670..a9867f6db6c 100644
--- a/forge-gui-desktop/src/main/java/forge/view/arcane/ScaledImagePanel.java
+++ b/forge-gui-desktop/src/main/java/forge/view/arcane/ScaledImagePanel.java
@@ -20,6 +20,7 @@ package forge.view.arcane;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
+import java.awt.image.RescaleOp;
/**
*
@@ -37,6 +38,10 @@ public class ScaledImagePanel extends JPanel {
*
*/
private volatile BufferedImage srcImage;
+ private float brightness = 1.0f;
+ public void setBrightness(final float bright) {
+ brightness = bright;
+ }
/**
*
@@ -127,7 +132,9 @@ public class ScaledImagePanel extends JPanel {
} else {
int x = (sz.width / 2) - (img.getWidth() / 2);
int y = (sz.height / 2) - (img.getHeight() / 2);
- g.drawImage(img, x, y, null);
+ Graphics2D g2d = (Graphics2D) g;
+ RescaleOp brighten = new RescaleOp(brightness,0,null);
+ g2d.drawImage(img, brighten, x, y);
}
}
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() {
From 62316abf383f2c513b2b40cca230a615b58c60e8 Mon Sep 17 00:00:00 2001
From: "Peter F. Patel-Schneider"
Date: Wed, 23 Jan 2019 02:35:58 -0500
Subject: [PATCH 26/93] darken non-selectable cards when selecting (needs work)
---
.../java/forge/view/arcane/CardPanel.java | 30 +++++++++++--------
1 file changed, 17 insertions(+), 13 deletions(-)
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 d1e1e6f1953..280fb8c3905 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,14 +253,14 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
g2d.rotate(getTappedAngle(), cardXOffset + edgeOffset, (cardYOffset + cardHeight)
- edgeOffset);
}
- boolean selectable = matchUI.isSelectable(getCard());
- if ( titleText!=null ) { // selectable cards have colored names
- titleText.setForeground(selectable?Color.cyan:Color.white);
+ // System.out.println("Paint " + getCard() + " selecting " + matchUI.isSelecting());
+ boolean nonselectable = matchUI.isSelecting() && !matchUI.isSelectable(getCard());
+ if ( titleText!=null ) { // non-selectable cards have gray names
+ titleText.setForeground(nonselectable?Color.DARK_GRAY:Color.WHITE);
}
- // if ( imagePanel != null ) { // if selecting, darken non-selectable cards - needs more refreshing to do right
- // imagePanel.setBrightness(selectable?1.0f:(matchUI.isSelecting()?0.5f:1.0f));
- //}
- super.paint(g2d);
+ if ( imagePanel != null ) { // if selecting, darken non-selectable cards - needs more refreshing to do right
+ imagePanel.setBrightness(nonselectable?0.4f:1.0f);
+ } super.paint(g2d);
}
@Override
@@ -304,7 +304,8 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
colorIsSet = true;
} else if (ed != null && ed.isWhiteBorder() && state.getFoilIndex() == 0) {
// Non-foil cards from white-bordered sets are drawn with white border
- g2d.setColor(Color.WHITE);
+ // unless selecting and card is not selectable
+ g2d.setColor(matchUI.isSelecting()&&!matchUI.isSelectable(getCard())?Color.DARK_GRAY:Color.WHITE);
colorIsSet = true;
}
if (colorIsSet) {
@@ -313,11 +314,12 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
}
}
- if (matchUI.isSelectable(getCard())) { // Replace border for selectable cards
- g2d.setColor(Color.cyan);
- // final int n2 = Math.max(2, Math.round(2 * cardWidth * CardPanel.SELECTED_BORDER_SIZE));
- g2d.fillRoundRect(cardXOffset, (cardYOffset) + offset, cardWidth, cardHeight, cornerSize, cornerSize);
- // g2d.fillRoundRect(cardXOffset - n2, (cardYOffset - n2) + offset, cardWidth + (n2 * 2), cardHeight + (n2 * 2), cornerSize + n2, cornerSize + n2);
+ if (matchUI.isSelectable(getCard())) { // Replace border for selectable cards
+ g2d.setColor(Color.WHITE);
+ final int ins = 1;
+ g2d.fillRoundRect(cardXOffset+ins, cardYOffset+ins, cardWidth-ins*2, cardHeight-ins*2, cornerSize-ins, cornerSize-ins);
+ // final int n2 = Math.max(2, 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);
}
}
@@ -368,6 +370,7 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
final boolean canShow = matchUI.mayView(card);
final boolean showText = !imagePanel.hasImage() || !isAnimationPanel;
+ System.out.println("doLayout " + card);
displayCardNameOverlay(showText && canShow && showCardNameOverlay(), imgSize, imgPos);
displayPTOverlay(showText && (canShow || card.isFaceDown()) && showCardPowerOverlay(), imgSize, imgPos);
displayCardIdOverlay(showText && canShow && showCardIdOverlay(), imgSize, imgPos);
@@ -793,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;
}
From 70f0f1108b14bd7ff5c465ec5b140bb9b2342c71 Mon Sep 17 00:00:00 2001
From: "Peter F. Patel-Schneider"
Date: Sun, 27 Jan 2019 08:22:50 -0500
Subject: [PATCH 27/93] darken non-selectable cards during paintChildren
---
.../java/forge/view/arcane/CardPanel.java | 31 ++++++++++---------
.../forge/view/arcane/ScaledImagePanel.java | 9 +-----
2 files changed, 18 insertions(+), 22 deletions(-)
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 280fb8c3905..7d0cbb2ce89 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,14 +253,7 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
g2d.rotate(getTappedAngle(), cardXOffset + edgeOffset, (cardYOffset + cardHeight)
- edgeOffset);
}
- // System.out.println("Paint " + getCard() + " selecting " + matchUI.isSelecting());
- boolean nonselectable = matchUI.isSelecting() && !matchUI.isSelectable(getCard());
- if ( titleText!=null ) { // non-selectable cards have gray names
- titleText.setForeground(nonselectable?Color.DARK_GRAY:Color.WHITE);
- }
- if ( imagePanel != null ) { // if selecting, darken non-selectable cards - needs more refreshing to do right
- imagePanel.setBrightness(nonselectable?0.4f:1.0f);
- } super.paint(g2d);
+ super.paint(g2d);
}
@Override
@@ -304,8 +297,7 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
colorIsSet = true;
} else if (ed != null && ed.isWhiteBorder() && state.getFoilIndex() == 0) {
// Non-foil cards from white-bordered sets are drawn with white border
- // unless selecting and card is not selectable
- g2d.setColor(matchUI.isSelecting()&&!matchUI.isSelectable(getCard())?Color.DARK_GRAY:Color.WHITE);
+ g2d.setColor(Color.WHITE);
colorIsSet = true;
}
if (colorIsSet) {
@@ -314,12 +306,10 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
}
}
- if (matchUI.isSelectable(getCard())) { // Replace border for selectable cards
+ 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);
- // final int n2 = Math.max(2, 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);
+ g2d.fillRoundRect(cardXOffset+ins, cardYOffset+ins, cardWidth-ins*2, cardHeight-ins*2, cornerSize-ins, cornerSize-ins);
}
}
@@ -344,6 +334,19 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
drawFoilEffect(g, card, cardXOffset, cardYOffset,
cardWidth, cardHeight, Math.round(cardWidth * BLACK_BORDER_SIZE));
}
+
+ System.out.println("Painting " + getCard() + " selecting " + matchUI.isSelecting());
+ boolean nonselectable = matchUI.isSelecting() && !matchUI.isSelectable(getCard());
+ // if selecting, darken non-selectable cards - pfps - needs fixes to refreshing to do right
+ if ( nonselectable ) {
+ System.out.println("Paint nonselectable " + card);
+ 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) {
diff --git a/forge-gui-desktop/src/main/java/forge/view/arcane/ScaledImagePanel.java b/forge-gui-desktop/src/main/java/forge/view/arcane/ScaledImagePanel.java
index a9867f6db6c..26021b0f670 100644
--- a/forge-gui-desktop/src/main/java/forge/view/arcane/ScaledImagePanel.java
+++ b/forge-gui-desktop/src/main/java/forge/view/arcane/ScaledImagePanel.java
@@ -20,7 +20,6 @@ package forge.view.arcane;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
-import java.awt.image.RescaleOp;
/**
*
@@ -38,10 +37,6 @@ public class ScaledImagePanel extends JPanel {
*
*/
private volatile BufferedImage srcImage;
- private float brightness = 1.0f;
- public void setBrightness(final float bright) {
- brightness = bright;
- }
/**
*
@@ -132,9 +127,7 @@ public class ScaledImagePanel extends JPanel {
} else {
int x = (sz.width / 2) - (img.getWidth() / 2);
int y = (sz.height / 2) - (img.getHeight() / 2);
- Graphics2D g2d = (Graphics2D) g;
- RescaleOp brighten = new RescaleOp(brightness,0,null);
- g2d.drawImage(img, brighten, x, y);
+ g.drawImage(img, x, y, null);
}
}
From d9400fe0694ba6b58b0d18defbd5235dfbd7180a Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Sun, 27 Jan 2019 17:55:04 +0000
Subject: [PATCH 28/93] Update rix_maadi_reveler.txt
---
.../res/cardsfolder/upcoming/rix_maadi_reveler.txt | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/forge-gui/res/cardsfolder/upcoming/rix_maadi_reveler.txt b/forge-gui/res/cardsfolder/upcoming/rix_maadi_reveler.txt
index 7af42a6556d..cfd4bd2db5d 100644
--- a/forge-gui/res/cardsfolder/upcoming/rix_maadi_reveler.txt
+++ b/forge-gui/res/cardsfolder/upcoming/rix_maadi_reveler.txt
@@ -3,10 +3,10 @@ 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
+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.
From 79c3570bcc61dce96ac2643cfdaf198049f85da8 Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Sun, 27 Jan 2019 17:55:48 +0000
Subject: [PATCH 29/93] Update gutterbones.txt
---
forge-gui/res/cardsfolder/upcoming/gutterbones.txt | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/forge-gui/res/cardsfolder/upcoming/gutterbones.txt b/forge-gui/res/cardsfolder/upcoming/gutterbones.txt
index 89207d77bf6..25cbbb43111 100644
--- a/forge-gui/res/cardsfolder/upcoming/gutterbones.txt
+++ b/forge-gui/res/cardsfolder/upcoming/gutterbones.txt
@@ -3,7 +3,6 @@ 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
+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.
From 07324f63d90fb147759e4a36765826fb83844695 Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Sun, 27 Jan 2019 17:56:47 +0000
Subject: [PATCH 30/93] Update spawn_of_mayhem.txt
---
forge-gui/res/cardsfolder/upcoming/spawn_of_mayhem.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/forge-gui/res/cardsfolder/upcoming/spawn_of_mayhem.txt b/forge-gui/res/cardsfolder/upcoming/spawn_of_mayhem.txt
index 3d4b5725ea0..e1e05351ad4 100644
--- a/forge-gui/res/cardsfolder/upcoming/spawn_of_mayhem.txt
+++ b/forge-gui/res/cardsfolder/upcoming/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
From 3b21b2a6103bfdfc89edae5001150f691edabc43 Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Sun, 27 Jan 2019 17:58:28 +0000
Subject: [PATCH 31/93] Fix fireblade_artist dealing damage on sacrifice
---
forge-gui/res/cardsfolder/upcoming/fireblade_artist.txt | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/forge-gui/res/cardsfolder/upcoming/fireblade_artist.txt b/forge-gui/res/cardsfolder/upcoming/fireblade_artist.txt
index a75291fad70..109b188cb6b 100644
--- a/forge-gui/res/cardsfolder/upcoming/fireblade_artist.txt
+++ b/forge-gui/res/cardsfolder/upcoming/fireblade_artist.txt
@@ -4,6 +4,7 @@ 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$ TrigDealDamage
+SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Opponent,Planeswalker | ConditionDefined$ Remembered | ConditionPresent$ Creature | ConditionCompare$ GE1 | 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.
From 4fa8fa399306e0e5e7f457c76c9de78d4ad8b811 Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Sun, 27 Jan 2019 18:04:06 +0000
Subject: [PATCH 32/93] Update sentinels_mark.txt
---
forge-gui/res/cardsfolder/upcoming/sentinels_mark.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/forge-gui/res/cardsfolder/upcoming/sentinels_mark.txt b/forge-gui/res/cardsfolder/upcoming/sentinels_mark.txt
index 5d6b7ac507e..5a6c80a41b2 100644
--- a/forge-gui/res/cardsfolder/upcoming/sentinels_mark.txt
+++ b/forge-gui/res/cardsfolder/upcoming/sentinels_mark.txt
@@ -5,6 +5,6 @@ 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.
+T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ TrigPump | Condition$ Main1,Main2 | 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
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.
From 54c5d3f344042901b6d460fbff7ac5528c6f1039 Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Sun, 27 Jan 2019 19:25:20 +0000
Subject: [PATCH 33/93] Fix Fireblade Artist to reflect "when you" sacrifice
trigger (similar to Heart-Piercer Manticore)
---
forge-gui/res/cardsfolder/upcoming/fireblade_artist.txt | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/forge-gui/res/cardsfolder/upcoming/fireblade_artist.txt b/forge-gui/res/cardsfolder/upcoming/fireblade_artist.txt
index 109b188cb6b..34056eb8782 100644
--- a/forge-gui/res/cardsfolder/upcoming/fireblade_artist.txt
+++ b/forge-gui/res/cardsfolder/upcoming/fireblade_artist.txt
@@ -4,7 +4,7 @@ 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 | RememberSacrificed$ True | SubAbility$ TrigDealDamage
-SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Opponent,Planeswalker | ConditionDefined$ Remembered | ConditionPresent$ Creature | ConditionCompare$ GE1 | TgtPrompt$ Select target opponent or planeswalker | NumDmg$ 2 | SubAbility$ DBCleanup
-SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
+SVar:TrigSacrifice:DB$ Sacrifice | Optional$ True | SacValid$ Creature | Amount$ 1 | SacrificeParam$ FirebladeArtist | AILogic$ ConsiderSac
+T:Mode$ Sacrificed | ValidPlayer$ You | ValidCard$ Creature | CauseParam$ FirebladeArtist | Execute$ TrigDealDamage | Secondary$ True | TriggerDescription$ CARDNAME deals 2 damage to target opponent or planeswalker.
+SVar:TrigDealDamage:DB$ DealDamage | ValidTgts$ Opponent,Planeswalker | TgtPrompt$ Select target opponent or planeswalker | NumDmg$ 2
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.
From acdee9ff0ca580e6354ebf99b0a4ab0b36f1e2be Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Sun, 27 Jan 2019 19:43:56 +0000
Subject: [PATCH 34/93] Update fireblade_artist.txt
---
forge-gui/res/cardsfolder/upcoming/fireblade_artist.txt | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/forge-gui/res/cardsfolder/upcoming/fireblade_artist.txt b/forge-gui/res/cardsfolder/upcoming/fireblade_artist.txt
index 34056eb8782..c2adafe9cb5 100644
--- a/forge-gui/res/cardsfolder/upcoming/fireblade_artist.txt
+++ b/forge-gui/res/cardsfolder/upcoming/fireblade_artist.txt
@@ -4,7 +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 | SacrificeParam$ FirebladeArtist | AILogic$ ConsiderSac
-T:Mode$ Sacrificed | ValidPlayer$ You | ValidCard$ Creature | CauseParam$ FirebladeArtist | Execute$ TrigDealDamage | Secondary$ True | TriggerDescription$ CARDNAME deals 2 damage to target opponent or planeswalker.
-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.
From 625585f0057c9dd2c83151ec573a5349bffd9d5c Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Sun, 27 Jan 2019 20:15:05 +0000
Subject: [PATCH 35/93] Fixed Scry 3
---
forge-gui/res/cardsfolder/upcoming/precognitive_perception.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/forge-gui/res/cardsfolder/upcoming/precognitive_perception.txt b/forge-gui/res/cardsfolder/upcoming/precognitive_perception.txt
index 2bd4cc8757a..0b2a2ef5f7c 100644
--- a/forge-gui/res/cardsfolder/upcoming/precognitive_perception.txt
+++ b/forge-gui/res/cardsfolder/upcoming/precognitive_perception.txt
@@ -1,6 +1,6 @@
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.
+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.
From 1dc8ef5244d670d58e5e6c5ed737078c8533410a Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Sun, 27 Jan 2019 20:34:35 +0000
Subject: [PATCH 36/93] Fixed problem with self-exiling after trigger
resolution (Hanmac)
---
.../upcoming/lumbering_battlement.txt | 20 ++++++++++++++-----
1 file changed, 15 insertions(+), 5 deletions(-)
diff --git a/forge-gui/res/cardsfolder/upcoming/lumbering_battlement.txt b/forge-gui/res/cardsfolder/upcoming/lumbering_battlement.txt
index 0838ca63c67..9e3ec703e98 100644
--- a/forge-gui/res/cardsfolder/upcoming/lumbering_battlement.txt
+++ b/forge-gui/res/cardsfolder/upcoming/lumbering_battlement.txt
@@ -3,11 +3,21 @@ 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:
+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.
-SVar:X:Count$Valid Card.IsRemembered+namedCARDNAME/Times.2
+#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.
From 8b7ace6d1c8e8b9131ce3e04f65be7bc51d4590c Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Sun, 27 Jan 2019 21:45:52 +0000
Subject: [PATCH 37/93] Added TrigChangeZone to bounce it back, and CheckSVar
to check if instant cast in Main Phase
---
forge-gui/res/cardsfolder/upcoming/dovins_acuity.txt | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/forge-gui/res/cardsfolder/upcoming/dovins_acuity.txt b/forge-gui/res/cardsfolder/upcoming/dovins_acuity.txt
index 72a7e9e4c1a..41757ebaac4 100644
--- a/forge-gui/res/cardsfolder/upcoming/dovins_acuity.txt
+++ b/forge-gui/res/cardsfolder/upcoming/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.
From b23425ea9af6aa797a5868b0bda982280844a62e Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Sun, 27 Jan 2019 22:37:18 +0000
Subject: [PATCH 38/93] Update bloodmist_infiltrator.txt
---
forge-gui/res/cardsfolder/upcoming/bloodmist_infiltrator.txt | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/forge-gui/res/cardsfolder/upcoming/bloodmist_infiltrator.txt b/forge-gui/res/cardsfolder/upcoming/bloodmist_infiltrator.txt
index 595582978bd..564757411cf 100644
--- a/forge-gui/res/cardsfolder/upcoming/bloodmist_infiltrator.txt
+++ b/forge-gui/res/cardsfolder/upcoming/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.
From 0bfdfb78d3015be5af6c51d7b1e063e7ff042cab Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Sun, 27 Jan 2019 22:43:34 +0000
Subject: [PATCH 39/93] Update ill_gotten_inheritance.txt
---
.../cardsfolder/upcoming/ill_gotten_inheritance.txt | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/forge-gui/res/cardsfolder/upcoming/ill_gotten_inheritance.txt b/forge-gui/res/cardsfolder/upcoming/ill_gotten_inheritance.txt
index 5c3658aca13..85cf8828a10 100644
--- a/forge-gui/res/cardsfolder/upcoming/ill_gotten_inheritance.txt
+++ b/forge-gui/res/cardsfolder/upcoming/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.
From a1ad2208c8489c9928dab5bf176c47da3cd2ea9b Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Sun, 27 Jan 2019 23:01:06 +0000
Subject: [PATCH 40/93] Update rix_maadi_reveler.txt
---
forge-gui/res/cardsfolder/upcoming/rix_maadi_reveler.txt | 1 -
1 file changed, 1 deletion(-)
diff --git a/forge-gui/res/cardsfolder/upcoming/rix_maadi_reveler.txt b/forge-gui/res/cardsfolder/upcoming/rix_maadi_reveler.txt
index cfd4bd2db5d..f7ceece6349 100644
--- a/forge-gui/res/cardsfolder/upcoming/rix_maadi_reveler.txt
+++ b/forge-gui/res/cardsfolder/upcoming/rix_maadi_reveler.txt
@@ -2,7 +2,6 @@ Name:Rix Maadi Reveler
ManaCost:1 R
Types:Creature Human Shaman
PT:2/2
-K:Flying
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
From 766277673da1205454f2f3c08bf10e538d8fe6d1 Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Sun, 27 Jan 2019 23:45:21 +0000
Subject: [PATCH 41/93] Update simic_locket.txt
---
forge-gui/res/cardsfolder/upcoming/simic_locket.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/forge-gui/res/cardsfolder/upcoming/simic_locket.txt b/forge-gui/res/cardsfolder/upcoming/simic_locket.txt
index 22025cfffd4..e7886996cae 100644
--- a/forge-gui/res/cardsfolder/upcoming/simic_locket.txt
+++ b/forge-gui/res/cardsfolder/upcoming/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.
From 25003aa74e5a95e384ece291386dc823eeb02bae Mon Sep 17 00:00:00 2001
From: "Peter F. Patel-Schneider"
Date: Sun, 27 Jan 2019 21:09:52 -0500
Subject: [PATCH 42/93] better way to schedule visual updates to non-selectable
cards
---
.../java/forge/screens/match/CMatchUI.java | 39 +++++++++++++++++++
.../java/forge/view/arcane/CardPanel.java | 7 +---
.../java/forge/view/arcane/FloatingZone.java | 5 +++
3 files changed, 46 insertions(+), 5 deletions(-)
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..1e12acb4e9e 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
@@ -524,6 +524,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 7d0cbb2ce89..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
@@ -279,7 +279,7 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
if (isSelected) {
g2d.setColor(Color.green);
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);
+ g2d.fillRoundRect(cardXOffset - n, (cardYOffset - n) + offset, cardWidth + (n * 2), cardHeight + (n * 2), cornerSize + n , cornerSize + n);
}
// Black fill - (will become an outline for white bordered cards)
@@ -335,11 +335,9 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
cardWidth, cardHeight, Math.round(cardWidth * BLACK_BORDER_SIZE));
}
- System.out.println("Painting " + getCard() + " selecting " + matchUI.isSelecting());
boolean nonselectable = matchUI.isSelecting() && !matchUI.isSelectable(getCard());
- // if selecting, darken non-selectable cards - pfps - needs fixes to refreshing to do right
+ // if selecting, darken non-selectable cards
if ( nonselectable ) {
- System.out.println("Paint nonselectable " + card);
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));
@@ -373,7 +371,6 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
final boolean canShow = matchUI.mayView(card);
final boolean showText = !imagePanel.hasImage() || !isAnimationPanel;
- System.out.println("doLayout " + card);
displayCardNameOverlay(showText && canShow && showCardNameOverlay(), imgSize, imgPos);
displayPTOverlay(showText && (canShow || card.isFaceDown()) && showCardPowerOverlay(), imgSize, imgPos);
displayCardIdOverlay(showText && canShow && showCardIdOverlay(), imgSize, imgPos);
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;
From 01c52667ad7fdb90cf1f30179bce04246a55409c Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Mon, 28 Jan 2019 07:01:43 +0000
Subject: [PATCH 43/93] Update
forge-gui/res/cardsfolder/upcoming/cavalcade_of_calamity.txt,
forge-gui/res/cardsfolder/r/raid_bombardment.txt,
forge-gui/res/cardsfolder/upcoming/forbidding_spirit.txt,
forge-gui/res/cardsfolder/upcoming/get_the_point.txt,
forge-gui/res/cardsfolder/upcoming/haazda_officer.txt,
forge-gui/res/cardsfolder/upcoming/lawmages_binding.txt,
forge-gui/res/cardsfolder/upcoming/rubble_slinger.txt,
forge-gui/res/cardsfolder/upcoming/rubblebelt_runner.txt,
forge-gui/res/cardsfolder/upcoming/screaming_shield.txt,
forge-gui/res/cardsfolder/upcoming/scuttlegator.txt,
forge-gui/res/cardsfolder/upcoming/senate_griffin.txt,
forge-gui/res/cardsfolder/upcoming/summary_judgment.txt,
forge-gui/res/cardsfolder/upcoming/vizkopa_vampire.txt files
---
forge-gui/res/cardsfolder/r/raid_bombardment.txt | 7 +++----
.../res/cardsfolder/upcoming/cavalcade_of_calamity.txt | 7 +++++++
forge-gui/res/cardsfolder/upcoming/forbidding_spirit.txt | 8 ++++++++
forge-gui/res/cardsfolder/upcoming/get_the_point.txt | 6 ++++++
forge-gui/res/cardsfolder/upcoming/haazda_officer.txt | 8 ++++++++
forge-gui/res/cardsfolder/upcoming/lawmages_binding.txt | 8 ++++++++
forge-gui/res/cardsfolder/upcoming/rubble_slinger.txt | 6 ++++++
forge-gui/res/cardsfolder/upcoming/rubblebelt_runner.txt | 6 ++++++
forge-gui/res/cardsfolder/upcoming/screaming_shield.txt | 7 +++++++
forge-gui/res/cardsfolder/upcoming/scuttlegator.txt | 8 ++++++++
forge-gui/res/cardsfolder/upcoming/senate_griffin.txt | 8 ++++++++
forge-gui/res/cardsfolder/upcoming/summary_judgment.txt | 6 ++++++
forge-gui/res/cardsfolder/upcoming/vizkopa_vampire.txt | 6 ++++++
13 files changed, 87 insertions(+), 4 deletions(-)
create mode 100644 forge-gui/res/cardsfolder/upcoming/cavalcade_of_calamity.txt
create mode 100644 forge-gui/res/cardsfolder/upcoming/forbidding_spirit.txt
create mode 100644 forge-gui/res/cardsfolder/upcoming/get_the_point.txt
create mode 100644 forge-gui/res/cardsfolder/upcoming/haazda_officer.txt
create mode 100644 forge-gui/res/cardsfolder/upcoming/lawmages_binding.txt
create mode 100644 forge-gui/res/cardsfolder/upcoming/rubble_slinger.txt
create mode 100644 forge-gui/res/cardsfolder/upcoming/rubblebelt_runner.txt
create mode 100644 forge-gui/res/cardsfolder/upcoming/screaming_shield.txt
create mode 100644 forge-gui/res/cardsfolder/upcoming/scuttlegator.txt
create mode 100644 forge-gui/res/cardsfolder/upcoming/senate_griffin.txt
create mode 100644 forge-gui/res/cardsfolder/upcoming/summary_judgment.txt
create mode 100644 forge-gui/res/cardsfolder/upcoming/vizkopa_vampire.txt
diff --git a/forge-gui/res/cardsfolder/r/raid_bombardment.txt b/forge-gui/res/cardsfolder/r/raid_bombardment.txt
index 2534b51ec7c..5cf328f2974 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$ TriggeredAttacked | 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/cavalcade_of_calamity.txt b/forge-gui/res/cardsfolder/upcoming/cavalcade_of_calamity.txt
new file mode 100644
index 00000000000..a4e5f920e7e
--- /dev/null
+++ b/forge-gui/res/cardsfolder/upcoming/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$ TriggeredAttacked | 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/upcoming/forbidding_spirit.txt b/forge-gui/res/cardsfolder/upcoming/forbidding_spirit.txt
new file mode 100644
index 00000000000..4be78823eca
--- /dev/null
+++ b/forge-gui/res/cardsfolder/upcoming/forbidding_spirit.txt
@@ -0,0 +1,8 @@
+Name:Forbidding Spirit
+ManaCost:1 W W
+Types:Creature Spirit Cleric
+PT:3/3
+T:Mode$ ChangeZone | Origin$ Any | Destination$ Battlefield | ValidCard$ 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 | 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/get_the_point.txt b/forge-gui/res/cardsfolder/upcoming/get_the_point.txt
new file mode 100644
index 00000000000..1a09941bc97
--- /dev/null
+++ b/forge-gui/res/cardsfolder/upcoming/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/haazda_officer.txt b/forge-gui/res/cardsfolder/upcoming/haazda_officer.txt
new file mode 100644
index 00000000000..0890f2ade76
--- /dev/null
+++ b/forge-gui/res/cardsfolder/upcoming/haazda_officer.txt
@@ -0,0 +1,8 @@
+Name:Haazda Officer
+ManaCost:2 W
+Types:Creature Human Soldier
+PT:3/2
+T:Mode$ ChangeZone | Origin$ Any | Destination$ Battlefield | ValidCard$ 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/lawmages_binding.txt b/forge-gui/res/cardsfolder/upcoming/lawmages_binding.txt
new file mode 100644
index 00000000000..3c5087d6bc5
--- /dev/null
+++ b/forge-gui/res/cardsfolder/upcoming/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/rubble_slinger.txt b/forge-gui/res/cardsfolder/upcoming/rubble_slinger.txt
new file mode 100644
index 00000000000..bfa37840636
--- /dev/null
+++ b/forge-gui/res/cardsfolder/upcoming/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_runner.txt b/forge-gui/res/cardsfolder/upcoming/rubblebelt_runner.txt
new file mode 100644
index 00000000000..6c88e9b0745
--- /dev/null
+++ b/forge-gui/res/cardsfolder/upcoming/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/screaming_shield.txt b/forge-gui/res/cardsfolder/upcoming/screaming_shield.txt
new file mode 100644
index 00000000000..f0f80e0a52e
--- /dev/null
+++ b/forge-gui/res/cardsfolder/upcoming/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/upcoming/scuttlegator.txt b/forge-gui/res/cardsfolder/upcoming/scuttlegator.txt
new file mode 100644
index 00000000000..19a4f959cab
--- /dev/null
+++ b/forge-gui/res/cardsfolder/upcoming/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_griffin.txt b/forge-gui/res/cardsfolder/upcoming/senate_griffin.txt
new file mode 100644
index 00000000000..c7193c112b9
--- /dev/null
+++ b/forge-gui/res/cardsfolder/upcoming/senate_griffin.txt
@@ -0,0 +1,8 @@
+Name:Senate Griffin
+ManaCost:2 UW UW
+Types:Creature Griffin
+PT:3/2
+K:Flying
+T:Mode$ ChangeZone | Origin$ Any | Destination$ Battlefield | ValidCard$ 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/summary_judgment.txt b/forge-gui/res/cardsfolder/upcoming/summary_judgment.txt
new file mode 100644
index 00000000000..605dc72faa4
--- /dev/null
+++ b/forge-gui/res/cardsfolder/upcoming/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/vizkopa_vampire.txt b/forge-gui/res/cardsfolder/upcoming/vizkopa_vampire.txt
new file mode 100644
index 00000000000..c14766555ab
--- /dev/null
+++ b/forge-gui/res/cardsfolder/upcoming/vizkopa_vampire.txt
@@ -0,0 +1,6 @@
+Name:Vizkopa Vampire
+ManaCost:2 WB
+Types:Creature Vampire
+PT:3/1
+K:Lifelink
+Oracle:Lifelink
From 89757b9677a1c955cb160af31432b1bdf06dec67 Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Mon, 28 Jan 2019 07:04:13 +0000
Subject: [PATCH 44/93] Update
forge-gui/res/cardsfolder/upcoming/footlight_fiend.txt
---
forge-gui/res/cardsfolder/upcoming/footlight_fiend.txt | 7 +++++++
1 file changed, 7 insertions(+)
create mode 100644 forge-gui/res/cardsfolder/upcoming/footlight_fiend.txt
diff --git a/forge-gui/res/cardsfolder/upcoming/footlight_fiend.txt b/forge-gui/res/cardsfolder/upcoming/footlight_fiend.txt
new file mode 100644
index 00000000000..d5476eccf58
--- /dev/null
+++ b/forge-gui/res/cardsfolder/upcoming/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.
From e1ceed159f17edb8f9e938b938b68c0ab4c083d8 Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Mon, 28 Jan 2019 07:08:05 +0000
Subject: [PATCH 45/93] Update
forge-gui/res/cardsfolder/upcoming/elite_arrester.txt,
forge-gui/res/cardsfolder/upcoming/clamor_shaman.txt files
---
forge-gui/res/cardsfolder/upcoming/clamor_shaman.txt | 8 ++++++++
forge-gui/res/cardsfolder/upcoming/elite_arrester.txt | 7 +++++++
2 files changed, 15 insertions(+)
create mode 100644 forge-gui/res/cardsfolder/upcoming/clamor_shaman.txt
create mode 100644 forge-gui/res/cardsfolder/upcoming/elite_arrester.txt
diff --git a/forge-gui/res/cardsfolder/upcoming/clamor_shaman.txt b/forge-gui/res/cardsfolder/upcoming/clamor_shaman.txt
new file mode 100644
index 00000000000..64148416e73
--- /dev/null
+++ b/forge-gui/res/cardsfolder/upcoming/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/elite_arrester.txt b/forge-gui/res/cardsfolder/upcoming/elite_arrester.txt
new file mode 100644
index 00000000000..67442dfa407
--- /dev/null
+++ b/forge-gui/res/cardsfolder/upcoming/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.
From a462d3424953d70ceee4b9aa935318a1fc7b7e2a Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Mon, 28 Jan 2019 07:38:32 +0000
Subject: [PATCH 46/93] Update
forge-gui/res/cardsfolder/upcoming/charging_war_boar.txt,
forge-gui/res/cardsfolder/upcoming/cindervines.txt files
---
forge-gui/res/cardsfolder/upcoming/charging_war_boar.txt | 8 ++++++++
forge-gui/res/cardsfolder/upcoming/cindervines.txt | 8 ++++++++
2 files changed, 16 insertions(+)
create mode 100644 forge-gui/res/cardsfolder/upcoming/charging_war_boar.txt
create mode 100644 forge-gui/res/cardsfolder/upcoming/cindervines.txt
diff --git a/forge-gui/res/cardsfolder/upcoming/charging_war_boar.txt b/forge-gui/res/cardsfolder/upcoming/charging_war_boar.txt
new file mode 100644
index 00000000000..120a77a72d7
--- /dev/null
+++ b/forge-gui/res/cardsfolder/upcoming/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/cindervines.txt b/forge-gui/res/cardsfolder/upcoming/cindervines.txt
new file mode 100644
index 00000000000..5d0b5133500
--- /dev/null
+++ b/forge-gui/res/cardsfolder/upcoming/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> | ValidTgt$ 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.
From 1c9a515bb3911b4abd5eccafb02062ab4812440d Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Mon, 28 Jan 2019 07:47:55 +0000
Subject: [PATCH 47/93] Update
forge-gui/res/cardsfolder/upcoming/domris_nodorog.txt
---
forge-gui/res/cardsfolder/upcoming/domris_nodorog.txt | 9 +++++++++
1 file changed, 9 insertions(+)
create mode 100644 forge-gui/res/cardsfolder/upcoming/domris_nodorog.txt
diff --git a/forge-gui/res/cardsfolder/upcoming/domris_nodorog.txt b/forge-gui/res/cardsfolder/upcoming/domris_nodorog.txt
new file mode 100644
index 00000000000..bb227a66cff
--- /dev/null
+++ b/forge-gui/res/cardsfolder/upcoming/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$ ChangeZone | Origin$ Any | Destination$ Battlefield | ValidCard$ 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.
From 7c98ed75be1651ed557eb9b08a8e68659adaaa7a Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Mon, 28 Jan 2019 08:02:07 +0000
Subject: [PATCH 48/93] Update
forge-gui/res/cardsfolder/upcoming/domris_nodorog.txt,
forge-gui/res/cardsfolder/upcoming/forbidding_spirit.txt,
forge-gui/res/cardsfolder/upcoming/haazda_officer.txt,
forge-gui/res/cardsfolder/upcoming/senate_griffin.txt files
---
forge-gui/res/cardsfolder/upcoming/domris_nodorog.txt | 2 +-
forge-gui/res/cardsfolder/upcoming/forbidding_spirit.txt | 2 +-
forge-gui/res/cardsfolder/upcoming/haazda_officer.txt | 2 +-
forge-gui/res/cardsfolder/upcoming/senate_griffin.txt | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/forge-gui/res/cardsfolder/upcoming/domris_nodorog.txt b/forge-gui/res/cardsfolder/upcoming/domris_nodorog.txt
index bb227a66cff..b823c2265fe 100644
--- a/forge-gui/res/cardsfolder/upcoming/domris_nodorog.txt
+++ b/forge-gui/res/cardsfolder/upcoming/domris_nodorog.txt
@@ -3,7 +3,7 @@ ManaCost:3 R G
Types:Creature Beast
PT:5/2
K:Trample
-T:Mode$ ChangeZone | Origin$ Any | Destination$ Battlefield | ValidCard$ 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.
+T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ 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/upcoming/forbidding_spirit.txt b/forge-gui/res/cardsfolder/upcoming/forbidding_spirit.txt
index 4be78823eca..510834864df 100644
--- a/forge-gui/res/cardsfolder/upcoming/forbidding_spirit.txt
+++ b/forge-gui/res/cardsfolder/upcoming/forbidding_spirit.txt
@@ -2,7 +2,7 @@ Name:Forbidding Spirit
ManaCost:1 W W
Types:Creature Spirit Cleric
PT:3/3
-T:Mode$ ChangeZone | Origin$ Any | Destination$ Battlefield | ValidCard$ 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.
+T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ 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 | 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/haazda_officer.txt b/forge-gui/res/cardsfolder/upcoming/haazda_officer.txt
index 0890f2ade76..abf54ae1465 100644
--- a/forge-gui/res/cardsfolder/upcoming/haazda_officer.txt
+++ b/forge-gui/res/cardsfolder/upcoming/haazda_officer.txt
@@ -2,7 +2,7 @@ Name:Haazda Officer
ManaCost:2 W
Types:Creature Human Soldier
PT:3/2
-T:Mode$ ChangeZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Self | Execute$ TrigPump | TriggerDescription$ When CARDNAME enters the battlefield, target creature you control gets +1/+1 until end of turn.
+T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ 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/senate_griffin.txt b/forge-gui/res/cardsfolder/upcoming/senate_griffin.txt
index c7193c112b9..d0d603912aa 100644
--- a/forge-gui/res/cardsfolder/upcoming/senate_griffin.txt
+++ b/forge-gui/res/cardsfolder/upcoming/senate_griffin.txt
@@ -3,6 +3,6 @@ ManaCost:2 UW UW
Types:Creature Griffin
PT:3/2
K:Flying
-T:Mode$ ChangeZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Self | Execute$ DBScry | TriggerDescription$ When CARDNAME etners the battlefield, scry 1.
+T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ 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.
From b08ce490577930fe26d3f16cc25795411210747d Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Mon, 28 Jan 2019 08:07:43 +0000
Subject: [PATCH 49/93] Update
forge-gui/res/cardsfolder/upcoming/senate_griffin.txt,
forge-gui/res/cardsfolder/upcoming/haazda_officer.txt,
forge-gui/res/cardsfolder/upcoming/forbidding_spirit.txt,
forge-gui/res/cardsfolder/upcoming/domris_nodorog.txt files
---
forge-gui/res/cardsfolder/upcoming/domris_nodorog.txt | 2 +-
forge-gui/res/cardsfolder/upcoming/forbidding_spirit.txt | 2 +-
forge-gui/res/cardsfolder/upcoming/haazda_officer.txt | 2 +-
forge-gui/res/cardsfolder/upcoming/senate_griffin.txt | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/forge-gui/res/cardsfolder/upcoming/domris_nodorog.txt b/forge-gui/res/cardsfolder/upcoming/domris_nodorog.txt
index b823c2265fe..1ab1297832a 100644
--- a/forge-gui/res/cardsfolder/upcoming/domris_nodorog.txt
+++ b/forge-gui/res/cardsfolder/upcoming/domris_nodorog.txt
@@ -3,7 +3,7 @@ ManaCost:3 R G
Types:Creature Beast
PT:5/2
K:Trample
-T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ 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.
+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/upcoming/forbidding_spirit.txt b/forge-gui/res/cardsfolder/upcoming/forbidding_spirit.txt
index 510834864df..ab1a4292b5a 100644
--- a/forge-gui/res/cardsfolder/upcoming/forbidding_spirit.txt
+++ b/forge-gui/res/cardsfolder/upcoming/forbidding_spirit.txt
@@ -2,7 +2,7 @@ Name:Forbidding Spirit
ManaCost:1 W W
Types:Creature Spirit Cleric
PT:3/3
-T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ 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.
+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 | 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/haazda_officer.txt b/forge-gui/res/cardsfolder/upcoming/haazda_officer.txt
index abf54ae1465..1599c582e1a 100644
--- a/forge-gui/res/cardsfolder/upcoming/haazda_officer.txt
+++ b/forge-gui/res/cardsfolder/upcoming/haazda_officer.txt
@@ -2,7 +2,7 @@ Name:Haazda Officer
ManaCost:2 W
Types:Creature Human Soldier
PT:3/2
-T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Self | Execute$ TrigPump | TriggerDescription$ When CARDNAME enters the battlefield, target creature you control gets +1/+1 until end of turn.
+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/senate_griffin.txt b/forge-gui/res/cardsfolder/upcoming/senate_griffin.txt
index d0d603912aa..3b01e0b0c7a 100644
--- a/forge-gui/res/cardsfolder/upcoming/senate_griffin.txt
+++ b/forge-gui/res/cardsfolder/upcoming/senate_griffin.txt
@@ -3,6 +3,6 @@ ManaCost:2 UW UW
Types:Creature Griffin
PT:3/2
K:Flying
-T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Self | Execute$ DBScry | TriggerDescription$ When CARDNAME etners the battlefield, scry 1.
+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.
From 5e94c6c8d31e536ec346e634186be8b479cc1267 Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Mon, 28 Jan 2019 08:27:47 +0000
Subject: [PATCH 50/93] Update
forge-gui/res/cardsfolder/upcoming/forbidding_spirit.txt
---
forge-gui/res/cardsfolder/upcoming/forbidding_spirit.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/forge-gui/res/cardsfolder/upcoming/forbidding_spirit.txt b/forge-gui/res/cardsfolder/upcoming/forbidding_spirit.txt
index ab1a4292b5a..37885dd2d0e 100644
--- a/forge-gui/res/cardsfolder/upcoming/forbidding_spirit.txt
+++ b/forge-gui/res/cardsfolder/upcoming/forbidding_spirit.txt
@@ -4,5 +4,5 @@ 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 | 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.
+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.
From 763cb3d08e9943ca2f3e5bd6d27b13190c8695dd Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Mon, 28 Jan 2019 08:30:23 +0000
Subject: [PATCH 51/93] Update
forge-gui/res/cardsfolder/upcoming/shimmer_of_possibility.txt
---
forge-gui/res/cardsfolder/upcoming/shimmer_of_possibility.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/forge-gui/res/cardsfolder/upcoming/shimmer_of_possibility.txt b/forge-gui/res/cardsfolder/upcoming/shimmer_of_possibility.txt
index f554272ecf9..ab6ac18b898 100644
--- a/forge-gui/res/cardsfolder/upcoming/shimmer_of_possibility.txt
+++ b/forge-gui/res/cardsfolder/upcoming/shimmer_of_possibility.txt
@@ -1,5 +1,5 @@
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.
+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.
From f8bf8c7f28446947669ec4a0aaca38bb230dd22c Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Mon, 28 Jan 2019 08:41:26 +0000
Subject: [PATCH 52/93] Update
forge-gui/res/cardsfolder/upcoming/cindervines.txt
---
forge-gui/res/cardsfolder/upcoming/cindervines.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/forge-gui/res/cardsfolder/upcoming/cindervines.txt b/forge-gui/res/cardsfolder/upcoming/cindervines.txt
index 5d0b5133500..c323277874d 100644
--- a/forge-gui/res/cardsfolder/upcoming/cindervines.txt
+++ b/forge-gui/res/cardsfolder/upcoming/cindervines.txt
@@ -3,6 +3,6 @@ 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> | ValidTgt$ 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.
+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.
From 1ba1226661753124552fa0544afa0a17270c997e Mon Sep 17 00:00:00 2001
From: "Peter F. Patel-Schneider"
Date: Mon, 28 Jan 2019 05:53:38 -0500
Subject: [PATCH 53/93] refresh hand floating zone when hand is updated
---
.../src/main/java/forge/screens/match/CMatchUI.java | 1 +
1 file changed, 1 insertion(+)
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 1e12acb4e9e..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;
From 104aaa12558c70585d5eb502b0f9cae53f92a75b Mon Sep 17 00:00:00 2001
From: Agetian
Date: Mon, 28 Jan 2019 15:22:06 +0300
Subject: [PATCH 54/93] - Added puzzle PS_RNA0a (RNA Prerelease Puzzle)
---
forge-gui/res/puzzle/PS_RNA0a.pzl | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
create mode 100644 forge-gui/res/puzzle/PS_RNA0a.pzl
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
From 4b8584376dae6544051d2fcbe08f2d2e7f63ad2c Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Mon, 28 Jan 2019 17:27:48 +0000
Subject: [PATCH 55/93] Update
forge-gui/res/cardsfolder/upcoming/cavalcade_of_calamity.txt
---
forge-gui/res/cardsfolder/upcoming/cavalcade_of_calamity.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/forge-gui/res/cardsfolder/upcoming/cavalcade_of_calamity.txt b/forge-gui/res/cardsfolder/upcoming/cavalcade_of_calamity.txt
index a4e5f920e7e..90dc2bd6971 100644
--- a/forge-gui/res/cardsfolder/upcoming/cavalcade_of_calamity.txt
+++ b/forge-gui/res/cardsfolder/upcoming/cavalcade_of_calamity.txt
@@ -2,6 +2,6 @@ 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$ TriggeredAttacked | NumDmg$ 1
+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.
From dbe212065dfef7f1c5af54fdb24185309b3861b2 Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Mon, 28 Jan 2019 17:44:21 +0000
Subject: [PATCH 56/93] Update forge-gui/res/cardsfolder/r/raid_bombardment.txt
---
forge-gui/res/cardsfolder/r/raid_bombardment.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/forge-gui/res/cardsfolder/r/raid_bombardment.txt b/forge-gui/res/cardsfolder/r/raid_bombardment.txt
index 5cf328f2974..58fd1ccbdf2 100644
--- a/forge-gui/res/cardsfolder/r/raid_bombardment.txt
+++ b/forge-gui/res/cardsfolder/r/raid_bombardment.txt
@@ -2,6 +2,6 @@ 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 the player or planeswalker that creature is attacking
-SVar:TrigDamage:DB$DealDamage | Defined$ TriggeredAttacked | NumDmg$ 1
+SVar:TrigDamage:DB$DealDamage | Defined$ TriggeredDefender | NumDmg$ 1
SVar:PlayMain1:TRUE
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.
From e0b463c6ea55540ef0223f7ee29491d884950328 Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Mon, 28 Jan 2019 18:03:00 +0000
Subject: [PATCH 57/93] Update
forge-gui/res/cardsfolder/upcoming/cindervines.txt
---
forge-gui/res/cardsfolder/upcoming/cindervines.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/forge-gui/res/cardsfolder/upcoming/cindervines.txt b/forge-gui/res/cardsfolder/upcoming/cindervines.txt
index c323277874d..9025de38615 100644
--- a/forge-gui/res/cardsfolder/upcoming/cindervines.txt
+++ b/forge-gui/res/cardsfolder/upcoming/cindervines.txt
@@ -3,6 +3,6 @@ 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.
+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.
From 5bd9f324e024d770421171c72c01644b7e257ed2 Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Mon, 28 Jan 2019 18:09:35 +0000
Subject: [PATCH 58/93] Update
forge-gui/res/cardsfolder/upcoming/dovins_dismissal.txt
---
forge-gui/res/cardsfolder/upcoming/dovins_dismissal.txt | 7 +++++++
1 file changed, 7 insertions(+)
create mode 100644 forge-gui/res/cardsfolder/upcoming/dovins_dismissal.txt
diff --git a/forge-gui/res/cardsfolder/upcoming/dovins_dismissal.txt b/forge-gui/res/cardsfolder/upcoming/dovins_dismissal.txt
new file mode 100644
index 00000000000..603c0fa17af
--- /dev/null
+++ b/forge-gui/res/cardsfolder/upcoming/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.
From d8da15d8aef1259e536d7c30409945ca2716905f Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Mon, 28 Jan 2019 19:58:23 +0000
Subject: [PATCH 59/93] Update
forge-gui/res/cardsfolder/upcoming/dovin_architect_of_law.txt
---
.../cardsfolder/upcoming/dovin_architect_of_law.txt | 11 +++++++++++
1 file changed, 11 insertions(+)
create mode 100644 forge-gui/res/cardsfolder/upcoming/dovin_architect_of_law.txt
diff --git a/forge-gui/res/cardsfolder/upcoming/dovin_architect_of_law.txt b/forge-gui/res/cardsfolder/upcoming/dovin_architect_of_law.txt
new file mode 100644
index 00000000000..cd0a8f42060
--- /dev/null
+++ b/forge-gui/res/cardsfolder/upcoming/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.
From e13880c87e730f3a021dd400946525ebb9e120c1 Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Mon, 28 Jan 2019 20:18:07 +0000
Subject: [PATCH 60/93] Domri, City Smasher
---
.../res/cardsfolder/upcoming/domri_city_smasher.txt | 9 +++++++++
1 file changed, 9 insertions(+)
create mode 100644 forge-gui/res/cardsfolder/upcoming/domri_city_smasher.txt
diff --git a/forge-gui/res/cardsfolder/upcoming/domri_city_smasher.txt b/forge-gui/res/cardsfolder/upcoming/domri_city_smasher.txt
new file mode 100644
index 00000000000..f5563d10db9
--- /dev/null
+++ b/forge-gui/res/cardsfolder/upcoming/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.
From b3e1d96aff14a4222b6d41ede35384ecb170711c Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Mon, 28 Jan 2019 22:06:12 +0000
Subject: [PATCH 61/93] Upload New File
---
.../res/cardsfolder/upcoming/domri_chaos_bringer.txt | 10 ++++++++++
1 file changed, 10 insertions(+)
create mode 100644 forge-gui/res/cardsfolder/upcoming/domri_chaos_bringer.txt
diff --git a/forge-gui/res/cardsfolder/upcoming/domri_chaos_bringer.txt b/forge-gui/res/cardsfolder/upcoming/domri_chaos_bringer.txt
new file mode 100644
index 00000000000..74ee094865e
--- /dev/null
+++ b/forge-gui/res/cardsfolder/upcoming/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.”
From e52bcc6cdcae903a71e4747cc3f6e58df0fd1137 Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Mon, 28 Jan 2019 22:26:02 +0000
Subject: [PATCH 62/93] Update
forge-gui/res/cardsfolder/upcoming/dovins_automaton.txt
---
forge-gui/res/cardsfolder/upcoming/dovins_automaton.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/forge-gui/res/cardsfolder/upcoming/dovins_automaton.txt b/forge-gui/res/cardsfolder/upcoming/dovins_automaton.txt
index 73cdd072ab3..49eb272e363 100644
--- a/forge-gui/res/cardsfolder/upcoming/dovins_automaton.txt
+++ b/forge-gui/res/cardsfolder/upcoming/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.)
From e71ff26b8138b8fdc52cece0e7f605bd0ffc8614 Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Tue, 29 Jan 2019 00:35:26 +0000
Subject: [PATCH 63/93] Update
forge-gui/res/cardsfolder/upcoming/sphinx_of_foresight.txt
---
forge-gui/res/cardsfolder/upcoming/sphinx_of_foresight.txt | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/forge-gui/res/cardsfolder/upcoming/sphinx_of_foresight.txt b/forge-gui/res/cardsfolder/upcoming/sphinx_of_foresight.txt
index 99d8de1cd69..9efea7643c3 100644
--- a/forge-gui/res/cardsfolder/upcoming/sphinx_of_foresight.txt
+++ b/forge-gui/res/cardsfolder/upcoming/sphinx_of_foresight.txt
@@ -3,8 +3,11 @@ 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
+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
From 14629715a259cd179ad6a0ff138b830a7f328a92 Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Tue, 29 Jan 2019 03:22:44 +0000
Subject: [PATCH 64/93] Fix cost of spirit-making ability on Ethereal
Absolution
---
forge-gui/res/cardsfolder/upcoming/ethereal_absolution.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/forge-gui/res/cardsfolder/upcoming/ethereal_absolution.txt b/forge-gui/res/cardsfolder/upcoming/ethereal_absolution.txt
index 3c789a573ff..14171660a77 100644
--- a/forge-gui/res/cardsfolder/upcoming/ethereal_absolution.txt
+++ b/forge-gui/res/cardsfolder/upcoming/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
From 38ddca0acdb72858b2f400858b1610b2b0788e14 Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Tue, 29 Jan 2019 03:37:10 +0000
Subject: [PATCH 65/93] Fix Spectacle cost
---
forge-gui/res/cardsfolder/upcoming/blade_juggler.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/forge-gui/res/cardsfolder/upcoming/blade_juggler.txt b/forge-gui/res/cardsfolder/upcoming/blade_juggler.txt
index 9bfac79a21a..558fd7bbb09 100644
--- a/forge-gui/res/cardsfolder/upcoming/blade_juggler.txt
+++ b/forge-gui/res/cardsfolder/upcoming/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
From fc5b76fbb4bd2f999bfc9d54b7263dfaacf28192 Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Tue, 29 Jan 2019 03:41:59 +0000
Subject: [PATCH 66/93] Fix cast cost of Colossus
---
forge-gui/res/cardsfolder/upcoming/collision_colossus.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/forge-gui/res/cardsfolder/upcoming/collision_colossus.txt b/forge-gui/res/cardsfolder/upcoming/collision_colossus.txt
index c91059e34cf..c95838afd48 100644
--- a/forge-gui/res/cardsfolder/upcoming/collision_colossus.txt
+++ b/forge-gui/res/cardsfolder/upcoming/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.
From 1b47a2df87f4bf12d67a8002be8e46cac22825ed Mon Sep 17 00:00:00 2001
From: Chris H
Date: Mon, 28 Jan 2019 22:57:43 -0500
Subject: [PATCH 67/93] Migrate RNA to alpha folders
---
forge-gui/res/cardsfolder/{upcoming => a}/aeromunculus.txt | 0
forge-gui/res/cardsfolder/{upcoming => a}/amplifire.txt | 0
forge-gui/res/cardsfolder/{upcoming => a}/angel_of_grace.txt | 0
forge-gui/res/cardsfolder/{upcoming => a}/angelic_exaltation.txt | 0
forge-gui/res/cardsfolder/{upcoming => a}/applied_biomancy.txt | 0
forge-gui/res/cardsfolder/{upcoming => a}/archway_angel.txt | 0
.../res/cardsfolder/{upcoming => a}/arresters_admonition.txt | 0
forge-gui/res/cardsfolder/{upcoming => a}/arresters_zeal.txt | 0
.../res/cardsfolder/{upcoming => a}/awaken_the_erstwhile.txt | 0
forge-gui/res/cardsfolder/{upcoming => a}/axebane_beast.txt | 0
.../res/cardsfolder/{upcoming => a}/azorius_knight_arbiter.txt | 0
forge-gui/res/cardsfolder/{upcoming => a}/azorius_locket.txt | 0
forge-gui/res/cardsfolder/{upcoming => a}/azorius_skyguard.txt | 0
forge-gui/res/cardsfolder/{upcoming => b}/bankrupt_in_blood.txt | 0
forge-gui/res/cardsfolder/{upcoming => b}/basilica_bell_haunt.txt | 0
forge-gui/res/cardsfolder/{upcoming => b}/bedeck_bedazzle.txt | 0
forge-gui/res/cardsfolder/{upcoming => b}/bedevil.txt | 0
forge-gui/res/cardsfolder/{upcoming => b}/benthic_biomancer.txt | 0
forge-gui/res/cardsfolder/{upcoming => b}/biogenic_ooze.txt | 0
forge-gui/res/cardsfolder/{upcoming => b}/biogenic_upgrade.txt | 0
forge-gui/res/cardsfolder/{upcoming => b}/biomancers_familiar.txt | 0
forge-gui/res/cardsfolder/{upcoming => b}/blade_juggler.txt | 0
forge-gui/res/cardsfolder/{upcoming => b}/bladebrand.txt | 0
.../res/cardsfolder/{upcoming => b}/bloodmist_infiltrator.txt | 0
forge-gui/res/cardsfolder/{upcoming => b}/bolrac_clan_crusher.txt | 0
forge-gui/res/cardsfolder/{upcoming => b}/bring_to_trial.txt | 0
forge-gui/res/cardsfolder/{upcoming => b}/burn_bright.txt | 0
forge-gui/res/cardsfolder/{upcoming => b}/burning_tree_vandal.txt | 0
forge-gui/res/cardsfolder/{upcoming => c}/captive_audience.txt | 0
forge-gui/res/cardsfolder/{upcoming => c}/carnival_carnage.txt | 0
forge-gui/res/cardsfolder/{upcoming => c}/carrion_imp.txt | 0
forge-gui/res/cardsfolder/{upcoming => c}/catacomb_crocodile.txt | 0
.../res/cardsfolder/{upcoming => c}/cavalcade_of_calamity.txt | 0
forge-gui/res/cardsfolder/{upcoming => c}/charging_war_boar.txt | 0
forge-gui/res/cardsfolder/{upcoming => c}/chillbringer.txt | 0
forge-gui/res/cardsfolder/{upcoming => c}/cindervines.txt | 0
forge-gui/res/cardsfolder/{upcoming => c}/civic_stalwart.txt | 0
forge-gui/res/cardsfolder/{upcoming => c}/clamor_shaman.txt | 0
forge-gui/res/cardsfolder/{upcoming => c}/clan_guildmage.txt | 0
forge-gui/res/cardsfolder/{upcoming => c}/clear_the_mind.txt | 0
forge-gui/res/cardsfolder/{upcoming => c}/clear_the_stage.txt | 0
forge-gui/res/cardsfolder/{upcoming => c}/code_of_constraint.txt | 0
forge-gui/res/cardsfolder/{upcoming => c}/collision_colossus.txt | 0
forge-gui/res/cardsfolder/{upcoming => c}/combine_guildmage.txt | 0
forge-gui/res/cardsfolder/{upcoming => c}/consecrate_consume.txt | 0
forge-gui/res/cardsfolder/{upcoming => c}/consign_to_the_pit.txt | 0
forge-gui/res/cardsfolder/{upcoming => c}/coral_commando.txt | 0
.../res/cardsfolder/{upcoming => c}/cry_of_the_carnarium.txt | 0
forge-gui/res/cardsfolder/{upcoming => c}/cult_guildmage.txt | 0
forge-gui/res/cardsfolder/{upcoming => d}/dagger_caster.txt | 0
forge-gui/res/cardsfolder/{upcoming => d}/dead_revels.txt | 0
forge-gui/res/cardsfolder/{upcoming => d}/debtors_transport.txt | 0
forge-gui/res/cardsfolder/{upcoming => d}/deface.txt | 0
forge-gui/res/cardsfolder/{upcoming => d}/depose_deploy.txt | 0
forge-gui/res/cardsfolder/{upcoming => d}/deputy_of_detention.txt | 0
forge-gui/res/cardsfolder/{upcoming => d}/domri_chaos_bringer.txt | 0
forge-gui/res/cardsfolder/{upcoming => d}/domri_city_smasher.txt | 0
forge-gui/res/cardsfolder/{upcoming => d}/domris_nodorog.txt | 0
.../res/cardsfolder/{upcoming => d}/dovin_architect_of_law.txt | 0
forge-gui/res/cardsfolder/{upcoming => d}/dovin_grand_arbiter.txt | 0
forge-gui/res/cardsfolder/{upcoming => d}/dovins_acuity.txt | 0
forge-gui/res/cardsfolder/{upcoming => d}/dovins_automaton.txt | 0
forge-gui/res/cardsfolder/{upcoming => d}/dovins_dismissal.txt | 0
forge-gui/res/cardsfolder/{upcoming => d}/drill_bit.txt | 0
forge-gui/res/cardsfolder/{upcoming => e}/electrodominance.txt | 0
forge-gui/res/cardsfolder/{upcoming => e}/elite_arrester.txt | 0
forge-gui/res/cardsfolder/{upcoming => e}/emergency_powers.txt | 0
.../res/cardsfolder/{upcoming => e}/end_raze_forerunners.txt | 0
forge-gui/res/cardsfolder/{upcoming => e}/enraged_ceratok.txt | 0
forge-gui/res/cardsfolder/{upcoming => e}/essence_capture.txt | 0
forge-gui/res/cardsfolder/{upcoming => e}/ethereal_absolution.txt | 0
forge-gui/res/cardsfolder/{upcoming => e}/expose_to_daylight.txt | 0
forge-gui/res/cardsfolder/{upcoming => e}/eyes_everywhere.txt | 0
forge-gui/res/cardsfolder/{upcoming => f}/faerie_duelist.txt | 0
forge-gui/res/cardsfolder/{upcoming => f}/feral_maaka.txt | 0
forge-gui/res/cardsfolder/{upcoming => f}/final_payment.txt | 0
forge-gui/res/cardsfolder/{upcoming => f}/fireblade_artist.txt | 0
.../res/cardsfolder/{upcoming => f}/flames_of_the_raze_boar.txt | 0
forge-gui/res/cardsfolder/{upcoming => f}/font_of_agonies.txt | 0
forge-gui/res/cardsfolder/{upcoming => f}/footlight_fiend.txt | 0
forge-gui/res/cardsfolder/{upcoming => f}/forbidding_spirit.txt | 0
forge-gui/res/cardsfolder/{upcoming => f}/frenzied_arynx.txt | 0
forge-gui/res/cardsfolder/{upcoming => f}/frilled_mystic.txt | 0
forge-gui/res/cardsfolder/{upcoming => g}/galloping_lizrog.txt | 0
forge-gui/res/cardsfolder/{upcoming => g}/gate_colossus.txt | 0
forge-gui/res/cardsfolder/{upcoming => g}/gatebreaker_ram.txt | 0
forge-gui/res/cardsfolder/{upcoming => g}/gates_ablaze.txt | 0
forge-gui/res/cardsfolder/{upcoming => g}/gateway_sneak.txt | 0
forge-gui/res/cardsfolder/{upcoming => g}/get_the_point.txt | 0
forge-gui/res/cardsfolder/{upcoming => g}/ghor_clan_wrecker.txt | 0
.../res/cardsfolder/{upcoming => g}/glass_of_the_guildpact.txt | 0
forge-gui/res/cardsfolder/{upcoming => g}/goblin_gathering.txt | 0
forge-gui/res/cardsfolder/{upcoming => g}/grasping_thrull.txt | 0
forge-gui/res/cardsfolder/{upcoming => g}/gravel_hide_goblin.txt | 0
forge-gui/res/cardsfolder/{upcoming => g}/grotesque_demise.txt | 0
.../res/cardsfolder/{upcoming => g}/growth_chamber_guardian.txt | 0
forge-gui/res/cardsfolder/{upcoming => g}/growth_spiral.txt | 0
forge-gui/res/cardsfolder/{upcoming => g}/gruul_beastmaster.txt | 0
forge-gui/res/cardsfolder/{upcoming => g}/gruul_locket.txt | 0
forge-gui/res/cardsfolder/{upcoming => g}/gruul_spellbreaker.txt | 0
forge-gui/res/cardsfolder/{upcoming => g}/guardian_project.txt | 0
forge-gui/res/cardsfolder/{upcoming => g}/gutterbones.txt | 0
forge-gui/res/cardsfolder/{upcoming => g}/gyre_engineer.txt | 0
forge-gui/res/cardsfolder/{upcoming => h}/haazda_officer.txt | 0
forge-gui/res/cardsfolder/{upcoming => h}/hackrobat.txt | 0
.../res/cardsfolder/{upcoming => h}/hero_of_precinct_one.txt | 0
forge-gui/res/cardsfolder/{upcoming => h}/high_alert.txt | 0
forge-gui/res/cardsfolder/{upcoming => h}/humongulus.txt | 0
forge-gui/res/cardsfolder/{upcoming => h}/hydroid_krasis.txt | 0
.../res/cardsfolder/{upcoming => i}/ill_gotten_inheritance.txt | 0
forge-gui/res/cardsfolder/{upcoming => i}/immolation_shaman.txt | 0
forge-gui/res/cardsfolder/{upcoming => i}/impassioned_orator.txt | 0
forge-gui/res/cardsfolder/{upcoming => i}/imperious_oligarch.txt | 0
forge-gui/res/cardsfolder/{upcoming => i}/incubation_druid.txt | 0
.../res/cardsfolder/{upcoming => i}/incubation_incongruity.txt | 0
.../res/cardsfolder/{upcoming => j}/judith_the_scourge_diva.txt | 0
forge-gui/res/cardsfolder/{upcoming => j}/justiciars_portal.txt | 0
forge-gui/res/cardsfolder/{upcoming => k}/kaya_orzhov_usurper.txt | 0
forge-gui/res/cardsfolder/{upcoming => k}/kayas_wrath.txt | 0
forge-gui/res/cardsfolder/{upcoming => k}/knight_of_sorrows.txt | 0
.../res/cardsfolder/{upcoming => k}/knight_of_the_last_breath.txt | 0
.../res/cardsfolder/{upcoming => l}/lavinia_azorius_renegade.txt | 0
forge-gui/res/cardsfolder/{upcoming => l}/lawmages_binding.txt | 0
forge-gui/res/cardsfolder/{upcoming => l}/light_up_the_stage.txt | 0
.../res/cardsfolder/{upcoming => l}/lumbering_battlement.txt | 0
forge-gui/res/cardsfolder/{upcoming => m}/macabre_mockery.txt | 0
forge-gui/res/cardsfolder/{upcoming => m}/mass_manipulation.txt | 0
forge-gui/res/cardsfolder/{upcoming => m}/mesmerizing_benthid.txt | 0
.../res/cardsfolder/{upcoming => m}/ministrant_of_obligation.txt | 0
forge-gui/res/cardsfolder/{upcoming => m}/mirror_march.txt | 0
.../res/cardsfolder/{upcoming => n}/nikya_of_the_old_ways.txt | 0
forge-gui/res/cardsfolder/{upcoming => n}/noxious_groodion.txt | 0
forge-gui/res/cardsfolder/{upcoming => o}/open_the_gates.txt | 0
forge-gui/res/cardsfolder/{upcoming => o}/orzhov_enforcer.txt | 0
forge-gui/res/cardsfolder/{upcoming => o}/orzhov_locket.txt | 0
forge-gui/res/cardsfolder/{upcoming => o}/orzhov_racketeers.txt | 0
.../res/cardsfolder/{upcoming => p}/persistent_petitioners.txt | 0
forge-gui/res/cardsfolder/{upcoming => p}/pestilent_spirit.txt | 0
forge-gui/res/cardsfolder/{upcoming => p}/pitiless_pontiff.txt | 0
forge-gui/res/cardsfolder/{upcoming => p}/plague_wight.txt | 0
forge-gui/res/cardsfolder/{upcoming => p}/plaza_of_harmony.txt | 0
.../res/cardsfolder/{upcoming => p}/precognitive_perception.txt | 0
.../res/cardsfolder/{upcoming => p}/priest_of_forgotten_gods.txt | 0
.../res/cardsfolder/{upcoming => p}/prime_speaker_vannifar.txt | 0
forge-gui/res/cardsfolder/{upcoming => p}/prowling_caracal.txt | 0
forge-gui/res/cardsfolder/{upcoming => p}/prying_eyes.txt | 0
forge-gui/res/cardsfolder/{upcoming => p}/pteramander.txt | 0
forge-gui/res/cardsfolder/{upcoming => q}/quench.txt | 0
forge-gui/res/cardsfolder/{upcoming => r}/rafter_demon.txt | 0
forge-gui/res/cardsfolder/{upcoming => r}/ragefire.txt | 0
forge-gui/res/cardsfolder/{upcoming => r}/rakdos_firewheeler.txt | 0
forge-gui/res/cardsfolder/{upcoming => r}/rakdos_locket.txt | 0
forge-gui/res/cardsfolder/{upcoming => r}/rakdos_roustabout.txt | 0
.../res/cardsfolder/{upcoming => r}/rakdos_the_showstopper.txt | 0
forge-gui/res/cardsfolder/{upcoming => r}/rakdos_trumpeter.txt | 0
forge-gui/res/cardsfolder/{upcoming => r}/rally_to_battle.txt | 0
.../res/cardsfolder/{upcoming => r}/rampage_of_the_clans.txt | 0
forge-gui/res/cardsfolder/{upcoming => r}/rampaging_rendhorn.txt | 0
forge-gui/res/cardsfolder/{upcoming => r}/ravager_wurm.txt | 0
forge-gui/res/cardsfolder/{upcoming => r}/regenesis.txt | 0
forge-gui/res/cardsfolder/{upcoming => r}/repudiate_replicate.txt | 0
forge-gui/res/cardsfolder/{upcoming => r}/resolute_watchdog.txt | 0
forge-gui/res/cardsfolder/{upcoming => r}/revival_revenge.txt | 0
forge-gui/res/cardsfolder/{upcoming => r}/rhythm_of_the_wild.txt | 0
forge-gui/res/cardsfolder/{upcoming => r}/rix_maadi_reveler.txt | 0
forge-gui/res/cardsfolder/{upcoming => r}/rubble_reading.txt | 0
forge-gui/res/cardsfolder/{upcoming => r}/rubble_slinger.txt | 0
forge-gui/res/cardsfolder/{upcoming => r}/rubblebelt_recluse.txt | 0
forge-gui/res/cardsfolder/{upcoming => r}/rubblebelt_runner.txt | 0
forge-gui/res/cardsfolder/{upcoming => r}/rumbling_ruin.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/sages_row_savant.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/sagittars_volley.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/saruli_caretaker.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/sauroform_hybrid.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/savage_smash.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/scorchmark.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/screaming_shield.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/scuttlegator.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/senate_courier.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/senate_griffin.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/senate_guildmage.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/sentinels_mark.txt | 0
.../res/cardsfolder/{upcoming => s}/seraph_of_the_scales.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/sharktocrab.txt | 0
.../res/cardsfolder/{upcoming => s}/shimmer_of_possibility.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/silhana_wayfinder.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/simic_ascendancy.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/simic_locket.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/skarrgan_hellkite.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/skatewing_spy.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/skewer_the_critics.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/skitter_eel.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/sky_tether.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/slimebind.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/smelt_ward_ignus.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/smothering_tithe.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/spawn_of_mayhem.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/spear_spewer.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/sphinx_of_foresight.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/sphinx_of_new_prahv.txt | 0
.../res/cardsfolder/{upcoming => s}/sphinx_of_the_guildpact.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/sphinxs_insight.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/spikewheel_acrobat.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/spire_mangler.txt | 0
.../res/cardsfolder/{upcoming => s}/spirit_of_the_spires.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/steeple_creeper.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/stony_strength.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/storm_strike.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/summary_judgment.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/sunder_shaman.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/swirling_torrent.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/sylvan_brushstrider.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/syndicate_guildmage.txt | 0
forge-gui/res/cardsfolder/{upcoming => s}/syndicate_messenger.txt | 0
.../res/cardsfolder/{upcoming => t}/tenth_district_veteran.txt | 0
forge-gui/res/cardsfolder/{upcoming => t}/territorial_boar.txt | 0
forge-gui/res/cardsfolder/{upcoming => t}/teysa_karlov.txt | 0
.../res/cardsfolder/{upcoming => t}/the_haunt_of_hightower.txt | 0
forge-gui/res/cardsfolder/{upcoming => t}/theater_of_horrors.txt | 0
forge-gui/res/cardsfolder/{upcoming => t}/thirsting_shade.txt | 0
forge-gui/res/cardsfolder/{upcoming => t}/thought_collapse.txt | 0
forge-gui/res/cardsfolder/{upcoming => t}/thrash_threat.txt | 0
forge-gui/res/cardsfolder/{upcoming => t}/tin_street_dodger.txt | 0
forge-gui/res/cardsfolder/{upcoming => t}/titanic_brawl.txt | 0
forge-gui/res/cardsfolder/{upcoming => t}/tithe_taker.txt | 0
.../res/cardsfolder/{upcoming => t}/tome_of_the_guildpact.txt | 0
forge-gui/res/cardsfolder/{upcoming => t}/trollbred_guardian.txt | 0
forge-gui/res/cardsfolder/{upcoming => t}/twilight_panther.txt | 0
.../res/cardsfolder/{upcoming => u}/unbreakable_formation.txt | 0
forge-gui/res/cardsfolder/{upcoming => u}/undercity_scavenger.txt | 0
forge-gui/res/cardsfolder/{upcoming => u}/undercitys_embrace.txt | 0
forge-gui/res/cardsfolder/{upcoming => v}/verity_circle.txt | 0
forge-gui/res/cardsfolder/{upcoming => v}/vindictive_vampire.txt | 0
forge-gui/res/cardsfolder/{upcoming => v}/vizkopa_vampire.txt | 0
.../res/cardsfolder/{upcoming => w}/wall_of_lost_thoughts.txt | 0
forge-gui/res/cardsfolder/{upcoming => w}/warrant_warden.txt | 0
forge-gui/res/cardsfolder/{upcoming => w}/watchful_giant.txt | 0
.../res/cardsfolder/{upcoming => w}/wilderness_reclamation.txt | 0
forge-gui/res/cardsfolder/{upcoming => w}/windstorm_drake.txt | 0
forge-gui/res/cardsfolder/{upcoming => w}/wrecking_beast.txt | 0
.../res/cardsfolder/{upcoming => z}/zegana_utopian_speaker.txt | 0
forge-gui/res/cardsfolder/{upcoming => z}/zhur_taa_goblin.txt | 0
242 files changed, 0 insertions(+), 0 deletions(-)
rename forge-gui/res/cardsfolder/{upcoming => a}/aeromunculus.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => a}/amplifire.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => a}/angel_of_grace.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => a}/angelic_exaltation.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => a}/applied_biomancy.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => a}/archway_angel.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => a}/arresters_admonition.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => a}/arresters_zeal.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => a}/awaken_the_erstwhile.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => a}/axebane_beast.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => a}/azorius_knight_arbiter.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => a}/azorius_locket.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => a}/azorius_skyguard.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => b}/bankrupt_in_blood.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => b}/basilica_bell_haunt.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => b}/bedeck_bedazzle.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => b}/bedevil.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => b}/benthic_biomancer.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => b}/biogenic_ooze.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => b}/biogenic_upgrade.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => b}/biomancers_familiar.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => b}/blade_juggler.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => b}/bladebrand.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => b}/bloodmist_infiltrator.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => b}/bolrac_clan_crusher.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => b}/bring_to_trial.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => b}/burn_bright.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => b}/burning_tree_vandal.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => c}/captive_audience.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => c}/carnival_carnage.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => c}/carrion_imp.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => c}/catacomb_crocodile.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => c}/cavalcade_of_calamity.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => c}/charging_war_boar.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => c}/chillbringer.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => c}/cindervines.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => c}/civic_stalwart.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => c}/clamor_shaman.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => c}/clan_guildmage.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => c}/clear_the_mind.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => c}/clear_the_stage.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => c}/code_of_constraint.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => c}/collision_colossus.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => c}/combine_guildmage.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => c}/consecrate_consume.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => c}/consign_to_the_pit.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => c}/coral_commando.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => c}/cry_of_the_carnarium.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => c}/cult_guildmage.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => d}/dagger_caster.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => d}/dead_revels.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => d}/debtors_transport.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => d}/deface.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => d}/depose_deploy.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => d}/deputy_of_detention.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => d}/domri_chaos_bringer.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => d}/domri_city_smasher.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => d}/domris_nodorog.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => d}/dovin_architect_of_law.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => d}/dovin_grand_arbiter.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => d}/dovins_acuity.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => d}/dovins_automaton.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => d}/dovins_dismissal.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => d}/drill_bit.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => e}/electrodominance.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => e}/elite_arrester.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => e}/emergency_powers.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => e}/end_raze_forerunners.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => e}/enraged_ceratok.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => e}/essence_capture.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => e}/ethereal_absolution.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => e}/expose_to_daylight.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => e}/eyes_everywhere.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => f}/faerie_duelist.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => f}/feral_maaka.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => f}/final_payment.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => f}/fireblade_artist.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => f}/flames_of_the_raze_boar.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => f}/font_of_agonies.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => f}/footlight_fiend.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => f}/forbidding_spirit.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => f}/frenzied_arynx.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => f}/frilled_mystic.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => g}/galloping_lizrog.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => g}/gate_colossus.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => g}/gatebreaker_ram.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => g}/gates_ablaze.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => g}/gateway_sneak.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => g}/get_the_point.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => g}/ghor_clan_wrecker.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => g}/glass_of_the_guildpact.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => g}/goblin_gathering.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => g}/grasping_thrull.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => g}/gravel_hide_goblin.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => g}/grotesque_demise.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => g}/growth_chamber_guardian.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => g}/growth_spiral.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => g}/gruul_beastmaster.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => g}/gruul_locket.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => g}/gruul_spellbreaker.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => g}/guardian_project.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => g}/gutterbones.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => g}/gyre_engineer.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => h}/haazda_officer.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => h}/hackrobat.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => h}/hero_of_precinct_one.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => h}/high_alert.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => h}/humongulus.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => h}/hydroid_krasis.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => i}/ill_gotten_inheritance.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => i}/immolation_shaman.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => i}/impassioned_orator.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => i}/imperious_oligarch.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => i}/incubation_druid.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => i}/incubation_incongruity.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => j}/judith_the_scourge_diva.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => j}/justiciars_portal.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => k}/kaya_orzhov_usurper.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => k}/kayas_wrath.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => k}/knight_of_sorrows.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => k}/knight_of_the_last_breath.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => l}/lavinia_azorius_renegade.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => l}/lawmages_binding.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => l}/light_up_the_stage.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => l}/lumbering_battlement.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => m}/macabre_mockery.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => m}/mass_manipulation.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => m}/mesmerizing_benthid.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => m}/ministrant_of_obligation.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => m}/mirror_march.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => n}/nikya_of_the_old_ways.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => n}/noxious_groodion.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => o}/open_the_gates.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => o}/orzhov_enforcer.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => o}/orzhov_locket.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => o}/orzhov_racketeers.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => p}/persistent_petitioners.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => p}/pestilent_spirit.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => p}/pitiless_pontiff.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => p}/plague_wight.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => p}/plaza_of_harmony.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => p}/precognitive_perception.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => p}/priest_of_forgotten_gods.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => p}/prime_speaker_vannifar.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => p}/prowling_caracal.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => p}/prying_eyes.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => p}/pteramander.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => q}/quench.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => r}/rafter_demon.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => r}/ragefire.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => r}/rakdos_firewheeler.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => r}/rakdos_locket.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => r}/rakdos_roustabout.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => r}/rakdos_the_showstopper.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => r}/rakdos_trumpeter.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => r}/rally_to_battle.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => r}/rampage_of_the_clans.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => r}/rampaging_rendhorn.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => r}/ravager_wurm.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => r}/regenesis.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => r}/repudiate_replicate.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => r}/resolute_watchdog.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => r}/revival_revenge.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => r}/rhythm_of_the_wild.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => r}/rix_maadi_reveler.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => r}/rubble_reading.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => r}/rubble_slinger.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => r}/rubblebelt_recluse.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => r}/rubblebelt_runner.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => r}/rumbling_ruin.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/sages_row_savant.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/sagittars_volley.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/saruli_caretaker.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/sauroform_hybrid.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/savage_smash.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/scorchmark.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/screaming_shield.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/scuttlegator.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/senate_courier.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/senate_griffin.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/senate_guildmage.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/sentinels_mark.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/seraph_of_the_scales.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/sharktocrab.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/shimmer_of_possibility.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/silhana_wayfinder.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/simic_ascendancy.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/simic_locket.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/skarrgan_hellkite.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/skatewing_spy.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/skewer_the_critics.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/skitter_eel.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/sky_tether.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/slimebind.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/smelt_ward_ignus.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/smothering_tithe.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/spawn_of_mayhem.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/spear_spewer.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/sphinx_of_foresight.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/sphinx_of_new_prahv.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/sphinx_of_the_guildpact.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/sphinxs_insight.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/spikewheel_acrobat.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/spire_mangler.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/spirit_of_the_spires.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/steeple_creeper.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/stony_strength.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/storm_strike.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/summary_judgment.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/sunder_shaman.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/swirling_torrent.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/sylvan_brushstrider.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/syndicate_guildmage.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => s}/syndicate_messenger.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => t}/tenth_district_veteran.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => t}/territorial_boar.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => t}/teysa_karlov.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => t}/the_haunt_of_hightower.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => t}/theater_of_horrors.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => t}/thirsting_shade.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => t}/thought_collapse.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => t}/thrash_threat.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => t}/tin_street_dodger.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => t}/titanic_brawl.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => t}/tithe_taker.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => t}/tome_of_the_guildpact.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => t}/trollbred_guardian.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => t}/twilight_panther.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => u}/unbreakable_formation.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => u}/undercity_scavenger.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => u}/undercitys_embrace.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => v}/verity_circle.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => v}/vindictive_vampire.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => v}/vizkopa_vampire.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => w}/wall_of_lost_thoughts.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => w}/warrant_warden.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => w}/watchful_giant.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => w}/wilderness_reclamation.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => w}/windstorm_drake.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => w}/wrecking_beast.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => z}/zegana_utopian_speaker.txt (100%)
rename forge-gui/res/cardsfolder/{upcoming => z}/zhur_taa_goblin.txt (100%)
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 100%
rename from forge-gui/res/cardsfolder/upcoming/amplifire.txt
rename to forge-gui/res/cardsfolder/a/amplifire.txt
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 100%
rename from forge-gui/res/cardsfolder/upcoming/blade_juggler.txt
rename to forge-gui/res/cardsfolder/b/blade_juggler.txt
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 100%
rename from forge-gui/res/cardsfolder/upcoming/bloodmist_infiltrator.txt
rename to forge-gui/res/cardsfolder/b/bloodmist_infiltrator.txt
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/upcoming/cavalcade_of_calamity.txt b/forge-gui/res/cardsfolder/c/cavalcade_of_calamity.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/cavalcade_of_calamity.txt
rename to forge-gui/res/cardsfolder/c/cavalcade_of_calamity.txt
diff --git a/forge-gui/res/cardsfolder/upcoming/charging_war_boar.txt b/forge-gui/res/cardsfolder/c/charging_war_boar.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/charging_war_boar.txt
rename to forge-gui/res/cardsfolder/c/charging_war_boar.txt
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/upcoming/cindervines.txt b/forge-gui/res/cardsfolder/c/cindervines.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/cindervines.txt
rename to forge-gui/res/cardsfolder/c/cindervines.txt
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/upcoming/clamor_shaman.txt b/forge-gui/res/cardsfolder/c/clamor_shaman.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/clamor_shaman.txt
rename to forge-gui/res/cardsfolder/c/clamor_shaman.txt
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 100%
rename from forge-gui/res/cardsfolder/upcoming/code_of_constraint.txt
rename to forge-gui/res/cardsfolder/c/code_of_constraint.txt
diff --git a/forge-gui/res/cardsfolder/upcoming/collision_colossus.txt b/forge-gui/res/cardsfolder/c/collision_colossus.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/collision_colossus.txt
rename to forge-gui/res/cardsfolder/c/collision_colossus.txt
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/upcoming/consecrate_consume.txt b/forge-gui/res/cardsfolder/c/consecrate_consume.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/consecrate_consume.txt
rename to forge-gui/res/cardsfolder/c/consecrate_consume.txt
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/upcoming/deputy_of_detention.txt b/forge-gui/res/cardsfolder/d/deputy_of_detention.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/deputy_of_detention.txt
rename to forge-gui/res/cardsfolder/d/deputy_of_detention.txt
diff --git a/forge-gui/res/cardsfolder/upcoming/domri_chaos_bringer.txt b/forge-gui/res/cardsfolder/d/domri_chaos_bringer.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/domri_chaos_bringer.txt
rename to forge-gui/res/cardsfolder/d/domri_chaos_bringer.txt
diff --git a/forge-gui/res/cardsfolder/upcoming/domri_city_smasher.txt b/forge-gui/res/cardsfolder/d/domri_city_smasher.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/domri_city_smasher.txt
rename to forge-gui/res/cardsfolder/d/domri_city_smasher.txt
diff --git a/forge-gui/res/cardsfolder/upcoming/domris_nodorog.txt b/forge-gui/res/cardsfolder/d/domris_nodorog.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/domris_nodorog.txt
rename to forge-gui/res/cardsfolder/d/domris_nodorog.txt
diff --git a/forge-gui/res/cardsfolder/upcoming/dovin_architect_of_law.txt b/forge-gui/res/cardsfolder/d/dovin_architect_of_law.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/dovin_architect_of_law.txt
rename to forge-gui/res/cardsfolder/d/dovin_architect_of_law.txt
diff --git a/forge-gui/res/cardsfolder/upcoming/dovin_grand_arbiter.txt b/forge-gui/res/cardsfolder/d/dovin_grand_arbiter.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/dovin_grand_arbiter.txt
rename to forge-gui/res/cardsfolder/d/dovin_grand_arbiter.txt
diff --git a/forge-gui/res/cardsfolder/upcoming/dovins_acuity.txt b/forge-gui/res/cardsfolder/d/dovins_acuity.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/dovins_acuity.txt
rename to forge-gui/res/cardsfolder/d/dovins_acuity.txt
diff --git a/forge-gui/res/cardsfolder/upcoming/dovins_automaton.txt b/forge-gui/res/cardsfolder/d/dovins_automaton.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/dovins_automaton.txt
rename to forge-gui/res/cardsfolder/d/dovins_automaton.txt
diff --git a/forge-gui/res/cardsfolder/upcoming/dovins_dismissal.txt b/forge-gui/res/cardsfolder/d/dovins_dismissal.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/dovins_dismissal.txt
rename to forge-gui/res/cardsfolder/d/dovins_dismissal.txt
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/upcoming/elite_arrester.txt b/forge-gui/res/cardsfolder/e/elite_arrester.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/elite_arrester.txt
rename to forge-gui/res/cardsfolder/e/elite_arrester.txt
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 100%
rename from forge-gui/res/cardsfolder/upcoming/ethereal_absolution.txt
rename to forge-gui/res/cardsfolder/e/ethereal_absolution.txt
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 100%
rename from forge-gui/res/cardsfolder/upcoming/final_payment.txt
rename to forge-gui/res/cardsfolder/f/final_payment.txt
diff --git a/forge-gui/res/cardsfolder/upcoming/fireblade_artist.txt b/forge-gui/res/cardsfolder/f/fireblade_artist.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/fireblade_artist.txt
rename to forge-gui/res/cardsfolder/f/fireblade_artist.txt
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/upcoming/footlight_fiend.txt b/forge-gui/res/cardsfolder/f/footlight_fiend.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/footlight_fiend.txt
rename to forge-gui/res/cardsfolder/f/footlight_fiend.txt
diff --git a/forge-gui/res/cardsfolder/upcoming/forbidding_spirit.txt b/forge-gui/res/cardsfolder/f/forbidding_spirit.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/forbidding_spirit.txt
rename to forge-gui/res/cardsfolder/f/forbidding_spirit.txt
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/upcoming/get_the_point.txt b/forge-gui/res/cardsfolder/g/get_the_point.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/get_the_point.txt
rename to forge-gui/res/cardsfolder/g/get_the_point.txt
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/upcoming/gutterbones.txt b/forge-gui/res/cardsfolder/g/gutterbones.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/gutterbones.txt
rename to forge-gui/res/cardsfolder/g/gutterbones.txt
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/upcoming/haazda_officer.txt b/forge-gui/res/cardsfolder/h/haazda_officer.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/haazda_officer.txt
rename to forge-gui/res/cardsfolder/h/haazda_officer.txt
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 100%
rename from forge-gui/res/cardsfolder/upcoming/ill_gotten_inheritance.txt
rename to forge-gui/res/cardsfolder/i/ill_gotten_inheritance.txt
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 100%
rename from forge-gui/res/cardsfolder/upcoming/incubation_incongruity.txt
rename to forge-gui/res/cardsfolder/i/incubation_incongruity.txt
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/upcoming/lawmages_binding.txt b/forge-gui/res/cardsfolder/l/lawmages_binding.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/lawmages_binding.txt
rename to forge-gui/res/cardsfolder/l/lawmages_binding.txt
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/upcoming/lumbering_battlement.txt b/forge-gui/res/cardsfolder/l/lumbering_battlement.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/lumbering_battlement.txt
rename to forge-gui/res/cardsfolder/l/lumbering_battlement.txt
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 100%
rename from forge-gui/res/cardsfolder/upcoming/mirror_march.txt
rename to forge-gui/res/cardsfolder/m/mirror_march.txt
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/upcoming/precognitive_perception.txt b/forge-gui/res/cardsfolder/p/precognitive_perception.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/precognitive_perception.txt
rename to forge-gui/res/cardsfolder/p/precognitive_perception.txt
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/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/upcoming/rix_maadi_reveler.txt b/forge-gui/res/cardsfolder/r/rix_maadi_reveler.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/rix_maadi_reveler.txt
rename to forge-gui/res/cardsfolder/r/rix_maadi_reveler.txt
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/upcoming/rubble_slinger.txt b/forge-gui/res/cardsfolder/r/rubble_slinger.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/rubble_slinger.txt
rename to forge-gui/res/cardsfolder/r/rubble_slinger.txt
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/upcoming/rubblebelt_runner.txt b/forge-gui/res/cardsfolder/r/rubblebelt_runner.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/rubblebelt_runner.txt
rename to forge-gui/res/cardsfolder/r/rubblebelt_runner.txt
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/upcoming/screaming_shield.txt b/forge-gui/res/cardsfolder/s/screaming_shield.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/screaming_shield.txt
rename to forge-gui/res/cardsfolder/s/screaming_shield.txt
diff --git a/forge-gui/res/cardsfolder/upcoming/scuttlegator.txt b/forge-gui/res/cardsfolder/s/scuttlegator.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/scuttlegator.txt
rename to forge-gui/res/cardsfolder/s/scuttlegator.txt
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/upcoming/senate_griffin.txt b/forge-gui/res/cardsfolder/s/senate_griffin.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/senate_griffin.txt
rename to forge-gui/res/cardsfolder/s/senate_griffin.txt
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 100%
rename from forge-gui/res/cardsfolder/upcoming/sentinels_mark.txt
rename to forge-gui/res/cardsfolder/s/sentinels_mark.txt
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/upcoming/shimmer_of_possibility.txt b/forge-gui/res/cardsfolder/s/shimmer_of_possibility.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/shimmer_of_possibility.txt
rename to forge-gui/res/cardsfolder/s/shimmer_of_possibility.txt
diff --git a/forge-gui/res/cardsfolder/upcoming/silhana_wayfinder.txt b/forge-gui/res/cardsfolder/s/silhana_wayfinder.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/silhana_wayfinder.txt
rename to forge-gui/res/cardsfolder/s/silhana_wayfinder.txt
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 100%
rename from forge-gui/res/cardsfolder/upcoming/simic_locket.txt
rename to forge-gui/res/cardsfolder/s/simic_locket.txt
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 100%
rename from forge-gui/res/cardsfolder/upcoming/smelt_ward_ignus.txt
rename to forge-gui/res/cardsfolder/s/smelt_ward_ignus.txt
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 100%
rename from forge-gui/res/cardsfolder/upcoming/spawn_of_mayhem.txt
rename to forge-gui/res/cardsfolder/s/spawn_of_mayhem.txt
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/upcoming/sphinx_of_foresight.txt b/forge-gui/res/cardsfolder/s/sphinx_of_foresight.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/sphinx_of_foresight.txt
rename to forge-gui/res/cardsfolder/s/sphinx_of_foresight.txt
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/upcoming/summary_judgment.txt b/forge-gui/res/cardsfolder/s/summary_judgment.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/summary_judgment.txt
rename to forge-gui/res/cardsfolder/s/summary_judgment.txt
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/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 100%
rename from forge-gui/res/cardsfolder/upcoming/undercitys_embrace.txt
rename to forge-gui/res/cardsfolder/u/undercitys_embrace.txt
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/upcoming/vizkopa_vampire.txt b/forge-gui/res/cardsfolder/v/vizkopa_vampire.txt
similarity index 100%
rename from forge-gui/res/cardsfolder/upcoming/vizkopa_vampire.txt
rename to forge-gui/res/cardsfolder/v/vizkopa_vampire.txt
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
From b0ee2cedffbd0f255190af1360fc33c2e55bfe76 Mon Sep 17 00:00:00 2001
From: Agetian
Date: Tue, 29 Jan 2019 08:11:50 +0300
Subject: [PATCH 68/93] - Added RNA planeswalker decks to quest mode precons.
---
.../res/quest/precons/Domri, City Smasher.dck | 33 +++++++++++++++++++
.../quest/precons/Dovin, Architect of Law.dck | 33 +++++++++++++++++++
2 files changed, 66 insertions(+)
create mode 100644 forge-gui/res/quest/precons/Domri, City Smasher.dck
create mode 100644 forge-gui/res/quest/precons/Dovin, Architect of Law.dck
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
From 1ecd1a8340356408813e64cf1d8391d74e7a7d89 Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Tue, 29 Jan 2019 05:31:58 +0000
Subject: [PATCH 69/93] Fix lifelink trigger on Sentinel's Mark
---
forge-gui/res/cardsfolder/s/sentinels_mark.txt | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/forge-gui/res/cardsfolder/s/sentinels_mark.txt b/forge-gui/res/cardsfolder/s/sentinels_mark.txt
index 5a6c80a41b2..db9d0ffe5e8 100644
--- a/forge-gui/res/cardsfolder/s/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,Main2 | TriggerDescription$ When CARDNAME enters the battlefield, if you cast it during your main phase, enchanted creature gains lifelink until end of turn.
+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.
From b58b2b93e2a9994f10f7d6b0df22b7b979978a36 Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Tue, 29 Jan 2019 07:37:06 +0000
Subject: [PATCH 70/93] Fix Deputy of Detention (now exiles other cards of the
same name, and also now returns those cards to the BF when it leaves the BF)
---
forge-gui/res/cardsfolder/d/deputy_of_detention.txt | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/forge-gui/res/cardsfolder/d/deputy_of_detention.txt b/forge-gui/res/cardsfolder/d/deputy_of_detention.txt
index ef606eccea7..625946adca5 100644
--- a/forge-gui/res/cardsfolder/d/deputy_of_detention.txt
+++ b/forge-gui/res/cardsfolder/d/deputy_of_detention.txt
@@ -3,7 +3,11 @@ 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
+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 | 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.
From 2e0812dd6a814ec8d302c326a55f7dd00b272821 Mon Sep 17 00:00:00 2001
From: Agetian
Date: Tue, 29 Jan 2019 17:31:50 +0300
Subject: [PATCH 71/93] - Added RNA achievements (by Marek14).
---
forge-gui/res/lists/altwin-achievements.txt | 1 +
forge-gui/res/lists/planeswalker-achievements.txt | 5 +++++
2 files changed, 6 insertions(+)
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!
From b04e16d1caf27d967b16cf75f55e45b82a345a61 Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Tue, 29 Jan 2019 17:50:02 +0000
Subject: [PATCH 72/93] Update mirror_march.txt
---
forge-gui/res/cardsfolder/m/mirror_march.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/forge-gui/res/cardsfolder/m/mirror_march.txt b/forge-gui/res/cardsfolder/m/mirror_march.txt
index 2dec7304ab9..8d7c8d7c398 100644
--- a/forge-gui/res/cardsfolder/m/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
From 015623a1228f14741af1ceb154e6a3102ab2c652 Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Tue, 29 Jan 2019 19:57:56 +0000
Subject: [PATCH 73/93] Fix Dovin, Grand Arbiter's +1 ability
---
forge-gui/res/cardsfolder/d/dovin_grand_arbiter.txt | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/forge-gui/res/cardsfolder/d/dovin_grand_arbiter.txt b/forge-gui/res/cardsfolder/d/dovin_grand_arbiter.txt
index a27a07d3d7b..494a7f60892 100644
--- a/forge-gui/res/cardsfolder/d/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.
From 11f597bb23f07dcb64e78e6b827c59de28ec782c Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Tue, 29 Jan 2019 22:43:12 +0000
Subject: [PATCH 74/93] Fix Consume so that target player will sacrifice its
greatest power creature. Not very clean, but used a workaround mimicking
Crackling Doom to get it to work.
---
forge-gui/res/cardsfolder/c/consecrate_consume.txt | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/forge-gui/res/cardsfolder/c/consecrate_consume.txt b/forge-gui/res/cardsfolder/c/consecrate_consume.txt
index 66d5cf8dd0b..307085bf5c8 100644
--- a/forge-gui/res/cardsfolder/c/consecrate_consume.txt
+++ b/forge-gui/res/cardsfolder/c/consecrate_consume.txt
@@ -11,8 +11,10 @@ ALTERNATE
Name:Consume
ManaCost:2 W B
Types:Sorcery
-A:SP$ Sacrifice | Cost$ 2 W B | ValidTgts$ Player | SacValid$ Creature.greatestPower+TargetedPlayerCtrl | RememberSacrificed$ True | SacMessage$ Creature with greatest power among creatures you control | SubAbility$ DBGainLife | SpellDescription$ Target player sacrifices a creature with the greatest power among creatures they control. You gain life equal to its power.
-SVar:DBGainLife:DB$ GainLife | Defined$ You | LifeAmount$ X | References$ X | SubAbility$ DBCleanup
-SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
+A:SP$ Pump | Cost$ 2 W B | ValidTgts$ Player | SubAbility$ DBRepeat | SpellDescription$ Target player sacrifices a creature with the greatest power among creatures they control. You gain life equal to its power.
+SVar:DBRepeat:DB$ RepeatEach | RepeatPlayers$ TargetedPlayer | RepeatSubAbility$ DBChooseCard
+SVar:DBChooseCard:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Creature.greatestPowerControlledByRemembered | Mandatory$ True | SubAbility$ DBSac | SpellDescription$ Target player sacrifices a creature with the greatest power among creatures they control. You gain life equal to its power.
+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
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.
+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
From 210cc6164d26b7b73e93b4e83a676ade427f9892 Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Tue, 29 Jan 2019 22:45:38 +0000
Subject: [PATCH 75/93] Update consecrate_consume.txt
---
forge-gui/res/cardsfolder/c/consecrate_consume.txt | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/forge-gui/res/cardsfolder/c/consecrate_consume.txt b/forge-gui/res/cardsfolder/c/consecrate_consume.txt
index 307085bf5c8..d0c936aa24d 100644
--- a/forge-gui/res/cardsfolder/c/consecrate_consume.txt
+++ b/forge-gui/res/cardsfolder/c/consecrate_consume.txt
@@ -15,6 +15,7 @@ A:SP$ Pump | Cost$ 2 W B | ValidTgts$ Player | SubAbility$ DBRepeat | SpellDescr
SVar:DBRepeat:DB$ RepeatEach | RepeatPlayers$ TargetedPlayer | RepeatSubAbility$ DBChooseCard
SVar:DBChooseCard:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Creature.greatestPowerControlledByRemembered | Mandatory$ True | SubAbility$ DBSac | SpellDescription$ Target player sacrifices a creature with the greatest power among creatures they control. You gain life equal to its power.
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
+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
From 40764691fd514b747b35dc24e72a87c7e4e04580 Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Tue, 29 Jan 2019 23:38:51 +0000
Subject: [PATCH 76/93] Update code_of_constraint.txt - Doesn't untap only true
for Addendum case
---
forge-gui/res/cardsfolder/c/code_of_constraint.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/forge-gui/res/cardsfolder/c/code_of_constraint.txt b/forge-gui/res/cardsfolder/c/code_of_constraint.txt
index 93f7a6a9ebd..33e49316fc9 100644
--- a/forge-gui/res/cardsfolder/c/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.
From 5f11897d113111e39cf58c0b1a592c40536dbdfd Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Tue, 29 Jan 2019 23:43:22 +0000
Subject: [PATCH 77/93] Update consecrate_consume.txt
---
forge-gui/res/cardsfolder/c/consecrate_consume.txt | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/forge-gui/res/cardsfolder/c/consecrate_consume.txt b/forge-gui/res/cardsfolder/c/consecrate_consume.txt
index d0c936aa24d..733bc15dc4b 100644
--- a/forge-gui/res/cardsfolder/c/consecrate_consume.txt
+++ b/forge-gui/res/cardsfolder/c/consecrate_consume.txt
@@ -11,8 +11,7 @@ ALTERNATE
Name:Consume
ManaCost:2 W B
Types:Sorcery
-A:SP$ Pump | Cost$ 2 W B | ValidTgts$ Player | SubAbility$ DBRepeat | SpellDescription$ Target player sacrifices a creature with the greatest power among creatures they control. You gain life equal to its power.
-SVar:DBRepeat:DB$ RepeatEach | RepeatPlayers$ TargetedPlayer | RepeatSubAbility$ DBChooseCard
+A:SP$ RepeatEach | Cost$ 2 W B | ValidTgts$ Player | RepeatPlayers$ TargetedPlayer | RepeatSubAbility$ 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 | SpellDescription$ Target player sacrifices a creature with the greatest power among creatures they control. You gain life equal to its power.
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
From 77184dc93084693b41ef99d73e852d02e1e3d2ef Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Wed, 30 Jan 2019 00:13:01 +0000
Subject: [PATCH 78/93] Update consecrate_consume.txt
---
forge-gui/res/cardsfolder/c/consecrate_consume.txt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/forge-gui/res/cardsfolder/c/consecrate_consume.txt b/forge-gui/res/cardsfolder/c/consecrate_consume.txt
index 733bc15dc4b..4bcc6b4e0af 100644
--- a/forge-gui/res/cardsfolder/c/consecrate_consume.txt
+++ b/forge-gui/res/cardsfolder/c/consecrate_consume.txt
@@ -11,8 +11,8 @@ ALTERNATE
Name:Consume
ManaCost:2 W B
Types:Sorcery
-A:SP$ RepeatEach | Cost$ 2 W B | ValidTgts$ Player | RepeatPlayers$ TargetedPlayer | RepeatSubAbility$ 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 | SpellDescription$ Target player sacrifices a creature with the greatest power among creatures they control. You gain life equal to its power.
+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
From 343723e5293e6c576e2aeb5dbcc57c296f35048e Mon Sep 17 00:00:00 2001
From: Sol
Date: Wed, 30 Jan 2019 01:34:05 +0000
Subject: [PATCH 79/93] Send SpellAbility into getDefinedPlayers of
greatestPower
---
forge-game/src/main/java/forge/game/card/CardProperty.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
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;
From 4b882ad215bee6d6702c848189e0e642b942d3a3 Mon Sep 17 00:00:00 2001
From: Hans Mackowiak
Date: Wed, 30 Jan 2019 10:22:43 +0000
Subject: [PATCH 80/93] CardState: this catch the Exception in case it crash in
Keyword.initialize
---
.../main/java/forge/game/card/CardState.java | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
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);
}
From ba25696ea7d2fba3a0e988014839dfde4a74b6a5 Mon Sep 17 00:00:00 2001
From: Agetian
Date: Wed, 30 Jan 2019 18:30:07 +0300
Subject: [PATCH 81/93] - Fix Gurzigost.
---
forge-gui/src/main/java/forge/player/HumanPlay.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/forge-gui/src/main/java/forge/player/HumanPlay.java b/forge-gui/src/main/java/forge/player/HumanPlay.java
index 3f634a2e499..beb816281b7 100644
--- a/forge-gui/src/main/java/forge/player/HumanPlay.java
+++ b/forge-gui/src/main/java/forge/player/HumanPlay.java
@@ -605,7 +605,8 @@ public class HumanPlay {
}
}
}
- else if (from == ZoneType.Hand) { // Tainted Specter
+ else if (from == ZoneType.Hand || from == ZoneType.Graveyard) { // Tainted Specter (hand), Gurzigost (graveyard)
+ // FIXME: why is this limited only to particular zones? Shouldn't it be generic?
boolean hasPaid = payCostPart(controller, sourceAbility, (CostPartWithList)part, amount, list, "put into library." + orString);
if (!hasPaid) {
return false;
From 8c020c7c8cd0a4a10bc16e81cfd606f7f4ba041e Mon Sep 17 00:00:00 2001
From: Agetian
Date: Wed, 30 Jan 2019 18:54:15 +0300
Subject: [PATCH 82/93] - Generic check.
---
forge-gui/src/main/java/forge/player/HumanPlay.java | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/forge-gui/src/main/java/forge/player/HumanPlay.java b/forge-gui/src/main/java/forge/player/HumanPlay.java
index beb816281b7..989501299f7 100644
--- a/forge-gui/src/main/java/forge/player/HumanPlay.java
+++ b/forge-gui/src/main/java/forge/player/HumanPlay.java
@@ -605,8 +605,7 @@ public class HumanPlay {
}
}
}
- else if (from == ZoneType.Hand || from == ZoneType.Graveyard) { // Tainted Specter (hand), Gurzigost (graveyard)
- // FIXME: why is this limited only to particular zones? Shouldn't it be generic?
+ else { // Tainted Specter, Gurzigost, etc.
boolean hasPaid = payCostPart(controller, sourceAbility, (CostPartWithList)part, amount, list, "put into library." + orString);
if (!hasPaid) {
return false;
From 1d2bbe49238859bc79495764c5e4ccb00d55b1ed Mon Sep 17 00:00:00 2001
From: Chris H
Date: Wed, 30 Jan 2019 20:24:30 -0500
Subject: [PATCH 83/93] Add RNA rankings
---
forge-gui/res/draft/rankings.txt | 250 +++++++++++++++++++++++++++++++
1 file changed, 250 insertions(+)
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
From d063e98e3398dcf3187dac9d82b9f7bd1634c8b5 Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Thu, 31 Jan 2019 04:11:09 +0000
Subject: [PATCH 84/93] Update deputy_of_detention.txt
---
forge-gui/res/cardsfolder/d/deputy_of_detention.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/forge-gui/res/cardsfolder/d/deputy_of_detention.txt b/forge-gui/res/cardsfolder/d/deputy_of_detention.txt
index 625946adca5..a29ca9f4bb5 100644
--- a/forge-gui/res/cardsfolder/d/deputy_of_detention.txt
+++ b/forge-gui/res/cardsfolder/d/deputy_of_detention.txt
@@ -4,7 +4,7 @@ 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 | RememberChanged$ True | SubAbility$ DBEffect
+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
From 3956a5b558175520bf2370d803ca37f90d3f72e6 Mon Sep 17 00:00:00 2001
From: Agetian
Date: Thu, 31 Jan 2019 08:45:53 +0300
Subject: [PATCH 85/93] - Check for alternative additional costs in the AI
routines (fixes AI not paying those costs for Final Payment and other cards).
---
forge-ai/src/main/java/forge/ai/ComputerUtilAbility.java | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtilAbility.java b/forge-ai/src/main/java/forge/ai/ComputerUtilAbility.java
index ba42c31cf9e..301dad5bffb 100644
--- a/forge-ai/src/main/java/forge/ai/ComputerUtilAbility.java
+++ b/forge-ai/src/main/java/forge/ai/ComputerUtilAbility.java
@@ -95,7 +95,14 @@ public class ComputerUtilAbility {
public static List getOriginalAndAltCostAbilities(final List originList, final Player player) {
final List newAbilities = Lists.newArrayList();
+
+ List originListWithAddCosts = Lists.newArrayList();
for (SpellAbility sa : originList) {
+ // If this spell has alternative additional costs, add them instead of the unmodified SA itself
+ originListWithAddCosts.addAll(GameActionUtil.getAdditionalCostSpell(sa));
+ }
+
+ for (SpellAbility sa : originListWithAddCosts) {
sa.setActivatingPlayer(player);
// determine which alternative costs are cheaper than the original and prioritize them
From 3402cddd1d59745b6e2cdab48d337434f137efcc Mon Sep 17 00:00:00 2001
From: Hans Mackowiak
Date: Thu, 31 Jan 2019 06:25:06 +0000
Subject: [PATCH 86/93] GameAction: fix Spectral Ward #819
---
forge-game/src/main/java/forge/game/GameAction.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
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;
}
From b29f390b625d8a8c18fc9b63bfd510de5f13fd15 Mon Sep 17 00:00:00 2001
From: Agetian
Date: Thu, 31 Jan 2019 16:39:49 +0300
Subject: [PATCH 87/93] - Fix the AI activating player setup for additional
costs. - Fix Thrilling Encore.
---
forge-ai/src/main/java/forge/ai/ComputerUtilAbility.java | 3 +--
forge-gui/res/cardsfolder/t/thrilling_encore.txt | 2 +-
2 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtilAbility.java b/forge-ai/src/main/java/forge/ai/ComputerUtilAbility.java
index 301dad5bffb..18687559682 100644
--- a/forge-ai/src/main/java/forge/ai/ComputerUtilAbility.java
+++ b/forge-ai/src/main/java/forge/ai/ComputerUtilAbility.java
@@ -99,12 +99,11 @@ public class ComputerUtilAbility {
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) {
- sa.setActivatingPlayer(player);
-
// 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-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.
From e75b15b7cb2d8d94b834e157bacf7c0fc0373af0 Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Thu, 31 Jan 2019 19:20:09 +0000
Subject: [PATCH 88/93] Update rakdos_the_showstopper.txt
---
forge-gui/res/cardsfolder/r/rakdos_the_showstopper.txt | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/forge-gui/res/cardsfolder/r/rakdos_the_showstopper.txt b/forge-gui/res/cardsfolder/r/rakdos_the_showstopper.txt
index 3fde626857d..6a4b3b5d2f0 100644
--- a/forge-gui/res/cardsfolder/r/rakdos_the_showstopper.txt
+++ b/forge-gui/res/cardsfolder/r/rakdos_the_showstopper.txt
@@ -4,9 +4,8 @@ Types:Legendary Creature Demon
PT:6/6
K:Flying
K:Trample
-T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigFlip | TriggerDescription$ When CARDNAME enters the battlefield, flip a coin for each creature that isn't a Demon, Dragons, or coins. Destroy each creature whose coin comes up tails.
-SVar:TrigFlip:DB$ FlipACoin | FlipUntilYouLose$ True | SaveNumFlipsToSVar$ X | LoseSubAbility$ DBDestroy
-SVar:DBDestroy:DB$ DestroyAll | ValidCards$ Creature.IsNotChosenType | References$ X
-# TODO: -- THIS LINE NEEDS FIXING (doesn't reference the types correctly) --
-SVar:X:Count$Valid Creature.isn
+T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ EachCr | TriggerDescription$ When CARDNAME enters the battlefield, flip a coin for each creature that isn't a Demon, Dragons, or coins. Destroy each creature whose coin comes up tails.
+SVar:EachCr:DB$ RepeatEach | RepeatCards$ Creature.nonDemon+nonDevil+nonImp | Zone$ Battlefield | RepeatSubAbility$ TrigFlip
+SVar:TrigFlip:DB$ FlipACoin | NoCall$ True | TailsSubAbility$ DBDestroy
+SVar:DBDestroy:DB$ Destroy | Defined$ Remembered
Oracle:Flying, trample\nWhen Rakdos, the Showstopper enters the battlefield, flip a coin for each creature that isn't a Demon, Devil, or Imp. Destroy each creature whose coin comes up tails.
From 7dbbf0a554e144f3704b3429bf5cdf8b4e0228ac Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Thu, 31 Jan 2019 19:22:12 +0000
Subject: [PATCH 89/93] Update rakdos_the_showstopper.txt
---
forge-gui/res/cardsfolder/r/rakdos_the_showstopper.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/forge-gui/res/cardsfolder/r/rakdos_the_showstopper.txt b/forge-gui/res/cardsfolder/r/rakdos_the_showstopper.txt
index 6a4b3b5d2f0..a5f7e8ef7c9 100644
--- a/forge-gui/res/cardsfolder/r/rakdos_the_showstopper.txt
+++ b/forge-gui/res/cardsfolder/r/rakdos_the_showstopper.txt
@@ -4,7 +4,7 @@ Types:Legendary Creature Demon
PT:6/6
K:Flying
K:Trample
-T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ EachCr | TriggerDescription$ When CARDNAME enters the battlefield, flip a coin for each creature that isn't a Demon, Dragons, or coins. Destroy each creature whose coin comes up tails.
+T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ EachCr | TriggerDescription$ When CARDNAME enters the battlefield, flip a coin for each creature that isn't a Demon, Devil, or Imp. Destroy each creature whose coin comes up tails.
SVar:EachCr:DB$ RepeatEach | RepeatCards$ Creature.nonDemon+nonDevil+nonImp | Zone$ Battlefield | RepeatSubAbility$ TrigFlip
SVar:TrigFlip:DB$ FlipACoin | NoCall$ True | TailsSubAbility$ DBDestroy
SVar:DBDestroy:DB$ Destroy | Defined$ Remembered
From 8b902671d62b4cf1dd54be043beca991c512cb8f Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Thu, 31 Jan 2019 22:02:53 +0000
Subject: [PATCH 90/93] Update rumbling_ruin.txt
---
forge-gui/res/cardsfolder/r/rumbling_ruin.txt | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/forge-gui/res/cardsfolder/r/rumbling_ruin.txt b/forge-gui/res/cardsfolder/r/rumbling_ruin.txt
index 36747d0c27c..b21c20ae4e7 100644
--- a/forge-gui/res/cardsfolder/r/rumbling_ruin.txt
+++ b/forge-gui/res/cardsfolder/r/rumbling_ruin.txt
@@ -2,8 +2,7 @@ Name:Rumbling Ruin
ManaCost:5 R
Types:Creature Elemental
PT:6/6
-T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigEffect | TriggerDescription$ When CARDNAME enters the battlefield, your number of +1/+1 counters on creatures you control. Creatures your opponents control with power less than or equal to that number can't block this turn.
-SVar:TrigEffect:DB$Effect | Name$ CARDNAME Effect | StaticAbilities$ KWPump
-SVar:KWPump:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.YouCtrl+powerLTY | AddHiddenKeyword$ CARDNAME can't block. | Description$ Creatures your opponents control with power less than or equal to that number can't block this turn.
-# TODO: -- THIS SCRIPT NEEDS FIXING (doesn't have the count var) --
+T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigEffect | TriggerDescription$ When CARDNAME enters the battlefield, count the number of +1/+1 counters on creatures you control. Creatures your opponents control with power less than or equal to that number can't block this turn.
+SVar:TrigEffect:DB$ PumpAll | ValidCards$ Creature.OppCtrl+powerLEX | References$ X | KW$ HIDDEN CARDNAME can't block.
+SVar:X:Count$TotalCounters_P1P1_Creature.YouCtrl
Oracle:When Rumbling Ruin enters the battlefield, count the number of +1/+1 counters on creatures you control. Creatures your opponents control with power less than or equal to that number can't block this turn.
From 51fb900eb5ca009616b5c7f44269d6325e769837 Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Thu, 31 Jan 2019 22:06:31 +0000
Subject: [PATCH 91/93] Revert "Update rumbling_ruin.txt"
This reverts commit 8b902671d62b4cf1dd54be043beca991c512cb8f
---
forge-gui/res/cardsfolder/r/rumbling_ruin.txt | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/forge-gui/res/cardsfolder/r/rumbling_ruin.txt b/forge-gui/res/cardsfolder/r/rumbling_ruin.txt
index b21c20ae4e7..36747d0c27c 100644
--- a/forge-gui/res/cardsfolder/r/rumbling_ruin.txt
+++ b/forge-gui/res/cardsfolder/r/rumbling_ruin.txt
@@ -2,7 +2,8 @@ Name:Rumbling Ruin
ManaCost:5 R
Types:Creature Elemental
PT:6/6
-T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigEffect | TriggerDescription$ When CARDNAME enters the battlefield, count the number of +1/+1 counters on creatures you control. Creatures your opponents control with power less than or equal to that number can't block this turn.
-SVar:TrigEffect:DB$ PumpAll | ValidCards$ Creature.OppCtrl+powerLEX | References$ X | KW$ HIDDEN CARDNAME can't block.
-SVar:X:Count$TotalCounters_P1P1_Creature.YouCtrl
+T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | Execute$ TrigEffect | TriggerDescription$ When CARDNAME enters the battlefield, your number of +1/+1 counters on creatures you control. Creatures your opponents control with power less than or equal to that number can't block this turn.
+SVar:TrigEffect:DB$Effect | Name$ CARDNAME Effect | StaticAbilities$ KWPump
+SVar:KWPump:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.YouCtrl+powerLTY | AddHiddenKeyword$ CARDNAME can't block. | Description$ Creatures your opponents control with power less than or equal to that number can't block this turn.
+# TODO: -- THIS SCRIPT NEEDS FIXING (doesn't have the count var) --
Oracle:When Rumbling Ruin enters the battlefield, count the number of +1/+1 counters on creatures you control. Creatures your opponents control with power less than or equal to that number can't block this turn.
From bee8348b676167fc01a1763b6427d626e4c14897 Mon Sep 17 00:00:00 2001
From: "T.J. Tillman"
Date: Thu, 31 Jan 2019 22:12:14 +0000
Subject: [PATCH 92/93] Update cosmotronic_wave.txt to reflect ruling that this
is a continuous effect.
---
forge-gui/res/cardsfolder/c/cosmotronic_wave.txt | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/forge-gui/res/cardsfolder/c/cosmotronic_wave.txt b/forge-gui/res/cardsfolder/c/cosmotronic_wave.txt
index ecb66ebc1a7..6665ffae4f4 100644
--- a/forge-gui/res/cardsfolder/c/cosmotronic_wave.txt
+++ b/forge-gui/res/cardsfolder/c/cosmotronic_wave.txt
@@ -1,7 +1,7 @@
Name:Cosmotronic Wave
ManaCost:3 R
Types:Sorcery
-A:SP$ DamageAll | Cost$ 3 R | ValidCards$ Creature.OppCtrl | NumDmg$ 1 | SubAbility$ DBPumpAll | SpellDescription$ CARDNAME deals 1 damage to each creature your opponents control. Creatures your opponents control can't block this turn.
-SVar:DBPumpAll:DB$ PumpAll | ValidCards$ Creature.OppCtrl | KW$ HIDDEN CARDNAME can't block. | SubAbility$ DBCleanup
-SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True
+A:SP$ DamageAll | Cost$ 3 R | ValidCards$ Creature.OppCtrl | NumDmg$ 1 | SubAbility$ CantBlock | SpellDescription$ CARDNAME deals 1 damage to each creature your opponents control. Creatures your opponents control can't block this turn.
+SVar:CantBlock:DB$ Effect | Name$ Cosmotronic Wave Effect | StaticAbilities$ KWPump | SpellDescription$ Creatures your opponents control can't block this turn.
+SVar:KWPump:Mode$ Continuous | EffectZone$ Command | Affected$ Creature.OppCtrl | AddHiddenKeyword$ CARDNAME can't block. | Description$ Creatures your opponents control can't block this turn.
Oracle:Cosmotronic Wave deals 1 damage to each creature your opponents control. Creatures your opponents control can't block this turn.
From 5bce46426897096703bf1f1d9ee631c0b663a1c7 Mon Sep 17 00:00:00 2001
From: Sol
Date: Fri, 1 Feb 2019 04:19:56 +0000
Subject: [PATCH 93/93] Update plaza_of_harmony.txt
---
forge-gui/res/cardsfolder/p/plaza_of_harmony.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/forge-gui/res/cardsfolder/p/plaza_of_harmony.txt b/forge-gui/res/cardsfolder/p/plaza_of_harmony.txt
index fed983c4ae9..2cad3ae78e7 100644
--- a/forge-gui/res/cardsfolder/p/plaza_of_harmony.txt
+++ b/forge-gui/res/cardsfolder/p/plaza_of_harmony.txt
@@ -1,5 +1,5 @@
Name:Plaza of Harmony
-ManaCost:
+ManaCost:no cost
Types:Land
T:Mode$ ChangesZone | Origin$ Any | Destination$ Battlefield | ValidCard$ Card.Self | IsPresent$ Gate.YouCtrl | PresentCompare$ GE2 | Execute$ TrigGainLife | TriggerDescription$ When CARDNAME enters the battlefield, if you control two or more Gates, gain 3 life.
SVar:TrigGainLife:DB$ GainLife | LifeAmount$ 3