diff --git a/.gitignore b/.gitignore
index 9a28f9ab18a..42b5e18e02e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,133 +1,134 @@
-syntax: glob
-
-# Mage.Client
-Mage.Client/*.dck
-Mage.Client/db
-Mage.Client/gamelogs
-Mage.Client/mageclient.log
-Mage.Client/plugins/images
-Mage.Client/plugins/plugin.data
-Mage.Client/target
-Mage.Common/target
-/db
-/gamelogs
-/mageclient.log
-
-# Mage.Plugins
-Mage.Plugins/Mage.Card.Plugin/target
-Mage.Plugins/Mage.Counter.Plugin/target
-Mage.Plugins/Mage.Theme.Plugin/target
-Mage.Plugins/Mage.Rating.Plugin/target
-
-# Mage.Server
-Mage.Server/config/init.txt
-Mage.Server/saved
-Mage.Server/target
-Mage.Server/db
-Mage.Server/cache
-Mage.Server/mageserver.log
-Mage.Server/magediag.log
-Mage.Server/extensions
-/saved
-/db
-/cache
-/mageserver.log
-/magediag.log
-/extensions
-
-Mage.Server.Console/target/
-Mage.Server.Console/mageadmin.log
-Mage.Server.Plugins/Mage.Deck.Constructed/target
-Mage.Server.Plugins/Mage.Deck.Limited/target
-Mage.Server.Plugins/Mage.Game.CanadianHighlanderDuel/target
-Mage.Server.Plugins/Mage.Game.CommanderDuel/target
-Mage.Server.Plugins/Mage.Game.CommanderFreeForAll/target/
-Mage.Server.Plugins/Mage.Game.FreeForAll/target
-Mage.Server.Plugins/Mage.Game.MomirDuel/target
-Mage.Server.Plugins/Mage.Game.TinyLeadersDuel/target
-Mage.Server.Plugins/Mage.Game.TwoPlayerDuel/target
-Mage.Server.Plugins/Mage.Player.AI.DraftBot/target
-Mage.Server.Plugins/Mage.Player.AI.MA/target
-Mage.Server.Plugins/Mage.Player.AI/target
-Mage.Server.Plugins/Mage.Player.AIMCTS/target
-Mage.Server.Plugins/Mage.Player.AIMinimax/target
-Mage.Server.Plugins/Mage.Player.Human/target
-Mage.Server.Plugins/Mage.Tournament.BoosterDraft/target
-Mage.Server.Plugins/Mage.Tournament.Constructed/target
-Mage.Server.Plugins/Mage.Tournament.Sealed/target
-
-# Mage.Sets
-Mage.Sets/target
-
-# Mage.Stats
-Mage.Stats/server.log
-Mage.Stats/mageserver.log
-Mage.Stats/magediag.log
-
-# Mage.Tests
-Mage.Tests/target
-Mage.Tests/cache
-Mage.Tests/db
-Mage.Tests/Mage.log
-Mage.Tests/watchdog.log
-
-# Mage
-Mage/target
-
-# Mage.Updater
-Mage.Updater/target
-mage.updater.client/target
-
-# Mage.Verify
-Mage.Verify/target
-Mage.Verify/AllCards.json.zip
-Mage.Verify/AllSets.json.zip
-
-releases
-Utils/author.txt
-.DS_Store
-.metadata
-.project
-.settings
-.idea
-syntax: regexp
-\.class
-\.jar
-\.iml
-\.ipr
-\.iws
-\.log
-nbactions.xml
-nbactions-*.xml
-nb-configuration.xml
-glob:Mage.Client/cheat.dck
-glob:Mage.Client/test.dck
-mage-bundle.zip
-mage-stats-ws.war
-
-Mage.Server.Plugins/Mage.Draft.8PlayerBooster/target
-\.orig\..*$
-\.orig$
-\.chg\..*$
-\.rej$
-\.conflict\~$
-/Mage.Server.Plugins/Mage.Player.AIMCTS/target/
-
-*.classpath
-*.iml
-hs_err*.log
-/submitted
-
-/Mage.Server/config/ai.please.cast.this.txt
-/Mage.Stats/target/
-/Utils/*_unimplemented.txt
-*.netbeans_automatic_build
-*.txt
-Mage.Client/serverlist.txt
-/bin/
-/out/
-/target/
-
-client_secrets.json
-
-dependency-reduced-pom.xml
+syntax: glob
+
+# Mage.Client
+Mage.Client/*.dck
+Mage.Client/db
+Mage.Client/gamelogs
+Mage.Client/mageclient.log
+Mage.Client/plugins/images
+Mage.Client/plugins/plugin.data
+Mage.Client/target
+Mage.Common/target
+/db
+/gamelogs
+/mageclient.log
+
+# Mage.Plugins
+Mage.Plugins/Mage.Card.Plugin/target
+Mage.Plugins/Mage.Counter.Plugin/target
+Mage.Plugins/Mage.Theme.Plugin/target
+Mage.Plugins/Mage.Rating.Plugin/target
+
+# Mage.Server
+Mage.Server/config/init.txt
+Mage.Server/saved
+Mage.Server/target
+Mage.Server/db
+Mage.Server/cache
+Mage.Server/mageserver.log
+Mage.Server/magediag.log
+Mage.Server/extensions
+/saved
+/db
+/cache
+/mageserver.log
+/magediag.log
+/extensions
+
+Mage.Server.Console/target/
+Mage.Server.Console/mageadmin.log
+Mage.Server.Plugins/Mage.Deck.Constructed/target
+Mage.Server.Plugins/Mage.Deck.Limited/target
+Mage.Server.Plugins/Mage.Game.CanadianHighlanderDuel/target
+Mage.Server.Plugins/Mage.Game.CommanderDuel/target
+Mage.Server.Plugins/Mage.Game.CommanderFreeForAll/target/
+Mage.Server.Plugins/Mage.Game.FreeForAll/target
+Mage.Server.Plugins/Mage.Game.MomirDuel/target
+Mage.Server.Plugins/Mage.Game.TinyLeadersDuel/target
+Mage.Server.Plugins/Mage.Game.TwoPlayerDuel/target
+Mage.Server.Plugins/Mage.Player.AI.DraftBot/target
+Mage.Server.Plugins/Mage.Player.AI.MA/target
+Mage.Server.Plugins/Mage.Player.AI/target
+Mage.Server.Plugins/Mage.Player.AIMCTS/target
+Mage.Server.Plugins/Mage.Player.AIMinimax/target
+Mage.Server.Plugins/Mage.Player.Human/target
+Mage.Server.Plugins/Mage.Tournament.BoosterDraft/target
+Mage.Server.Plugins/Mage.Tournament.Constructed/target
+Mage.Server.Plugins/Mage.Tournament.Sealed/target
+
+# Mage.Sets
+Mage.Sets/target
+
+# Mage.Stats
+Mage.Stats/server.log
+Mage.Stats/mageserver.log
+Mage.Stats/magediag.log
+
+# Mage.Tests
+Mage.Tests/target
+Mage.Tests/cache
+Mage.Tests/db
+Mage.Tests/Mage.log
+Mage.Tests/watchdog.log
+
+# Mage
+Mage/target
+
+# Mage.Updater
+Mage.Updater/target
+mage.updater.client/target
+
+# Mage.Verify
+Mage.Verify/target
+Mage.Verify/AllCards.json.zip
+Mage.Verify/AllSets.json.zip
+
+releases
+Utils/author.txt
+.DS_Store
+.metadata
+.project
+.settings
+.idea
+syntax: regexp
+\.class
+\.jar
+\.iml
+\.ipr
+\.iws
+\.log
+nbactions.xml
+nbactions-*.xml
+nb-configuration.xml
+glob:Mage.Client/cheat.dck
+glob:Mage.Client/test.dck
+mage-bundle.zip
+mage-stats-ws.war
+
+Mage.Server.Plugins/Mage.Draft.8PlayerBooster/target
+\.orig\..*$
+\.orig$
+\.chg\..*$
+\.rej$
+\.conflict\~$
+/Mage.Server.Plugins/Mage.Player.AIMCTS/target/
+
+*.classpath
+*.iml
+hs_err*.log
+/submitted
+
+/Mage.Server/config/ai.please.cast.this.txt
+/Mage.Stats/target/
+/Utils/*_unimplemented.txt
+*.netbeans_automatic_build
+*.txt
+Mage.Client/serverlist.txt
+/bin/
+/out/
+/target/
+
+client_secrets.json
+
+dependency-reduced-pom.xml
+/Mage.Server.Plugins/Mage.Game.PennyDreadfulCommanderFreeForAll/target/
\ No newline at end of file
diff --git a/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.form b/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.form
index 1cf837043f2..8fa93c55b07 100644
--- a/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.form
+++ b/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.form
@@ -206,6 +206,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -528,16 +540,18 @@
-
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
diff --git a/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.java b/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.java
index c2a7c234561..80b936a178a 100644
--- a/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.java
+++ b/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.java
@@ -36,6 +36,7 @@ package mage.client.deckeditor;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
+import java.util.Map.Entry;
import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import mage.MageObject;
@@ -74,6 +75,7 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
private BigCard bigCard;
private boolean limited = false;
private final SortSetting sortSetting;
+ private static final Map pdAllowed = new HashMap<>();
private final ActionListener searchAction = evt -> jButtonSearchActionPerformed(evt);
@@ -372,6 +374,12 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
try {
java.util.List filteredCards = new ArrayList<>();
setCursor(new Cursor(Cursor.WAIT_CURSOR));
+
+ boolean chkPD = chkPennyDreadful.isSelected();
+ if (chkPD) {
+ generatePennyDreadfulHash();
+ }
+
if (limited) {
for (Card card : cards) {
if (filter.match(card, null)) {
@@ -383,6 +391,11 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
for (CardInfo cardInfo : foundCards) {
Card card = cardInfo.getMockCard();
if (filter.match(card, null)) {
+ if (chkPD) {
+ if (!pdAllowed.containsKey(card.getName())) {
+ continue;
+ }
+ }
filteredCards.add(card);
}
}
@@ -419,6 +432,22 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
}
}
+ public void generatePennyDreadfulHash() {
+ if (pdAllowed.size() > 0) {
+ return;
+ }
+
+ Properties properties = new Properties();
+ try {
+ properties.load(CardSelector.class.getResourceAsStream("pennydreadful.properties"));
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ for (final Entry