From 83bae5ad744ea5975ed9c48a07c83f3e6128a465 Mon Sep 17 00:00:00 2001 From: Seravy Date: Sun, 4 Mar 2018 23:36:48 +0100 Subject: [PATCH] Sold basic lands that could have been added through "Add basic land" will not be removed from decks. --- forge-core/src/main/java/forge/item/PaperCard.java | 13 +++++++++++++ .../src/main/java/forge/quest/QuestUtilCards.java | 7 +++++++ 2 files changed, 20 insertions(+) diff --git a/forge-core/src/main/java/forge/item/PaperCard.java b/forge-core/src/main/java/forge/item/PaperCard.java index 17d113d723b..499c98061c8 100644 --- a/forge-core/src/main/java/forge/item/PaperCard.java +++ b/forge-core/src/main/java/forge/item/PaperCard.java @@ -121,6 +121,7 @@ public final class PaperCard implements Comparable, InventoryItemFro } }; + public PaperCard(final CardRules rules0, final String edition0, final CardRarity rarity0, final int artIndex0) { this(rules0, edition0, rarity0, artIndex0, false); } @@ -228,4 +229,16 @@ public final class PaperCard implements Comparable, InventoryItemFro } return imageKey; } + + // Return true if card is one of the five basic lands that can be added for free + public boolean isVeryBasicLand() { + if ((this.getName().equals("Swamp")) + || (this.getName().equals("Plains")) + || (this.getName().equals("Island")) + || (this.getName().equals("Forest")) + || (this.getName().equals("Mountain"))) { + return true; + } else return false; + } } + diff --git a/forge-gui/src/main/java/forge/quest/QuestUtilCards.java b/forge-gui/src/main/java/forge/quest/QuestUtilCards.java index 0b340491ca9..b7bdd882a79 100644 --- a/forge-gui/src/main/java/forge/quest/QuestUtilCards.java +++ b/forge-gui/src/main/java/forge/quest/QuestUtilCards.java @@ -415,6 +415,13 @@ public final class QuestUtilCards { final int leftInPool = questAssets.getCardPool().count(card); + // If card is a nonfoil basic land of the "free" kind, do not remove from the deck + // but pretend as if it was added through "Add Basic Land". + if ((!card.isFoil()) + && (card.isVeryBasicLand())) { + return; + } + // remove sold cards from all decks: for (final Deck deck : questController.getMyDecks()) {