From e2d8247600d34b14497bc3fef9d924c8a7dd7870 Mon Sep 17 00:00:00 2001 From: Michael Kamensky Date: Sat, 27 Feb 2021 08:16:24 +0300 Subject: [PATCH 1/4] - Update ANNOUNCEMENTS.txt --- forge-gui/release-files/ANNOUNCEMENTS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/forge-gui/release-files/ANNOUNCEMENTS.txt b/forge-gui/release-files/ANNOUNCEMENTS.txt index 20d2d7a66a9..48a127b8455 100644 --- a/forge-gui/release-files/ANNOUNCEMENTS.txt +++ b/forge-gui/release-files/ANNOUNCEMENTS.txt @@ -7,3 +7,4 @@ There are new Net Deck categories - the Standard, Modern, and Pioneer archives. Draft cubes have been updated to account for the newly supported cards, MTGO Vintage December 2020 cube was added. New Possibility Storm puzzles were added to the Puzzle Mode (IKO/M21/ZNR/KHM), including puzzles that utilize Mutate. Planar Conquest now has a new plane accessible - Eldraine. +Forge now supports promos which are available on Scryfall. From 0c84a957b2272ca5cca8df7f12a8b96e3fdc017b Mon Sep 17 00:00:00 2001 From: Michael Kamensky Date: Sat, 27 Feb 2021 10:05:56 +0300 Subject: [PATCH 2/4] - Improve ChangeZoneAi for exiling any number of stuff from the battlefield --- .../java/forge/ai/ability/ChangeZoneAi.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java b/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java index d15c24b81e1..3d94fb7ff08 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java @@ -1548,6 +1548,34 @@ public class ChangeZoneAi extends SpellAbilityAi { if (player.isOpponentOf(decider)) { c = ComputerUtilCard.getBestAI(fetchList); } else { + // exclude tokens, they won't come back, and enchanted stuff, since auras will go away + if (!sa.hasParam("Mandatory") && origin.contains(ZoneType.Battlefield)) { + fetchList = CardLists.filter(fetchList, Presets.NON_TOKEN); + fetchList = CardLists.filter(fetchList, new Predicate() { + @Override + public boolean apply(final Card card) { + if (card.isCreature() && ComputerUtilCard.isUselessCreature(player, card)) { + return true; + } else if (card.isEquipped()) { + return false; + } else if (card.isEnchanted()) { + for (Card enc : card.getEnchantedBy()) { + if (enc.getOwner().isOpponentOf(player)) { + return true; + } + } + return false; + } else if (card.isAura()) { + return false; + } + return true; + } + }); + if (fetchList.isEmpty()) { + return null; + } + } + c = ComputerUtilCard.getWorstAI(fetchList); if (ComputerUtilAbility.getAbilitySourceName(sa).equals("Temur Sabertooth")) { Card tobounce = canBouncePermanent(player, sa, fetchList); From 22139e2c25c98b90d39d889dcce296ce99f92507 Mon Sep 17 00:00:00 2001 From: Michael Kamensky Date: Sat, 27 Feb 2021 10:09:48 +0300 Subject: [PATCH 3/4] - Further improve the ChangeZoneAi exile any number logic --- forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java b/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java index 3d94fb7ff08..dd0cf705fe4 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java @@ -1554,13 +1554,17 @@ public class ChangeZoneAi extends SpellAbilityAi { fetchList = CardLists.filter(fetchList, new Predicate() { @Override public boolean apply(final Card card) { - if (card.isCreature() && ComputerUtilCard.isUselessCreature(player, card)) { + if (card.getOwner().isOpponentOf(decider)) { + return true; + } + + if (card.isCreature() && ComputerUtilCard.isUselessCreature(decider, card)) { return true; } else if (card.isEquipped()) { return false; } else if (card.isEnchanted()) { for (Card enc : card.getEnchantedBy()) { - if (enc.getOwner().isOpponentOf(player)) { + if (enc.getOwner().isOpponentOf(decider)) { return true; } } From 2081e9d23a9b4e1938e704822038f060aebdf555 Mon Sep 17 00:00:00 2001 From: Michael Kamensky Date: Sat, 27 Feb 2021 10:11:20 +0300 Subject: [PATCH 4/4] - A little tweak to the ChangeZoneAi exile any number logic --- forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java b/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java index dd0cf705fe4..dee3eb57339 100644 --- a/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/ChangeZoneAi.java @@ -1550,13 +1550,15 @@ public class ChangeZoneAi extends SpellAbilityAi { } else { // exclude tokens, they won't come back, and enchanted stuff, since auras will go away if (!sa.hasParam("Mandatory") && origin.contains(ZoneType.Battlefield)) { - fetchList = CardLists.filter(fetchList, Presets.NON_TOKEN); fetchList = CardLists.filter(fetchList, new Predicate() { @Override public boolean apply(final Card card) { if (card.getOwner().isOpponentOf(decider)) { return true; } + if (card.isToken()) { + return false; + } if (card.isCreature() && ComputerUtilCard.isUselessCreature(decider, card)) { return true;