Merge branch 'random_lands_from_block_Momir' into 'master'

Random lands from block set code for Momir, MoJhoSto

See merge request core-developers/forge!5259
This commit is contained in:
Michael Kamensky
2021-08-26 08:50:54 +00:00
4 changed files with 33 additions and 11 deletions

View File

@@ -59,6 +59,7 @@ public class StaticData {
private IStorage<BoosterBox.Template> boosterBoxes;
private IStorage<PrintSheet> printSheets;
private final Map<String, List<String>> setLookup = new HashMap<>();
private List<String> blocksLandCodes = new ArrayList<>();
private static StaticData lastInstance = null;
@@ -298,6 +299,9 @@ public class StaticData {
return databases;
}
public List<String> getBlockLands() {
return blocksLandCodes;
}
public TokenDb getAllTokens() { return allTokens; }

View File

@@ -64,8 +64,15 @@ public class CardPool extends ItemPool<PaperCard> {
this.add(cardName, setCode, IPaperCard.DEFAULT_ART_INDEX, amount);
}
public void add(final String cardName, final String setCode, final int amount, boolean addAny) {
this.add(cardName, setCode, IPaperCard.NO_ART_INDEX, amount, addAny);
}
// NOTE: ART indices are "1" -based
public void add(String cardName, String setCode, int artIndex, final int amount) {
this.add(cardName, setCode, artIndex, amount, false);
}
public void add(String cardName, String setCode, int artIndex, final int amount, boolean addAny) {
Map<String, CardDb> dbs = StaticData.instance().getAvailableDatabases();
PaperCard paperCard = null;
String selectedDbName = "";
@@ -89,6 +96,10 @@ public class CardPool extends ItemPool<PaperCard> {
artIndex = IPaperCard.DEFAULT_ART_INDEX; // Reset Any artIndex passed in, at this point
}
}
if (addAny && paperCard == null) {
paperCard = StaticData.instance().getCommonCards().getCard(cardName);
selectedDbName = "Common";
}
if (paperCard == null){
// after all still null
System.err.println("An unsupported card was requested: \"" + cardName + "\" from \"" + setCode + "\". \n");
@@ -103,7 +114,7 @@ public class CardPool extends ItemPool<PaperCard> {
boolean artIndexExplicitlySet = (artIndex > IPaperCard.DEFAULT_ART_INDEX) ||
(CardDb.CardRequest.fromString(cardName).artIndex > IPaperCard.NO_ART_INDEX);
if (artIndexExplicitlySet || artCount == 1) {
if ((artIndexExplicitlySet || artCount == 1) && !addAny) {
// either a specific art index is specified, or there is only one art, so just add the card
this.add(paperCard, amount);
} else {

View File

@@ -13,6 +13,7 @@ import forge.deck.DeckFormat;
import forge.deck.DeckSection;
import forge.game.player.RegisteredPlayer;
import forge.util.Localizer;
import forge.util.MyRandom;
public enum GameType {
@@ -41,11 +42,12 @@ public enum GameType {
public Deck apply(RegisteredPlayer player) {
Deck deck = new Deck();
CardPool mainDeck = deck.getMain();
mainDeck.add("Plains", 12);
mainDeck.add("Island", 12);
mainDeck.add("Swamp", 12);
mainDeck.add("Mountain", 12);
mainDeck.add("Forest", 12);
String setcode = StaticData.instance().getBlockLands().get(MyRandom.getRandom().nextInt(StaticData.instance().getBlockLands().size()));
mainDeck.add("Plains", setcode, 12, true);
mainDeck.add("Island", setcode, 12, true);
mainDeck.add("Swamp", setcode, 12, true);
mainDeck.add("Mountain", setcode, 12, true);
mainDeck.add("Forest", setcode, 12, true);
deck.getOrCreate(DeckSection.Avatar).add(StaticData.instance().getVariantCards()
.getCard("Momir Vig, Simic Visionary Avatar"), 1);
return deck;
@@ -56,11 +58,12 @@ public enum GameType {
public Deck apply(RegisteredPlayer player) {
Deck deck = new Deck();
CardPool mainDeck = deck.getMain();
mainDeck.add("Plains", 12);
mainDeck.add("Island", 12);
mainDeck.add("Swamp", 12);
mainDeck.add("Mountain", 12);
mainDeck.add("Forest", 12);
String setcode = StaticData.instance().getBlockLands().get(MyRandom.getRandom().nextInt(StaticData.instance().getBlockLands().size()));
mainDeck.add("Plains", setcode, 12, true);
mainDeck.add("Island", setcode, 12, true);
mainDeck.add("Swamp", setcode, 12, true);
mainDeck.add("Mountain", setcode, 12, true);
mainDeck.add("Forest", setcode, 12, true);
deck.getOrCreate(DeckSection.Avatar).add(StaticData.instance().getVariantCards()
.getCard("Momir Vig, Simic Visionary Avatar"), 1);
deck.getOrCreate(DeckSection.Avatar).add(StaticData.instance().getVariantCards()

View File

@@ -217,6 +217,10 @@ public final class FModel {
magicDb.setMulliganRule(MulliganDefs.MulliganRule.valueOf(preferences.getPref(FPref.MULLIGAN_RULE)));
blocks = new StorageBase<>("Block definitions", new CardBlock.Reader(ForgeConstants.BLOCK_DATA_DIR + "blocks.txt", magicDb.getEditions()));
//setblockLands
for (final CardBlock b : blocks) {
magicDb.getBlockLands().add(b.getLandSet().getCode());
}
questPreferences = new QuestPreferences();
conquestPreferences = new ConquestPreferences();
fantasyBlocks = new StorageBase<>("Custom blocks", new CardBlock.Reader(ForgeConstants.BLOCK_DATA_DIR + "fantasyblocks.txt", magicDb.getEditions()));