From 3956a5b558175520bf2370d803ca37f90d3f72e6 Mon Sep 17 00:00:00 2001 From: Agetian Date: Thu, 31 Jan 2019 08:45:53 +0300 Subject: [PATCH 1/2] - Check for alternative additional costs in the AI routines (fixes AI not paying those costs for Final Payment and other cards). --- forge-ai/src/main/java/forge/ai/ComputerUtilAbility.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtilAbility.java b/forge-ai/src/main/java/forge/ai/ComputerUtilAbility.java index ba42c31cf9e..301dad5bffb 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtilAbility.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtilAbility.java @@ -95,7 +95,14 @@ public class ComputerUtilAbility { public static List getOriginalAndAltCostAbilities(final List originList, final Player player) { final List newAbilities = Lists.newArrayList(); + + List originListWithAddCosts = Lists.newArrayList(); for (SpellAbility sa : originList) { + // If this spell has alternative additional costs, add them instead of the unmodified SA itself + originListWithAddCosts.addAll(GameActionUtil.getAdditionalCostSpell(sa)); + } + + for (SpellAbility sa : originListWithAddCosts) { sa.setActivatingPlayer(player); // determine which alternative costs are cheaper than the original and prioritize them From b29f390b625d8a8c18fc9b63bfd510de5f13fd15 Mon Sep 17 00:00:00 2001 From: Agetian Date: Thu, 31 Jan 2019 16:39:49 +0300 Subject: [PATCH 2/2] - Fix the AI activating player setup for additional costs. - Fix Thrilling Encore. --- forge-ai/src/main/java/forge/ai/ComputerUtilAbility.java | 3 +-- forge-gui/res/cardsfolder/t/thrilling_encore.txt | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtilAbility.java b/forge-ai/src/main/java/forge/ai/ComputerUtilAbility.java index 301dad5bffb..18687559682 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtilAbility.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtilAbility.java @@ -99,12 +99,11 @@ public class ComputerUtilAbility { List originListWithAddCosts = Lists.newArrayList(); for (SpellAbility sa : originList) { // If this spell has alternative additional costs, add them instead of the unmodified SA itself + sa.setActivatingPlayer(player); originListWithAddCosts.addAll(GameActionUtil.getAdditionalCostSpell(sa)); } for (SpellAbility sa : originListWithAddCosts) { - sa.setActivatingPlayer(player); - // determine which alternative costs are cheaper than the original and prioritize them List saAltCosts = GameActionUtil.getAlternativeCosts(sa, player); List priorityAltSa = Lists.newArrayList(); diff --git a/forge-gui/res/cardsfolder/t/thrilling_encore.txt b/forge-gui/res/cardsfolder/t/thrilling_encore.txt index cb7d570c9ac..80560927db9 100644 --- a/forge-gui/res/cardsfolder/t/thrilling_encore.txt +++ b/forge-gui/res/cardsfolder/t/thrilling_encore.txt @@ -1,5 +1,5 @@ Name:Thrilling Encore ManaCost:4 B Types:Instant -A:SP$ ChangeZone | Cost$ 4 B | Origin$ Graveyard | Destination$ Battlefield | Defined$ ThisTurnEntered_Graveyard_from_Battlefield_Creature.nonToken | SpellDescription$ Put onto the battlefield under your control all creature cards in all graveyards that were put there from the battlefield this turn. +A:SP$ ChangeZone | Cost$ 4 B | Origin$ Graveyard | Destination$ Battlefield | Defined$ ThisTurnEntered_Graveyard_from_Battlefield_Creature.nonToken | GainControl$ True | SpellDescription$ Put onto the battlefield under your control all creature cards in all graveyards that were put there from the battlefield this turn. Oracle:Put onto the battlefield under your control all creature cards in all graveyards that were put there from the battlefield this turn.