diff --git a/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java b/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java index 1f4e66b3198..8737419409d 100644 --- a/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java +++ b/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java @@ -183,7 +183,7 @@ public class PlayerControllerAi extends PlayerController { @Override public List chooseSpellAbilitiesForEffect(List spells, SpellAbility sa, String title, - int num, Map params) { + int num, Map params, boolean generic) { List remaining = Lists.newArrayList(spells); List selecteds = Lists.newArrayList(); SpellAbility selected; diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChooseGenericEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChooseGenericEffect.java index f5f59dfb4e5..48538869aae 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChooseGenericEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChooseGenericEffect.java @@ -68,7 +68,7 @@ public class ChooseGenericEffect extends SpellAbilityEffect { if (sa.hasParam("AtRandom")) { Aggregates.random(abilities, amount, chosenSAs); } else { - chosenSAs = p.getController().chooseSpellAbilitiesForEffect(abilities, sa, "Choose", amount, ImmutableMap.of()); + chosenSAs = p.getController().chooseSpellAbilitiesForEffect(abilities, sa, "Choose", amount, ImmutableMap.of(), true); } if (!chosenSAs.isEmpty()) { diff --git a/forge-game/src/main/java/forge/game/player/PlayerController.java b/forge-game/src/main/java/forge/game/player/PlayerController.java index 2fb8eaf7d5f..6c3e345a52e 100644 --- a/forge-game/src/main/java/forge/game/player/PlayerController.java +++ b/forge-game/src/main/java/forge/game/player/PlayerController.java @@ -123,7 +123,7 @@ public abstract class PlayerController { public final T chooseSingleEntityForEffect(FCollectionView optionList, SpellAbility sa, String title, boolean isOptional, Map params) { return chooseSingleEntityForEffect(optionList, null, sa, title, isOptional, null, params); } public abstract T chooseSingleEntityForEffect(FCollectionView optionList, DelayedReveal delayedReveal, SpellAbility sa, String title, boolean isOptional, Player relatedPlayer, Map params); - public abstract List chooseSpellAbilitiesForEffect(List spells, SpellAbility sa, String title, int num, Map params); + public abstract List chooseSpellAbilitiesForEffect(List spells, SpellAbility sa, String title, int num, Map params, boolean generic); public abstract SpellAbility chooseSingleSpellForEffect(List spells, SpellAbility sa, String title, Map params); diff --git a/forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/PlayerControllerForTests.java b/forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/PlayerControllerForTests.java index b4d0ef9dc7f..3b6b6860b1d 100644 --- a/forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/PlayerControllerForTests.java +++ b/forge-gui-desktop/src/test/java/forge/gamesimulationtests/util/PlayerControllerForTests.java @@ -705,7 +705,7 @@ public class PlayerControllerForTests extends PlayerController { @Override public List chooseSpellAbilitiesForEffect(List spells, SpellAbility sa, String title, - int num, Map params) { + int num, Map params, boolean generic) { // TODO Auto-generated method stub return null; } diff --git a/forge-gui-mobile/src/forge/screens/quest/QuestPrefsScreen.java b/forge-gui-mobile/src/forge/screens/quest/QuestPrefsScreen.java index 63e6aabc669..f267bf2fc80 100644 --- a/forge-gui-mobile/src/forge/screens/quest/QuestPrefsScreen.java +++ b/forge-gui-mobile/src/forge/screens/quest/QuestPrefsScreen.java @@ -106,6 +106,10 @@ public class QuestPrefsScreen extends FScreen { scroller.add(new PrefsOption(localizer.getMessage("lblColorBias"), QPref.STARTING_POOL_COLOR_BIAS, PrefsGroup.DIFFICULTY_ALL)); scroller.add(new PrefsOption(localizer.getMessage("lblPenaltyforLoss"), QPref.PENALTY_LOSS, PrefsGroup.DIFFICULTY_ALL)); + //wild opponents addon + scroller.add(new PrefsOption(localizer.getMessage("lblWildOpponentMultiplier"), QPref.WILD_OPPONENTS_MULTIPLIER, PrefsGroup.DIFFICULTY_ALL)); + scroller.add(new PrefsOption(localizer.getMessage("lblWildOpponentNumber"), QPref.WILD_OPPONENTS_NUMBER, PrefsGroup.DIFFICULTY_ALL)); + //Difficulty Adjustments (Easy) scroller.add(new PrefsHeader(localizer.getMessage("lblDifficultyAdjustmentsEasy"), FSkinImage.QUEST_NOTES, PrefsGroup.DIFFICULTY_EASY)); scroller.add(new PrefsOption(localizer.getMessage("lblWinsForBooster"), QPref.WINS_BOOSTER_EASY, PrefsGroup.DIFFICULTY_EASY)); diff --git a/forge-gui/res/skins/darkforge/bg_match.jpg b/forge-gui/res/skins/darkforge/bg_match.jpg index d32f02823b3..5fe8905fbb2 100644 Binary files a/forge-gui/res/skins/darkforge/bg_match.jpg and b/forge-gui/res/skins/darkforge/bg_match.jpg differ diff --git a/forge-gui/res/skins/darkforge/bg_texture.jpg b/forge-gui/res/skins/darkforge/bg_texture.jpg index afab7472c2e..ab54820d1df 100644 Binary files a/forge-gui/res/skins/darkforge/bg_texture.jpg and b/forge-gui/res/skins/darkforge/bg_texture.jpg differ diff --git a/forge-gui/res/skins/darkforge/sprite_icons.png b/forge-gui/res/skins/darkforge/sprite_icons.png index 548a0ece975..3f83d37da80 100644 Binary files a/forge-gui/res/skins/darkforge/sprite_icons.png and b/forge-gui/res/skins/darkforge/sprite_icons.png differ diff --git a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java index 784840224a1..2ae685e6b9b 100644 --- a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java +++ b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java @@ -619,12 +619,14 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont } @Override - public List chooseSpellAbilitiesForEffect(List spells, SpellAbility sa, String title, int num, Map params) { + public List chooseSpellAbilitiesForEffect(List spells, SpellAbility sa, String title, int num, Map params, boolean generic) { List result = Lists.newArrayList(); // create a mapping between a spell's view and the spell itself Map spellViewCache = SpellAbilityView.getMap(spells); - List chosen = getGui().many(title, "", num, Lists.newArrayList(spellViewCache.keySet()), sa.getHostCard().getView()); + //override generic + List chosen = generic ? getGui().getChoices(title, num, num, Lists.newArrayList(spellViewCache.keySet())) + : getGui().many(title, "", num, Lists.newArrayList(spellViewCache.keySet()), sa.getHostCard().getView()); for(SpellAbilityView view : chosen) { if (spellViewCache.containsKey(view)) { diff --git a/forge-gui/src/main/java/forge/util/ImageFetcher.java b/forge-gui/src/main/java/forge/util/ImageFetcher.java index d255e1ba004..08fd46aef34 100644 --- a/forge-gui/src/main/java/forge/util/ImageFetcher.java +++ b/forge-gui/src/main/java/forge/util/ImageFetcher.java @@ -63,6 +63,11 @@ public abstract class ImageFetcher { final String filename = ImageUtil.getImageKey(paperCard, backFace, true); destFile = new File(ForgeConstants.CACHE_CARD_PICS_DIR + "/" + filename + ".jpg"); + //move priority of ftp image here + StringBuilder setDownload = new StringBuilder(ForgeConstants.URL_PIC_DOWNLOAD); + setDownload.append(ImageUtil.getDownloadUrl(paperCard, backFace)); + downloadUrls.add(setDownload.toString()); + int artIndex = 1; final Pattern pattern = Pattern.compile("^.:([^|]*\\|){2}(\\d+).*$"); Matcher matcher = pattern.matcher(imageKey); @@ -89,10 +94,6 @@ public abstract class ImageFetcher { editionMciCode, cardNum, suffix, langCode)); } - StringBuilder setDownload = new StringBuilder(ForgeConstants.URL_PIC_DOWNLOAD); - setDownload.append(ImageUtil.getDownloadUrl(paperCard, backFace)); - downloadUrls.add(setDownload.toString()); - } else if (prefix.equals(ImageKeys.TOKEN_PREFIX)) { if (tokenImages == null) { tokenImages = new HashMap<>();