Date: Mon, 21 Jan 2019 11:40:36 -0500
Subject: [PATCH 20/54] 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 21/54] 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 22/54] 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 23/54] 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 24/54] 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 25/54] 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 26/54] 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 27/54] 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 28/54] 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 29/54] 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 30/54] 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 31/54] 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 32/54] 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 33/54] 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 34/54] 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 35/54] 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 36/54] 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 37/54] 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 38/54] 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 39/54] 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 40/54] 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 41/54] 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 42/54] 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 43/54] 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 44/54] 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 45/54] 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 46/54] 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 47/54] 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 48/54] 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 49/54] - 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 50/54] 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 51/54] 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 52/54] 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 53/54] 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 54/54] 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.