diff --git a/.gitattributes b/.gitattributes
index eabce020be3..6afe395b025 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -625,6 +625,7 @@ forge-gui/CHANGES.txt -text
forge-gui/LICENSE.txt -text
forge-gui/README.txt -text
forge-gui/forge.profile.properties.example -text
+forge-gui/nbactions.xml -text
forge-gui/pom.xml -text
forge-gui/res/ai/Default.ai -text
forge-gui/res/ai/Reckless.ai -text
diff --git a/forge-gui/nbactions.xml b/forge-gui/nbactions.xml
new file mode 100644
index 00000000000..900a1a03fc3
--- /dev/null
+++ b/forge-gui/nbactions.xml
@@ -0,0 +1,18 @@
+
+
+
+ debug
+
+ jar
+
+
+ process-classes
+ org.codehaus.mojo:exec-maven-plugin:1.2.1:exec
+
+
+ -Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address} -classpath %classpath forge.view.Main
+ java
+ true
+
+
+
diff --git a/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorDraftingProcess.java b/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorDraftingProcess.java
index ff55f707c92..cccc1caaea0 100644
--- a/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorDraftingProcess.java
+++ b/forge-gui/src/main/java/forge/gui/deckeditor/controllers/CEditorDraftingProcess.java
@@ -39,6 +39,7 @@ import forge.limited.BoosterDraft;
import forge.limited.IBoosterDraft;
import forge.properties.ForgePreferences.FPref;
import forge.util.ItemPool;
+import forge.util.MyRandom;
/**
* Updates the deck editor UI as necessary draft selection mode.
@@ -157,13 +158,19 @@ public class CEditorDraftingProcess extends ACEditorBase {
deck.getOrCreate(DeckSection.Sideboard).addAll(this.getDeckManager().getPool());
final String landSet = IBoosterDraft.LAND_SET_CODE[0].getCode();
+ final boolean isZendikarSet = landSet.equals("ZEN"); // we want to generate one kind of Zendikar lands at a time only
+ final boolean zendikarSetMode = MyRandom.getRandom().nextBoolean();
final int landsCount = 10;
+
for(String landName : MagicColor.Constant.BASIC_LANDS) {
- final int numArt = Singletons.getMagicDb().getCommonCards().getArtCount(landName, landSet);
+ int numArt = Singletons.getMagicDb().getCommonCards().getArtCount(landName, landSet);
+ int minArtIndex = isZendikarSet ? (zendikarSetMode ? 1 : 5) : 1;
+ int maxArtIndex = isZendikarSet ? minArtIndex + 3 : numArt;
if (Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_RANDOM_ART_IN_POOLS)) {
- for (int i = 1; i <= numArt; i++) {
+
+ for (int i = minArtIndex; i <= maxArtIndex; i++) {
deck.get(DeckSection.Sideboard).add(landName, landSet, i, numArt > 1 ? landsCount : 30);
}
} else {
diff --git a/forge-gui/src/main/java/forge/gui/home/sanctioned/CSubmenuSealed.java b/forge-gui/src/main/java/forge/gui/home/sanctioned/CSubmenuSealed.java
index b2c53760164..742d15db2db 100644
--- a/forge-gui/src/main/java/forge/gui/home/sanctioned/CSubmenuSealed.java
+++ b/forge-gui/src/main/java/forge/gui/home/sanctioned/CSubmenuSealed.java
@@ -37,6 +37,7 @@ import forge.limited.SealedCardPoolGenerator;
import forge.limited.SealedDeckBuilder;
import forge.properties.ForgePreferences.FPref;
import forge.util.ItemPool;
+import forge.util.MyRandom;
import forge.util.storage.IStorage;
/**
@@ -173,11 +174,18 @@ public enum CSubmenuSealed implements ICDoc {
deck.getOrCreate(DeckSection.Sideboard).addAll(humanPool);
final int landsCount = 10;
- for (final String element : MagicColor.Constant.BASIC_LANDS) {
- final int numArt = Singletons.getMagicDb().getCommonCards().getArtCount(element, sd.getLandSetCode());
+ final boolean isZendikarSet = sd.getLandSetCode().equals("ZEN"); // we want to generate one kind of Zendikar lands at a time only
+ final boolean zendikarSetMode = MyRandom.getRandom().nextBoolean();
+
+ for (final String element : MagicColor.Constant.BASIC_LANDS) {
+ int numArt = Singletons.getMagicDb().getCommonCards().getArtCount(element, sd.getLandSetCode());
+ int minArtIndex = isZendikarSet ? (zendikarSetMode ? 1 : 5) : 1;
+ int maxArtIndex = isZendikarSet ? minArtIndex + 3 : numArt;
+
if (Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_RANDOM_ART_IN_POOLS)) {
- for (int i = 1; i <= numArt; i++) {
+
+ for (int i = minArtIndex; i <= maxArtIndex; i++) {
deck.get(DeckSection.Sideboard).add(element, sd.getLandSetCode(), i, numArt > 1 ? landsCount : 30);
}
} else {
diff --git a/forge-gui/src/main/java/forge/quest/QuestUtilCards.java b/forge-gui/src/main/java/forge/quest/QuestUtilCards.java
index 93552c74816..fa9198b3b9d 100644
--- a/forge-gui/src/main/java/forge/quest/QuestUtilCards.java
+++ b/forge-gui/src/main/java/forge/quest/QuestUtilCards.java
@@ -124,14 +124,17 @@ public final class QuestUtilCards {
landCode = "M10";
}
+ final boolean isZendikarSet = landCode.equals("ZEN"); // we want to generate one kind of Zendikar lands at a time only
+ final boolean zendikarSetMode = MyRandom.getRandom().nextBoolean();
+
for (String landName : MagicColor.Constant.BASIC_LANDS) {
int artCount = db.getArtCount(landName, landCode);
if (Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_RANDOM_ART_IN_POOLS)) {
- int[] artGroups = MyRandom.splitIntoRandomGroups(nBasic, artCount);
+ int[] artGroups = MyRandom.splitIntoRandomGroups(nBasic, isZendikarSet ? 4 : artCount);
for (int i = 1; i <= artGroups.length; i++) {
- pool.add(db.getCard(landName, landCode, i), artGroups[i - 1]);
+ pool.add(db.getCard(landName, landCode, isZendikarSet ? (zendikarSetMode ? i : i + 4) : i), artGroups[i - 1]);
}
} else {
pool.add(db.getCard(landName, landCode, artCount > 1 ? MyRandom.getRandom().nextInt(artCount) + 1 : 1), nBasic);