From 1131003e74a56c7d0848c611589b21e9b393deef Mon Sep 17 00:00:00 2001 From: Agetian Date: Wed, 18 Oct 2023 13:38:29 +0300 Subject: [PATCH] Ensure that cards correspond to the world seed in All Card Variants mode + add puzzle PS_WOE3 (#3919) * - Add puzzle PS_WOE3. * - Ensure that the cards are generated with the world seed in mind. --- .../src/forge/adventure/util/CardUtil.java | 12 ++++++++---- forge-gui/res/puzzle/PS_WOE3.pzl | 17 +++++++++++++++++ 2 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 forge-gui/res/puzzle/PS_WOE3.pzl diff --git a/forge-gui-mobile/src/forge/adventure/util/CardUtil.java b/forge-gui-mobile/src/forge/adventure/util/CardUtil.java index 7d09dc0b74a..9585951f155 100644 --- a/forge-gui-mobile/src/forge/adventure/util/CardUtil.java +++ b/forge-gui-mobile/src/forge/adventure/util/CardUtil.java @@ -745,13 +745,17 @@ public class CardUtil { } public static PaperCard getCardByName(String cardName) { - return Aggregates.random(Iterables.filter(getFullCardPool(Config.instance().getSettingData().useAllCardVariants), - input -> input.getCardName().equals(cardName))); + List validCards = Arrays.asList(Iterables.toArray(Iterables.filter(getFullCardPool(Config.instance().getSettingData().useAllCardVariants), + input -> input.getCardName().equals(cardName)), PaperCard.class)); + + return validCards.get(Current.world().getRandom().nextInt(validCards.size())); } public static PaperCard getCardByNameAndEdition(String cardName, String edition) { - return Aggregates.random(Iterables.filter(getFullCardPool(Config.instance().getSettingData().useAllCardVariants), - input -> input.getCardName().equals(cardName) && input.getEdition().equals(edition))); + List validCards = Arrays.asList(Iterables.toArray(Iterables.filter(getFullCardPool(Config.instance().getSettingData().useAllCardVariants), + input -> input.getCardName().equals(cardName) && input.getEdition().equals(edition)), PaperCard.class)); + + return validCards.get(Current.world().getRandom().nextInt(validCards.size())); } public static Collection getFullCardPool(boolean allCardVariants) { diff --git a/forge-gui/res/puzzle/PS_WOE3.pzl b/forge-gui/res/puzzle/PS_WOE3.pzl new file mode 100644 index 00000000000..87631f802db --- /dev/null +++ b/forge-gui/res/puzzle/PS_WOE3.pzl @@ -0,0 +1,17 @@ +[metadata] +Name:Possibility Storm - Wilds of Eldraine #03 +URL:https://i1.wp.com/www.possibilitystorm.com/wp-content/uploads/2023/10/latest-scaled.jpg?ssl=1 +Goal:Win +Turns:1 +Difficulty:Rare +Description:Win this turn. Graveyards start empty, and you have no information regarding the cards in your library. Remember that your solution must satisfy all possible blocking decisions. Good luck! +[state] +turn=1 +activeplayer=p0 +activephase=MAIN1 +p0life=20 +p0hand=Cheeky House-Mouse;Tranquil Cove;Otawara, Soaring City;Duel for Dominance;Angelic Intervention;Moonsnare Specialist +p0library=Opt;Opt;Opt;Opt;Opt;Opt;Opt;Opt;Opt;Opt;Opt;Opt;Opt;Opt;Opt;Opt;Opt;Opt;Opt;Opt +p0battlefield=Sword of Once and Future;Gallant Pie-Wielder|Counters:P1P1=1;Will, Scion of Peace;Vantress Transmuter;Plains;Plains;Plains;Restless Vinestalk;Restless Vinestalk +p1life=13 +p1battlefield=Rowan, Scion of War;Mishra's Juggernaut