From 7cb11e5191ce8b6a78e958cd4a57269ff1608bfc Mon Sep 17 00:00:00 2001 From: austinio7116 Date: Fri, 20 Apr 2018 23:59:19 +0100 Subject: [PATCH 1/3] Deck generation card quality and mana curve improvements --- .../forge/limited/CardThemedDeckBuilder.java | 47 ++++++++++++++----- 1 file changed, 35 insertions(+), 12 deletions(-) diff --git a/forge-gui/src/main/java/forge/limited/CardThemedDeckBuilder.java b/forge-gui/src/main/java/forge/limited/CardThemedDeckBuilder.java index f1234ebe960..04a73fe5c6b 100644 --- a/forge-gui/src/main/java/forge/limited/CardThemedDeckBuilder.java +++ b/forge-gui/src/main/java/forge/limited/CardThemedDeckBuilder.java @@ -60,9 +60,11 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase { protected Iterable onColorNonCreatures; protected Iterable keyCards; - protected static final boolean logToConsole = false; + protected static final boolean logToConsole = true; protected static final boolean logColorsToConsole = false; + protected Map targetCMCs; + public CardThemedDeckBuilder(IDeckGenPool pool, DeckFormat format){ super(pool,format); @@ -169,6 +171,8 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase { // as filters and iterate over _source_ collection each time. So even if // aiPlayable has changed, there is no need to create a new iterable. + generateTargetCMCs(); + // 2. Add keycards addKeyCards(); @@ -299,6 +303,29 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase { } + protected void generateTargetCMCs(){ + targetCMCs = new HashMap<>(); + targetCMCs.put(1,Math.round((MyRandom.getRandom().nextInt(4)+2)*targetSize/60));//2 + targetCMCs.put(2,Math.round((MyRandom.getRandom().nextInt(5)+5)*targetSize/60));//6 + targetCMCs.put(3,Math.round((MyRandom.getRandom().nextInt(5)+6)*targetSize/60));//7 + targetCMCs.put(4,Math.round((MyRandom.getRandom().nextInt(3)+3)*targetSize/60));//4 + targetCMCs.put(5,Math.round((MyRandom.getRandom().nextInt(3)+3)*targetSize/60));//3 + targetCMCs.put(6,Math.round((MyRandom.getRandom().nextInt(3)+1)*targetSize/60));//2 + + while(sumMapValues(targetCMCs) < numSpellsNeeded){ + int randomKey = MyRandom.getRandom().nextInt(6)+1; + targetCMCs.put(randomKey,targetCMCs.get(randomKey) + 1); + } + } + + private int sumMapValues(Map integerMap){ + int sum = 0; + for (float f : integerMap.values()) { + sum += f; + } + return sum; + } + protected void addKeyCards(){ // Add the first keycard if not land if(!keyCard.getRules().getMainPart().getType().isLand()) { @@ -528,7 +555,7 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase { if (secondKeyCard != null) { possibleList.removeAll(StaticData.instance().getCommonCards().getAllCards(secondKeyCard.getName())); } - Iterator iRandomPool=possibleList.iterator(); + Iterator iRandomPool = CardRanker.rankCardsInDeck(possibleList.subList(0, targetSize <= possibleList.size() ? targetSize : possibleList.size())).iterator(); while (deckList.size() < targetSize) { if (logToConsole) { System.out.println("WARNING: Fixing deck size, currently " + deckList.size() + " cards."); @@ -762,14 +789,16 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase { possibleList.removeAll(StaticData.instance().getCommonCards().getAllCards(secondKeyCard.getName())); } Collections.shuffle(possibleList); - Iterator iRandomPool=possibleList.iterator(); - for(int i=0;i targetCMCs = new HashMap<>(); - targetCMCs.put(1,Math.round((MyRandom.getRandom().nextInt(4)+2)*targetSize/60));//2 - targetCMCs.put(2,Math.round((MyRandom.getRandom().nextInt(5)+5)*targetSize/60));//6 - targetCMCs.put(3,Math.round((MyRandom.getRandom().nextInt(5)+6)*targetSize/60));//7 - targetCMCs.put(4,Math.round((MyRandom.getRandom().nextInt(3)+3)*targetSize/60));//4 - targetCMCs.put(5,Math.round((MyRandom.getRandom().nextInt(3)+3)*targetSize/60));//3 - targetCMCs.put(6,Math.round((MyRandom.getRandom().nextInt(3)+1)*targetSize/60));//2 + final Map creatureCosts = new HashMap(); From 84653d7aaeeaf9ae6ddb3a77777bdb6060b1c4ea Mon Sep 17 00:00:00 2001 From: austinio7116 Date: Sat, 21 Apr 2018 00:00:40 +0100 Subject: [PATCH 2/3] Deactivated deck generation logs --- .../src/main/java/forge/limited/CardThemedDeckBuilder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-gui/src/main/java/forge/limited/CardThemedDeckBuilder.java b/forge-gui/src/main/java/forge/limited/CardThemedDeckBuilder.java index 04a73fe5c6b..10b57551719 100644 --- a/forge-gui/src/main/java/forge/limited/CardThemedDeckBuilder.java +++ b/forge-gui/src/main/java/forge/limited/CardThemedDeckBuilder.java @@ -60,7 +60,7 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase { protected Iterable onColorNonCreatures; protected Iterable keyCards; - protected static final boolean logToConsole = true; + protected static final boolean logToConsole = false; protected static final boolean logColorsToConsole = false; protected Map targetCMCs; From 131def83b9c59e1ec403fcd1214f57bbfe8788c0 Mon Sep 17 00:00:00 2001 From: austinio7116 Date: Sat, 21 Apr 2018 06:29:43 +0100 Subject: [PATCH 3/3] removed commented out old code --- .../main/java/forge/limited/CardThemedDeckBuilder.java | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/forge-gui/src/main/java/forge/limited/CardThemedDeckBuilder.java b/forge-gui/src/main/java/forge/limited/CardThemedDeckBuilder.java index 10b57551719..3180fad3990 100644 --- a/forge-gui/src/main/java/forge/limited/CardThemedDeckBuilder.java +++ b/forge-gui/src/main/java/forge/limited/CardThemedDeckBuilder.java @@ -791,14 +791,7 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase { Collections.shuffle(possibleList); addManaCurveCards(CardRanker.rankCardsInDeck(possibleList.subList(0, targetSize*3 <= possibleList.size() ? targetSize*3 : possibleList.size())), num, "Random Card"); - - /*for(int i=0;i